# 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**.