Skip to main content

Konfigurasi Aplikasi

Pada bagian ini, Anda akan belajar mengenai bagaimana menyiapkan konfigurasi yang dibutuhkan Aplikasi Sarpras ini untuk bisa berjalan dan digunakan dengan baik.

Konfigurasi Variabel Aplikasi

Konfigurasi variabel sangat penting agar aplikasi ini dapat berjalan dengan sempurna. Biasanya bisa dikonfigurasi dalam file .env.

Front End

Untuk meng-konfigurasi variabel untuk bagian frontend, anda dapat mengikuti langkah-langkah berikut:

  • Masuk ke folder Front End di proyek
Command Prompt
cd ./sarpras/frontend
  • Salin file .env.example menjadi file .env
Command Prompt
cp .env.example .env
info

Jika anda menggunakan Windows, anda dapat menggunakan command copy dibanding cp.

  • Sekarang buka file .env untuk mulai mengubah konfigurasi aplikasi.

    Command Prompt
    NEXTAUTH_SECRET=
    JWT_SIGNING_PRIVATE_KEY=
    NEXT_PUBLIC_API_HOST=http://localhost:3001
    • NEXTAUTH_SECRET digunakan untuk meng-enkripsi token JWT untuk autentikasi. Anda dapat mengisi teks apapun disini.
    • JWT_SIGNING_PRIVATE_KEY kunci yang digunakan untuk verifikasi. Anda juga dapat mengisi apapun disini.
    • NEXT_PUBLIC_API_HOST diisi dengan URL Back End anda. Akhiran tidak boleh memiliki slash (/).

Back End

Untuk meng-konfigurasi variabel bagian backend, anda dapat mengikuti langkah dibawah:

  • Masuk ke folder Back End
Command Prompt
cd ./sarpras/backend
  • Salin file .env.example menjadi file .env
Command Prompt
cp .env.example .env
info

Jika anda menggunakan Windows, anda dapat menggunakan command copy dibanding cp.

  • Sekarang buka file .env

    Command Prompt
    PORT=

    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=
    DB_USERNAME=root
    DB_PASSWORD=
    • PORT port untuk backend anda. Port biasanya diisi dengan nomor antara 0 sampai 65536.
    • DB_HOST alamat host database anda.
    • DB_PORT port dari database anda.
    • DB_DATABASE nama database yang digunakan untuk aplikasi ini.
    • DB_USERNAME kredensial username yang digunakan untuk autentikasi database.
    • DB_PASSWORD kredensial password yang digunakan untuk autentikasi database.

Instalasi Dependensi Backend dan Frontend

Instalasi dependensi adalah proses mengunduh dan mengatur komponen atau paket yang dibutuhkan oleh suatu perangkat lunak atau proyek, sehingga memungkinkan aplikasi tersebut berfungsi dengan benar.

Instalasi Dependensi Front End

Instal Dependensi Front End dengan perintah berikut:

  • Masuk folder Front End di proyek dengan perintah
./sarpras/frontend
cd ./sarpras/frontend
  • Install dependensi dengan perintah
./sarpras/frontend
pnpm install

Instalasi Dependensi Back End

Instal Dependensi Back End dengan perintah berikut:

  • Masuk folder Back End di proyek dengan perintah
./sarpras/backend
cd ./sarpras/backend
  • Install dependensi dengan perintah
./sarpras/backend
pnpm install

Basis Data

Langkah ini dikhususkan untuk konfigurasi dengan relasi Basis Data yang digunakan MySQL

info

Pastikan MySQL Services sudah berjalan dengan baik sebelum melakukan Migrasi dan Pembenihan

MySQL Services

Migrasi Basis Data

Migrasi basis data adalah proses terkontrol untuk mengelola perubahan struktur dan skema basis data, memungkinkan pengembang untuk membuat, mengubah, atau menghapus tabel, kolom, dan indeks tanpa mengganggu data yang ada.

  • Jalankan Migrasi Basis Data dengan Perintah

Note: Pastikan Command Line berada di folder ./sarpras/backend

./sarpras/backend
pnpm db:migrate

Ini adalah contoh proses logging dari Migrasi Basis Data yang berhasil

./sarpras/backend
> backend@1.0.0 db:migrate D:\project\sarpras\backend
> node ./databases/scripts/migrate.js

Executing (default): SELECT 1+1 AS result
Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'unitkerjas' AND TABLE_SCHEMA = 'management_app'
Connection has been established successfully.
Executing (default): CREATE TABLE IF NOT EXISTS `unitkerjas` (`id` INTEGER auto_increment , `name` VARCHAR(255) NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing (default): SHOW INDEX FROM `unitkerjas`
Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'items' AND TABLE_SCHEMA = 'management_app'
Executing (default): CREATE TABLE IF NOT EXISTS `items` (`id` INTEGER auto_increment , `name` VARCHAR(255) NOT NULL, `code` VARCHAR(255) NOT NULL, `klasifikasi` VARCHAR(255) NOT NULL, `jenis` VARCHAR(255) NOT NULL, `tipe` VARCHAR(255) NOT NULL, `lokasi` VARCHAR(255) NOT NULL, `ukuran` VARCHAR(255), `no_registrasi` VARCHAR(255), `bahan` VARCHAR(255), `no_pabrik` VARCHAR(255), `no_rangka` VARCHAR(255), `no_mesin` VARCHAR(255), `no_polisi` VARCHAR(255), `bpkb` VARCHAR(255), `sumber_dana` VARCHAR(255) NOT NULL, `harga` VARCHAR(255) NOT NULL, `keterangan` VARCHAR(255), `tahun_pembelian` VARCHAR(255) NOT NULL, `kondisi` VARCHAR(255), `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `unitkerjaId` INTEGER, PRIMARY KEY (`id`), FOREIGN KEY (`unitkerjaId`) REFERENCES `unitkerjas` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB;
Executing (default): SHOW INDEX FROM `items`
Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'item_transfereds' AND TABLE_SCHEMA = 'management_app'
Executing (default): CREATE TABLE IF NOT EXISTS `item_transfereds` (`id` INTEGER auto_increment , `from` VARCHAR(255) NOT NULL, `to` VARCHAR(255) NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `itemId` INTEGER, PRIMARY KEY (`id`), FOREIGN KEY (`itemId`) REFERENCES `items` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB;
Executing (default): SHOW INDEX FROM `item_transfereds`
Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'item_deleteds' AND TABLE_SCHEMA = 'management_app'
Executing (default): CREATE TABLE IF NOT EXISTS `item_deleteds` (`id` INTEGER auto_increment , `name` VARCHAR(255) NOT NULL, `code` VARCHAR(255) NOT NULL, `klasifikasi` VARCHAR(255) NOT NULL, `jenis` VARCHAR(255) NOT NULL, `tipe` VARCHAR(255) NOT NULL, `lokasi` VARCHAR(255) NOT NULL, `ukuran` VARCHAR(255), `no_registrasi` VARCHAR(255), `bahan` VARCHAR(255), `no_pabrik` VARCHAR(255), `no_rangka` VARCHAR(255), `no_mesin` VARCHAR(255), `no_polisi` VARCHAR(255), `bpkb` VARCHAR(255), `sumber_dana` VARCHAR(255) NOT NULL, `harga` VARCHAR(255) NOT NULL, `keterangan` VARCHAR(255), `tahun_pembelian` VARCHAR(255) NOT NULL, `kondisi` VARCHAR(255), `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing (default): SHOW INDEX FROM `item_deleteds`
Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'klasifikasis' AND TABLE_SCHEMA = 'management_app'
Executing (default): CREATE TABLE IF NOT EXISTS `klasifikasis` (`id` INTEGER auto_increment , `name` VARCHAR(255) NOT NULL, `code` INTEGER NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing (default): SHOW INDEX FROM `klasifikasis`
Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'jenis' AND TABLE_SCHEMA = 'management_app'
Executing (default): CREATE TABLE IF NOT EXISTS `jenis` (`name` VARCHAR(255) NOT NULL , `code` INTEGER NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `klasifikasi_code` INTEGER, `klasifikasiId` INTEGER, PRIMARY KEY (`name`), FOREIGN KEY (`klasifikasi_code`) REFERENCES `klasifikasis` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (`klasifikasiId`) REFERENCES `klasifikasis` (`id`) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=InnoDB;
Executing (default): SHOW INDEX FROM `jenis`
Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'tipes' AND TABLE_SCHEMA = 'management_app'
Executing (default): CREATE TABLE IF NOT EXISTS `tipes` (`id` INTEGER auto_increment , `name` VARCHAR(255) NOT NULL, `code` INTEGER NOT NULL, `jenis_name` VARCHAR(255), `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `jeniName` VARCHAR(255), PRIMARY KEY (`id`), FOREIGN KEY (`jenis_name`) REFERENCES `jenis` (`name`) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (`jeniName`) REFERENCES `jenis` (`name`) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=InnoDB;
Executing (default): SHOW INDEX FROM `tipes`
Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'lokasis' AND TABLE_SCHEMA = 'management_app'
Executing (default): CREATE TABLE IF NOT EXISTS `lokasis` (`id` INTEGER auto_increment , `name` VARCHAR(255) NOT NULL, `code` INTEGER NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing (default): SHOW INDEX FROM `lokasis`
Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'users' AND TABLE_SCHEMA = 'management_app'
Executing (default): CREATE TABLE IF NOT EXISTS `users` (`id` INTEGER auto_increment , `username` VARCHAR(255) NOT NULL, `password` VARCHAR(255) NOT NULL, `role` VARCHAR(255) NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing (default): SHOW INDEX FROM `users`
Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'tokens' AND TABLE_SCHEMA = 'management_app'
Executing (default): CREATE TABLE IF NOT EXISTS `tokens` (`id` INTEGER auto_increment , `token` VARCHAR(255) NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `userId` INTEGER, PRIMARY KEY (`id`), FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB;
Executing (default): SHOW INDEX FROM `tokens`
all migration done!

Pembenihan Basis Data

Pembenihan basis data adalah proses mengisi basis data dengan data awal atau contoh yang digunakan untuk pengujian atau pengembangan, sehingga dapat memberikan situasi yang realistis dalam lingkungan pengembangan sebelum data aktual digunakan.

  • Jalankan Pembenihan Basis Data dengan Perintah

Note: Pastikan Command Line berada di folder ./sarpras/backed

./sarpras/backend
pnpm db:seed

Ini adalah contoh proses logging dari Pembenihan Basis Data yang berhasil

./sarpras/backend
> backend@1.0.0 db:seed D:\project\sarpras\backend
> sequelize-cli db:seed:all


Sequelize CLI [Node: 18.13.0, CLI: 6.6.0, ORM: 6.31.1]

Loaded configuration file "databases\config.js".
Using environment "development".
== 20230525085356-klasifikasi: migrating =======
== 20230525085356-klasifikasi: migrated (0.009s)

== 20230525085913-jenis: migrating =======
== 20230525085913-jenis: migrated (0.007s)

== 20230525091502-tipe: migrating =======
== 20230525091502-tipe: migrated (0.014s)

== 20230527070657-lokasi: migrating =======
== 20230527070657-lokasi: migrated (0.006s)

== 20230531083311-unitkerja: migrating =======
== 20230531083311-unitkerja: migrated (0.005s)

== 20230608050222-superadmin: migrating =======
Executing (default): SELECT 1+1 AS result
Executing (default): INSERT INTO `users` (`id`,`username`,`password`,`role`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?,?,?,?);
Connection has been established successfully.
Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'unitkerjas' AND TABLE_SCHEMA = 'management_app'
Executing (default): SHOW INDEX FROM `unitkerjas`
Executing (default): INSERT INTO `tokens` (`id`,`token`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?,?);
Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'items' AND TABLE_SCHEMA = 'management_app'
Executing (default): SHOW INDEX FROM `items`
Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'item_transfereds' AND TABLE_SCHEMA = 'management_app'
Executing (default): SELECT `id`, `token`, `createdAt`, `updatedAt`, `userId` FROM `tokens` AS `token` WHERE `token`.`userId` = 1 LIMIT 1;
Executing (default): SHOW INDEX FROM `item_transfereds`
Executing (default): UPDATE `tokens` SET `userId`=?,`updatedAt`=? WHERE `id` = ?
Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'item_deleteds' AND TABLE_SCHEMA = 'management_app'
Executing (default): SHOW INDEX FROM `item_deleteds`
== 20230608050222-superadmin: migrated (0.388s)

Setelah proses Migrasi dan Pembenihan Basis Data selesai, Anda dapat melanjutkan proses Pemasangan Aplikasi.