Files
2026-08-27 19:45:15 +07:00

319 lines
9.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# πŸ—ΊοΈ AGENTS.md β€” Ready to Plan Tour (RPT)
> **Dokumen ini adalah panduan utama untuk semua AI agent yang bekerja pada proyek ini.**
> Jika model sebelumnya kehabisan token, baca dokumen ini terlebih dahulu sebelum melanjutkan pekerjaan.
---
## πŸ“Œ Konteks Proyek
**Nama Aplikasi:** Ready to Plan Tour (RPT)
**Singkatan:** RPT
**Tipe:** Static Web Application (tidak ada backend, tidak ada login/logout)
**Framework:** React.js (dengan Vite sebagai bundler)
**Target:** Aplikasi perencanaan perjalanan wisata yang interaktif, kreatif, dan mandiri
---
## 🎯 Tujuan Aplikasi
Membantu pengguna merencanakan perjalanan wisata secara lengkap dengan fitur:
1. **Trip Selection** β€” Memilih destinasi wisata dan tipe perjalanan
2. **Daily Schedule Builder** β€” Membuat jadwal harian aktivitas perjalanan (per hari)
3. **Packing List Manager** β€” Mendaftar barang-barang yang akan dibawa
4. **Budget Calculator** β€” Menghitung dan memantau anggaran perjalanan
---
## πŸ—οΈ Arsitektur Aplikasi
```
tour-destination/
β”œβ”€β”€ AGENTS.md ← Dokumen ini
β”œβ”€β”€ .agents/
β”‚ β”œβ”€β”€ skills/
β”‚ β”‚ β”œβ”€β”€ react-component/SKILL.md
β”‚ β”‚ β”œβ”€β”€ state-management/SKILL.md
β”‚ β”‚ β”œβ”€β”€ ui-design/SKILL.md
β”‚ β”‚ └── feature-guide/SKILL.md
β”‚ └── rules/
β”‚ └── coding-standards.md
β”œβ”€β”€ public/
β”‚ └── assets/
β”œβ”€β”€ src/
β”‚ β”œβ”€β”€ main.jsx
β”‚ β”œβ”€β”€ App.jsx
β”‚ β”œβ”€β”€ index.css
β”‚ β”œβ”€β”€ components/
β”‚ β”‚ β”œβ”€β”€ layout/
β”‚ β”‚ β”œβ”€β”€ ui/
β”‚ β”‚ β”œβ”€β”€ trip/
β”‚ β”‚ β”œβ”€β”€ schedule/
β”‚ β”‚ β”œβ”€β”€ packing/
β”‚ β”‚ └── budget/
β”‚ β”œβ”€β”€ pages/
β”‚ β”‚ β”œβ”€β”€ Home.jsx
β”‚ β”‚ β”œβ”€β”€ TripDetail.jsx
β”‚ β”‚ β”œβ”€β”€ Schedule.jsx
β”‚ β”‚ β”œβ”€β”€ PackingList.jsx
β”‚ β”‚ └── Budget.jsx
β”‚ β”œβ”€β”€ hooks/
β”‚ β”œβ”€β”€ store/
β”‚ β”‚ └── tourStore.js
β”‚ β”œβ”€β”€ data/
β”‚ β”‚ β”œβ”€β”€ destinations.js
β”‚ β”‚ β”œβ”€β”€ activities.js
β”‚ β”‚ └── packingTemplates.js
β”‚ └── utils/
β”œβ”€β”€ package.json
└── vite.config.js
```
---
## 🎨 Design System
### Palet Warna (Dark Mode Default)
```css
--color-primary: hsl(220, 90%, 56%);
--color-primary-dark: hsl(220, 90%, 42%);
--color-accent: hsl(38, 95%, 55%);
--color-bg-base: hsl(222, 28%, 8%);
--color-bg-surface: hsl(222, 22%, 13%);
--color-bg-elevated: hsl(222, 18%, 18%);
--color-text-primary: hsl(210, 40%, 96%);
--color-text-secondary: hsl(210, 20%, 65%);
--color-success: hsl(142, 70%, 45%);
--color-warning: hsl(38, 95%, 55%);
--color-danger: hsl(0, 75%, 55%);
```
### Tipografi
- Font Utama: Inter / Outfit (Google Fonts)
- Font Display: Playfair Display (untuk hero heading)
### Efek Visual
- Glassmorphism pada card & modal
- Gradient pada hero section
- Micro-animations dengan Framer Motion
- Smooth transitions: `cubic-bezier(0.4, 0, 0.2, 1)`
---
## πŸ”§ Tech Stack
| Package | Versi | Kegunaan |
|---|---|---|
| react | ^18.x | Core framework |
| react-dom | ^18.x | DOM rendering |
| react-router-dom | ^6.x | Client-side routing |
| zustand | ^4.x | Global state management |
| framer-motion | ^11.x | Animasi |
| lucide-react | latest | Icon library |
| recharts | ^2.x | Chart budget |
| @dnd-kit/core | ^6.x | Drag & drop jadwal |
| @dnd-kit/sortable | ^7.x | Sortable list |
| date-fns | ^3.x | Date utilities |
**Bundler:** Vite ^5.x dengan plugin @vitejs/plugin-react
---
## πŸ“‹ Fitur Detail
### 1. πŸ—ΊοΈ Trip Selection (Home Page)
- Grid card destinasi wisata populer
- Filter: kategori, durasi, budget range
- Card: foto, nama, estimasi budget, rating, durasi populer
- Tombol "Buat Trip Sendiri" untuk trip kustom
- Search bar dengan autocomplete
- State: `trip.id`, `trip.name`, `trip.destination`, `trip.startDate`, `trip.endDate`, `trip.totalDays`
### 2. πŸ“… Daily Schedule Builder (Schedule Page)
- Timeline visual per hari
- Drag & drop aktivitas menggunakan @dnd-kit
- Setiap aktivitas: waktu, nama, lokasi, durasi, kategori, catatan
- Template aktivitas cepat
- Modal form tambah aktivitas
- State: `schedule[dayIndex][activities[]]`
### 3. πŸŽ’ Packing List Manager (PackingList Page)
- Kategori: Pakaian, Dokumen, Elektronik, Obat-obatan, Toiletries, Lainnya
- Template berdasarkan tipe trip
- Checkbox checked/unchecked
- Progress bar persentase sudah dipak
- Quantity counter per item
- State: `packingList[category][items[{name, qty, checked}]]`
### 4. πŸ’° Budget Calculator (Budget Page)
- Overview: Total Budget vs Pengeluaran vs Sisa
- Kategori: Transportasi, Akomodasi, Makan, Aktivitas, Oleh-oleh, Lainnya
- Pie chart per kategori, Bar chart per hari
- Warning jika over budget
- Currency: IDR default
- State: `budget.total`, `budget.expenses[]`
---
## πŸ”„ Zustand Store Schema
```javascript
// src/store/tourStore.js β€” shape lengkap:
{
trip: {
id: null,
name: '',
destination: '',
startDate: null,
endDate: null,
totalDays: 0,
coverImage: '',
type: 'custom', // 'preset' | 'custom'
},
schedule: [], // Array per hari, tiap hari punya activities[]
packingList: {
Pakaian: [],
Dokumen: [],
Elektronik: [],
'Obat-obatan': [],
Toiletries: [],
Lainnya: [],
},
budget: {
total: 0,
currency: 'IDR',
expenses: [],
},
// Semua state di-persist ke localStorage via zustand/middleware/persist
// key: 'tour-planner-storage'
}
```
---
## πŸš€ Setup Commands
```bash
# Inisialisasi
npm create vite@latest . -- --template react
npm install
# Install semua dependencies
npm install react-router-dom zustand framer-motion lucide-react recharts @dnd-kit/core @dnd-kit/sortable date-fns
# Dev server
npm run dev
```
---
## πŸ“ Coding Standards
Aturan lengkap di `.agents/rules/coding-standards.md`
### Ringkasan Wajib:
- βœ… Functional component + hooks (bukan class component)
- βœ… CSS Variables dari design system (bukan Tailwind)
- βœ… Zustand untuk state yang di-share
- βœ… Framer Motion untuk semua animasi
- βœ… Lucide React untuk semua icon
- βœ… Data dummy di `src/data/`, bukan di dalam komponen
- βœ… Mobile-first responsive (640 / 768 / 1024 / 1280px)
- ❌ Jangan hardcode warna langsung di JSX
- ❌ Jangan pakai emoji sebagai icon UI
- ❌ Jangan pakai TailwindCSS
---
## πŸš€ Phase Workflow (WAJIB DIBACA)
Setiap fitur dikerjakan dalam fase yang berurutan dan tidak boleh dilompati.
Aturan lengkap fase ada di `.agents/rules/phase-workflow.md`
| Phase | Scope | Prasyarat |
|-------|-------|-----------|
| **Phase 0** | Project setup, dependencies, store, routing | β€” |
| **Phase 1** | Layout & UI components dasar | Phase 0 selesai |
| **Phase 2** | Home Page β€” Trip Selection | Phase 1 selesai |
| **Phase 3** | Schedule Builder Page | Phase 2 selesai |
| **Phase 4** | Packing List Page | Phase 3 selesai |
| **Phase 5** | Budget Calculator Page | Phase 4 selesai |
| **Phase 6** | Polish, responsive, animasi final | Phase 2–5 selesai |
> ⚠️ Jika kamu agent baru: cek `task.md` untuk tahu fase mana yang sedang berjalan,
> lalu baca `phase-workflow.md` untuk detail checklist fase tersebut.
---
## πŸ” Handoff Context (Untuk AI Agent Baru)
> **BACA BAGIAN INI JIKA KAMU MELANJUTKAN PEKERJAAN YANG BELUM SELESAI**
### Langkah 1 β€” Orientasi Cepat
```bash
# Lihat file yang sudah ada
ls src/
ls src/pages/
ls src/components/
cat src/store/tourStore.js
```
### Langkah 2 β€” Cek Status Task
- Baca `task.md` di direktori artifacts agent
- Baca `walkthrough.md` untuk ringkasan perubahan
### Langkah 3 β€” Validasi Sebelum Lanjut
Jawab dulu pertanyaan ini:
1. Apakah `src/index.css` sudah punya CSS variables design system?
2. Apakah `src/store/tourStore.js` sudah lengkap?
3. Apakah React Router sudah dikonfigurasi di `src/App.jsx`?
4. Page apa yang sudah selesai? (Home / Schedule / PackingList / Budget)
### Prinsip TIDAK BOLEH Dilanggar:
- ❌ Tidak ada fitur login/logout
- ❌ Tidak ada API call ke backend
- ❌ Tidak ada TailwindCSS
- ❌ Tidak mengubah design token tanpa alasan jelas
- βœ… Dark mode sebagai default
- βœ… Animasi dengan Framer Motion
- βœ… State persist ke localStorage
---
## πŸ“ Urutan Pengerjaan
```
Phase 1: Setup & Foundation
[ ] Init Vite + React
[ ] Install dependencies
[ ] Design system di index.css (CSS variables, typography, utilities)
[ ] Zustand store (tourStore.js)
[ ] React Router setup (App.jsx)
Phase 2: Data Layer
[ ] src/data/destinations.js (min 10 destinasi)
[ ] src/data/activities.js (template aktivitas)
[ ] src/data/packingTemplates.js (template per tipe trip)
Phase 3: Layout & UI Components
[ ] Navbar.jsx (dengan navigasi antar page)
[ ] Button.jsx, Card.jsx, Modal.jsx, Badge.jsx, ProgressBar.jsx
Phase 4: Pages
[ ] Home.jsx (trip selection + search + filter)
[ ] Schedule.jsx (timeline + drag&drop)
[ ] PackingList.jsx (checklist + progress)
[ ] Budget.jsx (calculator + chart)
Phase 5: Polish
[ ] Framer Motion animations
[ ] Responsive layout
[ ] localStorage persistence test
```
---
*Versi: 1.0 | Dibuat: 2026-08-27*
*Update dokumen ini jika ada perubahan arsitektur besar.*