feat: implement app directory routing, authentication flow, and dynamic reporting module
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
# TitipIn - Sistem Titip Pesanan
|
||||
|
||||
Aplikasi web modern berbasis Next.js untuk mempermudah sistem "jasa titip" (jastip) atau pesanan bersama. Aplikasi ini berjalan dengan arsitektur serverless (Server Actions) dan menggunakan sistem autentikasi stateless (berbasis UUID di LocalStorage).
|
||||
Aplikasi web modern berbasis Next.js untuk mempermudah sistem "jasa titip" (jastip) atau pesanan bersama. Aplikasi ini berjalan dengan arsitektur serverless (Server Actions) dan menggunakan sistem autentikasi **stateless berbasis JWT yang disimpan secara aman di HTTP-only Cookies**. Dilengkapi dengan Role-Based Access Control (RBAC) untuk manajemen akses pengguna dan Superadmin.
|
||||
|
||||
## Kebutuhan Sistem (Prerequisites)
|
||||
Sebelum menjalankan aplikasi ini, pastikan Anda telah menginstal perangkat lunak berikut:
|
||||
- **Node.js**: Versi 18.x atau lebih baru (direkomendasikan versi LTS terbaru).
|
||||
- **npm**: (biasanya sudah termasuk saat instalasi Node.js).
|
||||
- **Yarn / npm**: (Disarankan menggunakan Yarn).
|
||||
- **PostgreSQL**: Database server berjalan (versi 13 atau lebih baru direkomendasikan).
|
||||
|
||||
## Instalasi
|
||||
@@ -13,12 +13,12 @@ Sebelum menjalankan aplikasi ini, pastikan Anda telah menginstal perangkat lunak
|
||||
2. Buka terminal/command prompt.
|
||||
3. Jalankan perintah instalasi dependensi:
|
||||
```bash
|
||||
npm install
|
||||
yarn install
|
||||
```
|
||||
*Catatan: Pastikan dependensi Prisma terinstal pada versi stabil (contoh: `@prisma/client@5`).*
|
||||
*(atau `npm install` jika tidak menggunakan yarn).*
|
||||
|
||||
## Pengaturan Environment
|
||||
Buat sebuah file bernama `.env` di root folder proyek Anda. Konfigurasi kredensial database PostgreSQL Anda seperti format berikut:
|
||||
Buat sebuah file bernama `.env` di root folder proyek Anda. Konfigurasi kredensial database PostgreSQL Anda beserta kunci rahasia JWT seperti format berikut:
|
||||
|
||||
```env
|
||||
DATABASE_HOST="172.10.10.2"
|
||||
@@ -27,26 +27,33 @@ DATABASE_USER="postgres"
|
||||
DATABASE_PASSWORD="eigen3m!"
|
||||
DATABASE_NAME="testing"
|
||||
DATABASE_URL="postgresql://${DATABASE_USER}:${DATABASE_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME}?schema=public"
|
||||
|
||||
# Kunci rahasia untuk enkripsi sesi JWT
|
||||
JWT_SECRET="isi-dengan-kunci-rahasia-acak-disini"
|
||||
```
|
||||
*(Sesuaikan IP, port, dan kredensial lain jika server database Anda berbeda).*
|
||||
*(Sesuaikan IP, port, dan kredensial database jika server database Anda berbeda).*
|
||||
|
||||
## Eksekusi Migrasi Database
|
||||
Aplikasi menggunakan **Prisma ORM** untuk berinteraksi dengan database. Jalankan perintah terminal berikut secara berurutan untuk menyinkronkan skema dan mengaktifkan client:
|
||||
Aplikasi menggunakan **Prisma ORM** untuk berinteraksi dengan database. Jalankan perintah terminal berikut secara berurutan untuk menyinkronkan skema dan mengisi (seed) data awal:
|
||||
|
||||
1. **Generate Prisma Client**: Membangun tipe TypeScript dan library client.
|
||||
```bash
|
||||
npx prisma generate
|
||||
```
|
||||
2. **Push Skema ke Database**: Membuat struktur tabel-tabel di database (User, Order, Submission, dll.) sesuai dengan `prisma/schema.prisma`.
|
||||
2. **Push Skema ke Database**: Membuat struktur tabel-tabel di database sesuai dengan `prisma/schema.prisma`.
|
||||
```bash
|
||||
npx prisma db push
|
||||
```
|
||||
3. **Seed Database**: Mengisi database dengan akun Superadmin bawaan.
|
||||
```bash
|
||||
npx prisma db seed
|
||||
```
|
||||
|
||||
## Menjalankan Aplikasi
|
||||
Setelah database siap, Anda bisa menjalankan aplikasi di tahap pengembangan lokal (development mode):
|
||||
|
||||
```bash
|
||||
npm run dev
|
||||
yarn dev
|
||||
```
|
||||
|
||||
Aplikasi secara bawaan dapat diakses melalui browser dengan URL:
|
||||
@@ -55,9 +62,10 @@ Aplikasi secara bawaan dapat diakses melalui browser dengan URL:
|
||||
---
|
||||
|
||||
### Alur Singkat Aplikasi:
|
||||
- Akses pertama kali, sistem akan _generate_ UUID unik untuk *device* Anda dan menyimpannya di `localStorage`.
|
||||
- Aplikasi akan menampilkan Modal Wajib untuk mendaftarkan **Nama** dan opsional **Foto Profil**.
|
||||
- **Autentikasi:** Akses aplikasi harus melalui halaman login. Jika belum memiliki akun, pengguna dapat mendaftar (register) yang otomatis akan memberikan *role* sebagai `user`.
|
||||
- **Akun Superadmin:** Secara default, sistem telah menyiapkan akun *Superadmin* (Username: `superadmin`, Password: `titipin123!`). Superadmin memiliki akses eksklusif ke halaman **User Management** untuk mengelola, menonaktifkan, atau menghapus pengguna lain.
|
||||
- Anda dapat mulai:
|
||||
- Membuat Jasa Titip di menu **Jasa Order Saya**.
|
||||
- Mengikuti Jasa Titip teman di menu **Open Order**.
|
||||
- Mengelola pembayaran & melihat rincian di halaman detail.
|
||||
- Memantau laporan omzet & pengeluaran di menu **Laporan**.
|
||||
|
||||
Reference in New Issue
Block a user