Files

78 lines
4.2 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.

# CODEX Context
Ringkasan konteks kerja untuk meneruskan pengembangan aplikasi chatbot pengusaha kos.
## Ringkasan Proyek
- Tujuan: Aplikasi chatbot untuk pengusaha kos-kosan.
- Fokus utama: Antarmuka chat sebagai halaman utama, login admin, dan dashboard analitik performa chatbot.
## Stack & Tools
- Frontend: React 18 + TypeScript (Vite).
- Styling: Tailwind CSS + shadcn/ui (preset CSS vars + utilities) + tailwindcss-animate.
- Ikon: lucide-react.
- Routing: react-router-dom.
## Struktur Halaman & Routing
- `/` → Chat (UI percakapan + input pesan, respons asisten masih disimulasikan).
- `/admin/login` → Halaman login admin (stub login di sisi klien).
- `/admin/dashboard` → Dashboard analitik sederhana (KPI dummy + daftar percakapan terbaru).
Router didefinisikan di `src/main.tsx` dengan `createBrowserRouter`, layout root di `src/App.tsx` dan `Outlet` untuk konten halaman.
## UI Kit & Styling (shadcn/ui)
- Tailwind dikonfigurasi untuk shadcn: `darkMode: ['class']`, warna via CSS variables, radius, dan animasi accordion.
- File penting:
- `tailwind.config.js` (termasuk `tailwindcss-animate`).
- `src/index.css` (layer base + CSS variables tema light/dark shadcn).
- `components.json` (config shadcn, alias `src/components` dan `src/lib/utils`).
- Helper util: `src/lib/utils.ts` berisi `cn()` (clsx + tailwind-merge).
## Komponen yang Tersedia
- `Button` (`src/components/ui/button.tsx`) berbasis CVA + Radix Slot, varian: default, destructive, outline, secondary, ghost, link; size: default, sm, lg, icon.
- `Input` (`src/components/ui/input.tsx`).
- `Card` (`src/components/ui/card.tsx`) + `CardHeader`, `CardTitle`, `CardContent`.
- Ikon: gunakan dari `lucide-react`, contoh: `Home`, `Moon`, `Send`, dsb.
## Halaman yang Ada
- `src/pages/Chat.tsx`: daftar pesan, auto scroll, input + tombol kirim, balasan asisten disimulasikan (setTimeout). Siap dihubungkan ke backend (SSE/WebSocket/HTTP stream).
- `src/pages/admin/Login.tsx`: form email/password; menggunakan `services/auth` untuk stub login.
- `src/pages/admin/Dashboard.tsx`: guard sederhana (redirect ke login jika belum auth), KPI dummy dan list percakapan terbaru.
## Auth (sementara)
- `src/services/auth.ts` menyimpan token dummy di `localStorage`. Fungsi: `login`, `logout`, `isAuthenticated`.
- Perlu diganti ke autentikasi riil (JWT/session) dan proteksi route yang lebih kuat.
## Perintah NPM
- `npm run dev` — jalankan Vite dev server.
- `npm run build` — build produksi ke `dist/`.
- `npm run preview` — preview hasil build.
## Berkas Penting
- `index.html` — entry HTML.
- `vite.config.ts` — plugin React.
- `tsconfig.json`, `tsconfig.node.json` — TypeScript config.
- `src/App.tsx` — layout + navigasi (Chat, Dashboard) + placeholder toggle tema.
- `src/main.tsx` — bootstrap React + Router.
## Rencana Lanjutan / TODO
- [ ] Implementasi toggle dark mode (persist di `localStorage`, set class `dark` di `document.documentElement`).
- [ ] Integrasi backend chat (SSE/WebSocket/HTTP) + streaming token respons.
- [ ] Ganti stub auth dengan API riil (JWT/refresh) + guard router (loader/ProtectedRoute).
- [ ] Dashboard analitik: metrik nyata (total percakapan, CSAT, latency), grafik (mis. Recharts), filter rentang waktu.
- [ ] Persistensi percakapan (riwayat, metadata: intent, kepuasan, sumber lead).
- [ ] A11y chat: roles/aria proper, fokus kembali ke input setelah kirim, shortcut keyboard.
- [ ] ESLint + Prettier + Vitest sesuai pedoman repo; tambahkan test dasar untuk komponen UI dan routing.
- [ ] ENV config (`.env.local`) untuk URL API (`VITE_API_URL`) dan kunci lain (tanpa commit rahasia).
## Catatan Implementasi
- Tema mengikuti shadcn: gunakan kelas Tailwind yang merujuk CSS variables (`bg-background`, `text-foreground`, dll.).
- Animasi: `tailwindcss-animate` sudah aktif; siap untuk komponen seperti Accordion/Dialog apabila ditambahkan.
- Navigasi header ada di `src/App.tsx` (link ke Chat dan Dashboard), tombol tema placeholder.
## Cara Menjalankan
1. `npm install`
2. `npm run dev` (development) atau `npm run build && npm run preview` (produksi lokal).
---
Jika Anda ingin saya melanjutkan, prioritas disarankan: dark mode toggle → integrasi alur chat ke backend (streaming) → auth riil → dashboard metrik & grafik → testing & linting.