first init

This commit is contained in:
2026-04-15 14:52:46 +07:00
parent b255c4c358
commit de0d1c5413
+233 -1
View File
@@ -1 +1,233 @@
@AGENTS.md # 🚀 SeTrip Project Architecture Guide
## 📌 Overview
Dokumen ini menjelaskan standar struktur project untuk aplikasi **SeTrip** menggunakan Next.js (App Router).
Tujuan:
- Menjaga code tetap rapi & scalable
- Menghindari spaghetti code
- Memudahkan AI / developer kontribusi
---
# 🧠 Core Principles
1. **Feature-based structure (WAJIB)**
2. **Separation client vs server logic**
3. **Colocation (file dekat dengan fitur)**
4. **No over-engineering (keep it simple)**
---
# 🏗️ 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**