From 88353d5d06cab28d7dc57cb4ecf8ba1d933db646 Mon Sep 17 00:00:00 2001 From: arifal Date: Fri, 22 May 2026 15:38:08 +0700 Subject: [PATCH] install --- README.md | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 75b5fda..55173b8 100644 --- a/README.md +++ b/README.md @@ -93,12 +93,12 @@ Alur ini menggambarkan satu peserta dari pertama kali mendaftar sampai pembayara ### 5. Ringkasan peran data -| Konsep | Penyimpanan | -|--------|-------------| -| Trip | `Trip`: judul, gunung, lokasi, tanggal, kuota, harga, status trip (`OPEN` / `FULL` / …), meeting point, itinerary, termasuk/tidak termasuk, relasi ke organizer | -| Peserta | `TripParticipant` unik per `(tripId, userId)`: status **`PENDING`** / **`CONFIRMED`** / **`CANCELLED`**, serta **`markedPaidAt`** & **`paymentConfirmedAt`** untuk alur bayar manual | -| Organizer (kepercayaan) | `OrganizerVerification` (1-1 ke `User`) berisi KTP, foto liveness (memegang kertas "SETRIP"), rekening, dan status (`PENDING` / `APPROVED` / `REJECTED`); badge **Verified Organizer** muncul ketika `status === "APPROVED"` (helper `lib/trust.ts → isVerifiedOrganizer`). Agregat rating & jumlah trip dihitung dari ulasan & trip. | -| Persetujuan T&C / Privasi | `User.acceptedTermsAndPrivacy` + `User.acceptedAt`, dicentang saat registrasi (link ke `/terms` & `/privacy`). | +| Konsep | Penyimpanan | +| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Trip | `Trip`: judul, gunung, lokasi, tanggal, kuota, harga, status trip (`OPEN` / `FULL` / …), meeting point, itinerary, termasuk/tidak termasuk, relasi ke organizer | +| Peserta | `TripParticipant` unik per `(tripId, userId)`: status **`PENDING`** / **`CONFIRMED`** / **`CANCELLED`**, serta **`markedPaidAt`** & **`paymentConfirmedAt`** untuk alur bayar manual | +| Organizer (kepercayaan) | `OrganizerVerification` (1-1 ke `User`) berisi KTP, foto liveness (memegang kertas "SETRIP"), rekening, dan status (`PENDING` / `APPROVED` / `REJECTED`); badge **Verified Organizer** muncul ketika `status === "APPROVED"` (helper `lib/trust.ts → isVerifiedOrganizer`). Agregat rating & jumlah trip dihitung dari ulasan & trip. | +| Persetujuan T&C / Privasi | `User.acceptedTermsAndPrivacy` + `User.acceptedAt`, dicentang saat registrasi (link ke `/terms` & `/privacy`). | ## Menjalankan secara lokal @@ -128,3 +128,28 @@ Buka [http://localhost:3000](http://localhost:3000). - [Next.js Documentation](https://nextjs.org/docs) - [Prisma Documentation](https://www.prisma.io/docs) + +# 1. Install SEMUA dep (termasuk dev) — deterministik dari lockfile. + +# --include=dev memaksa dev terpasang walau NODE_ENV=production ter-export. + +npm ci --include=dev + +# 2. Prisma: generate client + apply migrasi + +npx prisma generate +npx prisma migrate deploy + +# 3. Build (butuh devDependencies) + +npm run build + +# 4. (Opsional) ramping-kan node_modules — buang dev SETELAH build selesai + +npm prune --omit=dev + +# 5. Jalankan + +pm2 start ecosystem.config.js --env production + +# atau restart: pm2 restart setrip --update-env