72 lines
3.2 KiB
Markdown
72 lines
3.2 KiB
Markdown
# 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 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).
|
|
- **Yarn / npm**: (Disarankan menggunakan Yarn).
|
|
- **PostgreSQL**: Database server berjalan (versi 13 atau lebih baru direkomendasikan).
|
|
|
|
## Instalasi
|
|
1. Lakukan _clone_ repositori ini atau pastikan Anda berada di root folder aplikasi.
|
|
2. Buka terminal/command prompt.
|
|
3. Jalankan perintah instalasi dependensi:
|
|
```bash
|
|
yarn install
|
|
```
|
|
*(atau `npm install` jika tidak menggunakan yarn).*
|
|
|
|
## Pengaturan Environment
|
|
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="127.0.0.1"
|
|
DATABASE_PORT="5432"
|
|
DATABASE_USER="your_db_user"
|
|
DATABASE_PASSWORD="your_secure_password"
|
|
DATABASE_NAME="your_db_name"
|
|
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 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 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 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
|
|
yarn dev
|
|
```
|
|
|
|
Aplikasi secara bawaan dapat diakses melalui browser dengan URL:
|
|
👉 **[http://localhost:3000](http://localhost:3000)**
|
|
|
|
---
|
|
|
|
### Alur Singkat Aplikasi:
|
|
- **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**.
|