auth, trips and join trips

This commit is contained in:
2026-04-16 14:51:54 +07:00
parent de0d1c5413
commit 237caad488
49 changed files with 11343 additions and 334 deletions
+18 -225
View File
@@ -1,233 +1,26 @@
# 🚀 SeTrip Project Architecture Guide
# 🤖 Claude / AI Instructions
## 📌 Overview
## General Rules
Dokumen ini menjelaskan standar struktur project untuk aplikasi **SeTrip** menggunakan Next.js (App Router).
- Gunakan TypeScript
- Ikuti struktur feature-based
- Jangan letakkan business logic di `/app`
- Semua database access harus melalui `/server`
Tujuan:
## Code Rules
- Menjaga code tetap rapi & scalable
- Menghindari spaghetti code
- Memudahkan AI / developer kontribusi
- Gunakan Prisma untuk database
- Gunakan Zod untuk validation
- Gunakan service layer untuk business logic
---
## Forbidden
# 🧠 Core Principles
- Jangan query database langsung di component
- Jangan buat arsitektur over-engineered
- Jangan menambahkan dependency tanpa kebutuhan jelas
1. **Feature-based structure (WAJIB)**
2. **Separation client vs server logic**
3. **Colocation (file dekat dengan fitur)**
4. **No over-engineering (keep it simple)**
## Output Style
---
# 🏗️ Project Structure
```bash
src/
├── app/ # Next.js App Router (UI & routing)
│ ├── (public)/ # halaman publik
│ ├── (auth)/ # login/register
│ ├── trips/ # halaman trip
│ ├── create-trip/
│ └── profile/
├── features/ # 🔥 Business logic per domain
│ ├── auth/
│ ├── user/
│ ├── trip/
│ ├── booking/
│ └── review/
├── server/ # 🔒 Backend-only logic
│ ├── db/
│ ├── services/
│ └── repositories/
├── components/ # reusable UI components
│ ├── ui/
│ └── shared/
├── lib/ # helpers & utilities
│ ├── prisma.ts
│ ├── auth.ts
│ └── utils.ts
├── hooks/ # custom react hooks
├── types/ # global types
└── config/ # config (env, constants)
```
---
# 📂 Folder Rules
## 1. `/app` (Routing Layer)
Hanya untuk:
- page.tsx
- layout.tsx
- UI rendering
- data fetching ringan
❌ DILARANG:
- business logic
- query database langsung
---
## 2. `/features` (Domain Layer) 🔥
Setiap fitur punya folder sendiri:
```bash
features/trip/
├── components/
├── services/
├── hooks/
├── api/
└── types.ts
```
Digunakan untuk:
- business logic
- validation
- orchestration
---
## 3. `/server` (Backend Layer)
```bash
server/
├── db/
│ └── prisma.ts
├── services/
│ └── trip.service.ts
└── repositories/
└── trip.repo.ts
```
Digunakan untuk:
- database access
- heavy logic
- internal backend
---
## 4. `/components`
```bash
components/
├── ui/ # button, input, modal
└── shared/ # navbar, header
```
---
## 5. `/lib`
Utility global:
- prisma instance
- auth helper
- formatter
---
# 🔄 Data Flow Standard
```text
UI (app/)
Feature (features/)
Service (server/services)
Repository (server/repositories)
Database
```
---
# 🧩 Example Flow (Create Trip)
1. User klik create trip (UI)
2. Call feature service
3. Feature validate data
4. Call server service
5. Service call repository
6. Repository insert ke database
---
# ⚠️ Anti-Pattern (DILARANG)
❌ Jangan:
- query Prisma langsung di page.tsx
- campur UI + logic
- buat folder controller/service ala backend di Next.js
- over abstraction di awal
---
# ✅ Best Practice
✔ Gunakan:
- Zod untuk validation
- Prisma untuk ORM
- Server Actions / API route secukupnya
✔ Naming:
- `trip.service.ts`
- `trip.repo.ts`
- `useTrip.ts`
---
# 🚀 Development Phases
## Phase 1 (MVP)
- Auth
- Create Trip
- Join Trip
## Phase 2
- Review
- Limit & validation
## Phase 3
- Payment
- Organizer role
---
# 🧠 Final Principle
> Build fast → validate → refactor later
Jangan terlalu fokus ke arsitektur sempurna di awal.
---
# 📌 Notes for AI / Contributors
- Ikuti struktur ini tanpa pengecualian
- Jangan membuat folder baru tanpa alasan jelas
- Semua fitur baru harus masuk ke `/features`
- Semua akses DB harus lewat `/server`
---
**End of Document**
- Clean code
- Modular
- Readable