codehava-agent-kit 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -0
- package/bin/cli.js +56 -0
- package/package.json +26 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/templates/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
- package/templates/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
- package/templates/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
- package/templates/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/templates/.agent/.shared/ui-ux-pro-max/scripts/search.py +106 -0
- package/templates/.agent/agents/backend-specialist.md +263 -0
- package/templates/.agent/agents/code-archaeologist.md +106 -0
- package/templates/.agent/agents/database-architect.md +226 -0
- package/templates/.agent/agents/debugger.md +225 -0
- package/templates/.agent/agents/devops-engineer.md +242 -0
- package/templates/.agent/agents/documentation-writer.md +104 -0
- package/templates/.agent/agents/explorer-agent.md +73 -0
- package/templates/.agent/agents/frontend-specialist.md +593 -0
- package/templates/.agent/agents/game-developer.md +162 -0
- package/templates/.agent/agents/mobile-developer.md +377 -0
- package/templates/.agent/agents/orchestrator.md +416 -0
- package/templates/.agent/agents/penetration-tester.md +188 -0
- package/templates/.agent/agents/performance-optimizer.md +187 -0
- package/templates/.agent/agents/product-manager.md +112 -0
- package/templates/.agent/agents/product-owner.md +95 -0
- package/templates/.agent/agents/project-planner.md +406 -0
- package/templates/.agent/agents/qa-automation-engineer.md +103 -0
- package/templates/.agent/agents/security-auditor.md +170 -0
- package/templates/.agent/agents/seo-specialist.md +111 -0
- package/templates/.agent/agents/test-engineer.md +158 -0
- package/templates/.agent/mcp_config.json +129 -0
- package/templates/.agent/rules/GEMINI.md +273 -0
- package/templates/.agent/scripts/auto_preview.py +148 -0
- package/templates/.agent/scripts/checklist.py +217 -0
- package/templates/.agent/scripts/session_manager.py +120 -0
- package/templates/.agent/scripts/verify_all.py +327 -0
- package/templates/.agent/skills/api-patterns/SKILL.md +81 -0
- package/templates/.agent/skills/api-patterns/api-style.md +42 -0
- package/templates/.agent/skills/api-patterns/auth.md +24 -0
- package/templates/.agent/skills/api-patterns/documentation.md +26 -0
- package/templates/.agent/skills/api-patterns/graphql.md +41 -0
- package/templates/.agent/skills/api-patterns/rate-limiting.md +31 -0
- package/templates/.agent/skills/api-patterns/response.md +37 -0
- package/templates/.agent/skills/api-patterns/rest.md +40 -0
- package/templates/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
- package/templates/.agent/skills/api-patterns/security-testing.md +122 -0
- package/templates/.agent/skills/api-patterns/trpc.md +41 -0
- package/templates/.agent/skills/api-patterns/versioning.md +22 -0
- package/templates/.agent/skills/app-builder/SKILL.md +75 -0
- package/templates/.agent/skills/app-builder/agent-coordination.md +71 -0
- package/templates/.agent/skills/app-builder/feature-building.md +53 -0
- package/templates/.agent/skills/app-builder/project-detection.md +34 -0
- package/templates/.agent/skills/app-builder/scaffolding.md +118 -0
- package/templates/.agent/skills/app-builder/tech-stack.md +41 -0
- package/templates/.agent/skills/app-builder/templates/SKILL.md +39 -0
- package/templates/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/templates/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/templates/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/templates/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/templates/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/templates/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/templates/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/templates/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
- package/templates/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
- package/templates/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
- package/templates/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
- package/templates/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/templates/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
- package/templates/.agent/skills/architecture/SKILL.md +55 -0
- package/templates/.agent/skills/architecture/context-discovery.md +43 -0
- package/templates/.agent/skills/architecture/examples.md +94 -0
- package/templates/.agent/skills/architecture/pattern-selection.md +68 -0
- package/templates/.agent/skills/architecture/patterns-reference.md +50 -0
- package/templates/.agent/skills/architecture/trade-off-analysis.md +77 -0
- package/templates/.agent/skills/bash-linux/SKILL.md +199 -0
- package/templates/.agent/skills/behavioral-modes/SKILL.md +242 -0
- package/templates/.agent/skills/better-auth-patterns/SKILL.md +121 -0
- package/templates/.agent/skills/brainstorming/SKILL.md +163 -0
- package/templates/.agent/skills/brainstorming/dynamic-questioning.md +350 -0
- package/templates/.agent/skills/bullmq-worker/SKILL.md +124 -0
- package/templates/.agent/skills/clean-code/SKILL.md +201 -0
- package/templates/.agent/skills/code-review-checklist/SKILL.md +109 -0
- package/templates/.agent/skills/database-design/SKILL.md +52 -0
- package/templates/.agent/skills/database-design/database-selection.md +43 -0
- package/templates/.agent/skills/database-design/indexing.md +39 -0
- package/templates/.agent/skills/database-design/migrations.md +48 -0
- package/templates/.agent/skills/database-design/optimization.md +36 -0
- package/templates/.agent/skills/database-design/orm-selection.md +30 -0
- package/templates/.agent/skills/database-design/schema-design.md +56 -0
- package/templates/.agent/skills/database-design/scripts/schema_validator.py +172 -0
- package/templates/.agent/skills/deployment-procedures/SKILL.md +241 -0
- package/templates/.agent/skills/doc.md +177 -0
- package/templates/.agent/skills/documentation-templates/SKILL.md +194 -0
- package/templates/.agent/skills/feature-spec-writer/SKILL.md +76 -0
- package/templates/.agent/skills/frontend-design/SKILL.md +452 -0
- package/templates/.agent/skills/frontend-design/animation-guide.md +331 -0
- package/templates/.agent/skills/frontend-design/color-system.md +311 -0
- package/templates/.agent/skills/frontend-design/decision-trees.md +418 -0
- package/templates/.agent/skills/frontend-design/motion-graphics.md +306 -0
- package/templates/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/templates/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
- package/templates/.agent/skills/frontend-design/typography-system.md +345 -0
- package/templates/.agent/skills/frontend-design/ux-psychology.md +1116 -0
- package/templates/.agent/skills/frontend-design/visual-effects.md +383 -0
- package/templates/.agent/skills/game-development/2d-games/SKILL.md +119 -0
- package/templates/.agent/skills/game-development/3d-games/SKILL.md +135 -0
- package/templates/.agent/skills/game-development/SKILL.md +167 -0
- package/templates/.agent/skills/game-development/game-art/SKILL.md +185 -0
- package/templates/.agent/skills/game-development/game-audio/SKILL.md +190 -0
- package/templates/.agent/skills/game-development/game-design/SKILL.md +129 -0
- package/templates/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
- package/templates/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
- package/templates/.agent/skills/game-development/pc-games/SKILL.md +144 -0
- package/templates/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
- package/templates/.agent/skills/game-development/web-games/SKILL.md +150 -0
- package/templates/.agent/skills/geo-fundamentals/SKILL.md +156 -0
- package/templates/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/templates/.agent/skills/i18n-localization/SKILL.md +154 -0
- package/templates/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/templates/.agent/skills/intelligent-routing/SKILL.md +335 -0
- package/templates/.agent/skills/lint-and-validate/SKILL.md +45 -0
- package/templates/.agent/skills/lint-and-validate/scripts/lint_runner.py +184 -0
- package/templates/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/templates/.agent/skills/mcp-builder/SKILL.md +176 -0
- package/templates/.agent/skills/mobile-design/SKILL.md +394 -0
- package/templates/.agent/skills/mobile-design/decision-trees.md +516 -0
- package/templates/.agent/skills/mobile-design/mobile-backend.md +491 -0
- package/templates/.agent/skills/mobile-design/mobile-color-system.md +420 -0
- package/templates/.agent/skills/mobile-design/mobile-debugging.md +122 -0
- package/templates/.agent/skills/mobile-design/mobile-design-thinking.md +357 -0
- package/templates/.agent/skills/mobile-design/mobile-navigation.md +458 -0
- package/templates/.agent/skills/mobile-design/mobile-performance.md +767 -0
- package/templates/.agent/skills/mobile-design/mobile-testing.md +356 -0
- package/templates/.agent/skills/mobile-design/mobile-typography.md +433 -0
- package/templates/.agent/skills/mobile-design/platform-android.md +666 -0
- package/templates/.agent/skills/mobile-design/platform-ios.md +561 -0
- package/templates/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/templates/.agent/skills/mobile-design/touch-psychology.md +537 -0
- package/templates/.agent/skills/neo-storage/SKILL.md +115 -0
- package/templates/.agent/skills/nextjs-api-route/SKILL.md +134 -0
- package/templates/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +351 -0
- package/templates/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
- package/templates/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -0
- package/templates/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
- package/templates/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
- package/templates/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
- package/templates/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -0
- package/templates/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
- package/templates/.agent/skills/nextjs-react-expert/9-cache-components.md +103 -0
- package/templates/.agent/skills/nextjs-react-expert/SKILL.md +293 -0
- package/templates/.agent/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
- package/templates/.agent/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
- package/templates/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
- package/templates/.agent/skills/parallel-agents/SKILL.md +175 -0
- package/templates/.agent/skills/performance-profiling/SKILL.md +143 -0
- package/templates/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/templates/.agent/skills/plan-writing/SKILL.md +152 -0
- package/templates/.agent/skills/powershell-windows/SKILL.md +167 -0
- package/templates/.agent/skills/prisma-7-patterns/SKILL.md +91 -0
- package/templates/.agent/skills/python-patterns/SKILL.md +441 -0
- package/templates/.agent/skills/red-team-tactics/SKILL.md +199 -0
- package/templates/.agent/skills/rust-pro/SKILL.md +176 -0
- package/templates/.agent/skills/seo-fundamentals/SKILL.md +129 -0
- package/templates/.agent/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/templates/.agent/skills/server-management/SKILL.md +161 -0
- package/templates/.agent/skills/systematic-debugging/SKILL.md +109 -0
- package/templates/.agent/skills/tailwind-patterns/SKILL.md +269 -0
- package/templates/.agent/skills/tdd-workflow/SKILL.md +149 -0
- package/templates/.agent/skills/testing-patterns/SKILL.md +178 -0
- package/templates/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/templates/.agent/skills/uu-pdp-feature-check/SKILL.md +116 -0
- package/templates/.agent/skills/vibe-buildplan/SKILL.md +232 -0
- package/templates/.agent/skills/vibe-prd/SKILL.md +226 -0
- package/templates/.agent/skills/vibe-research/SKILL.md +162 -0
- package/templates/.agent/skills/vibe-techdesign/SKILL.md +195 -0
- package/templates/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
- package/templates/.agent/skills/vulnerability-scanner/checklists.md +121 -0
- package/templates/.agent/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/templates/.agent/skills/web-design-guidelines/SKILL.md +57 -0
- package/templates/.agent/skills/webapp-testing/SKILL.md +187 -0
- package/templates/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/templates/.agent/skills/xendit-integration/SKILL.md +100 -0
- package/templates/.agent/snippets/@react-component-template.tsx +29 -0
- package/templates/.agent/workflows/brainstorm.md +113 -0
- package/templates/.agent/workflows/create.md +59 -0
- package/templates/.agent/workflows/db-migrate.md +26 -0
- package/templates/.agent/workflows/debug.md +103 -0
- package/templates/.agent/workflows/deploy.md +35 -0
- package/templates/.agent/workflows/dev-reset.md +40 -0
- package/templates/.agent/workflows/enhance.md +63 -0
- package/templates/.agent/workflows/git-commit.md +24 -0
- package/templates/.agent/workflows/health-check.md +34 -0
- package/templates/.agent/workflows/new-feature.md +32 -0
- package/templates/.agent/workflows/orchestrate.md +237 -0
- package/templates/.agent/workflows/plan.md +89 -0
- package/templates/.agent/workflows/preview.md +81 -0
- package/templates/.agent/workflows/status.md +86 -0
- package/templates/.agent/workflows/test.md +144 -0
- package/templates/.agent/workflows/ui-ux-pro-max.md +296 -0
- package/templates/.agent/workflows/vibe-plan.md +133 -0
- package/templates/.agent/workflows/vibe-recap.md +17 -0
- package/templates/.antigravity/rules.md +64 -0
- package/templates/AGENTS.md +268 -0
- package/templates/docs/00A-PROJECT-CHARTER.md +33 -0
- package/templates/docs/00B-BRD.md +25 -0
- package/templates/docs/01-PRD.md +122 -0
- package/templates/docs/01B-SRS-LENGKAP.md +60 -0
- package/templates/docs/02-TECH-DESIGN.md +491 -0
- package/templates/docs/03-UI-GUIDELINES.md +301 -0
- package/templates/docs/04-BACKLOG.md +127 -0
- package/templates/docs/05-DEPLOYMENT.md +363 -0
- package/templates/docs/06-DEVELOPMENT-LOG.md +78 -0
- package/templates/specs/README.md +54 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
# AGENTS.md — Instruksi AI untuk Proyek Ini
|
|
2
|
+
> Letakkan file ini di **root folder project** (sejajar `package.json`).
|
|
3
|
+
> Dibaca otomatis oleh Antigravity, Cursor, Claude Code, dan AI IDE lainnya.
|
|
4
|
+
> **Stack diverifikasi: Maret 2026**
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 🎯 Identitas Proyek
|
|
9
|
+
|
|
10
|
+
- **Nama Proyek:** [nama proyek]
|
|
11
|
+
- **Tipe:** [Web App / Mobile / Marketplace]
|
|
12
|
+
- **Stack:** Next.js **16.1** (App Router) + Flutter **3.41.2** + PostgreSQL **17** + Prisma **7** + Better Auth **1.5**
|
|
13
|
+
- **Runtime:** Node.js **22 LTS**
|
|
14
|
+
- **Data Fetching:** Server Components (default) + TanStack Query (client mutations/realtime)
|
|
15
|
+
- **Arsitektur:** Modular Monolith — 1 Next.js app + 1 BullMQ worker container
|
|
16
|
+
- **Payment:** Xendit (split payment / disbursement) — hanya app dengan transaksi keuangan
|
|
17
|
+
- **Realtime:** Socket.io + BullMQ **5.x** (Redis **7.4 LTS**, shared instance)
|
|
18
|
+
- **Push Notif:** Firebase FCM — **hanya `firebase_messaging`**, Analytics/Crashlytics JANGAN diaktifkan
|
|
19
|
+
- **Storage:** NEO Object Storage Biznet Gio (S3-compatible, Indonesia)
|
|
20
|
+
- **CDN:** Cloudflare Free (DPA wajib di-accept) + NEO untuk serve file upload
|
|
21
|
+
- **Deploy:** Coolify di VPS Biznet Gio (Indonesia — comply UU PDP)
|
|
22
|
+
- **IDE:** Antigravity
|
|
23
|
+
- **Stack diverifikasi:** Maret 2026
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 📁 Dokumen Referensi
|
|
28
|
+
|
|
29
|
+
| Dokumen | Lokasi | Berisi |
|
|
30
|
+
|---------|--------|--------|
|
|
31
|
+
| PRD | `docs/01-PRD.md` | Fitur, user stories (REQ-XXX), scope MVP |
|
|
32
|
+
| Tech Design | `docs/02-TECH-DESIGN.md` | Stack, schema DB, API contracts, code patterns |
|
|
33
|
+
| UI Guidelines | `docs/03-UI-GUIDELINES.md` | Komponen shadcn, warna, Flutter design |
|
|
34
|
+
| Backlog | `docs/04-BACKLOG.md` | Task aktif sprint ini |
|
|
35
|
+
| Deployment | `docs/05-DEPLOYMENT.md` | Coolify, Dockerfile, CI/CD, backup |
|
|
36
|
+
| Dev Log | `docs/06-DEVELOPMENT-LOG.md` | Kenapa setiap keputusan teknis dibuat |
|
|
37
|
+
| Feature Specs | `specs/NNN-nama-fitur.md` | Blueprint fitur sebelum coding |
|
|
38
|
+
|
|
39
|
+
**Antigravity agent config:**
|
|
40
|
+
|
|
41
|
+
| File | Fungsi |
|
|
42
|
+
|------|--------|
|
|
43
|
+
| `.antigravity/rules.md` | Rules selalu aktif tiap sesi |
|
|
44
|
+
| `.agent/skills/` | 8 skills — auto-load saat relevan |
|
|
45
|
+
| `.agent/workflows/` | 6 workflows — panggil via `/nama` |
|
|
46
|
+
| `.agent/mcp_config.json` | Config MCP servers |
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## ⚙️ 10 Aturan Coding — WAJIB
|
|
51
|
+
|
|
52
|
+
### 1. Tanya dulu, coding belakangan
|
|
53
|
+
Jika ada ambiguitas → tanya sebelum generate kode panjang.
|
|
54
|
+
Untuk fitur size M atau L: cek `specs/` dulu — jika ada spec, ikuti acceptance criteria di sana.
|
|
55
|
+
|
|
56
|
+
### 2. Satu fokus per sesi
|
|
57
|
+
Jika diminta buat form login → **hanya buat form login**. Jangan ubah layout atau routing.
|
|
58
|
+
|
|
59
|
+
### 3. Jangan hapus kode tanpa konfirmasi
|
|
60
|
+
Tampilkan dulu apa yang akan dihapus → minta konfirmasi sebelum lanjut.
|
|
61
|
+
|
|
62
|
+
### 4. TypeScript strict — no `any`, import Prisma dari generated path
|
|
63
|
+
```typescript
|
|
64
|
+
// ❌ Prisma 7: ini sudah tidak valid
|
|
65
|
+
import { User } from '@prisma/client'
|
|
66
|
+
|
|
67
|
+
// ✅ Prisma 7: pakai generated path
|
|
68
|
+
import { User } from '@/generated/prisma'
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 5. Error handling wajib di setiap async function
|
|
72
|
+
```typescript
|
|
73
|
+
try {
|
|
74
|
+
const data = await prisma.user.findMany({ take: 20 })
|
|
75
|
+
} catch (error) {
|
|
76
|
+
console.error('[user:findMany]', error)
|
|
77
|
+
throw error
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 6. Loading + Empty + Error state wajib
|
|
82
|
+
Setiap komponen yang fetch data HARUS punya ketiga state ini.
|
|
83
|
+
|
|
84
|
+
### 7. Cek komponen yang sudah ada dulu
|
|
85
|
+
Sebelum buat komponen baru → cek `/components/ui/` dan `/components/[feature]/`.
|
|
86
|
+
|
|
87
|
+
### 8. Mobile-first untuk semua UI Web
|
|
88
|
+
```tsx
|
|
89
|
+
<div className="flex flex-col md:flex-row gap-4">
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 9. Env vars tidak pernah di-hardcode
|
|
93
|
+
```typescript
|
|
94
|
+
// ❌ const url = "https://xendit.co"
|
|
95
|
+
// ✅ const url = process.env.XENDIT_BASE_URL
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 10. Next.js 16 — `params` DAN `headers()` wajib di-await
|
|
99
|
+
```typescript
|
|
100
|
+
// ❌ Next.js 14 style — error di Next.js 16
|
|
101
|
+
export default function Page({ params }: { params: { id: string } }) {
|
|
102
|
+
const { id } = params
|
|
103
|
+
}
|
|
104
|
+
const session = await auth.api.getSession({ headers: headers() })
|
|
105
|
+
|
|
106
|
+
// ✅ Next.js 16 — params dan headers() sekarang async
|
|
107
|
+
export default async function Page({ params }: { params: Promise<{ id: string }> }) {
|
|
108
|
+
const { id } = await params
|
|
109
|
+
}
|
|
110
|
+
const session = await auth.api.getSession({ headers: await headers() })
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Format commit
|
|
114
|
+
```
|
|
115
|
+
feat(auth): tambah login Google OAuth
|
|
116
|
+
fix(payment): perbaiki webhook Xendit tidak terproses
|
|
117
|
+
chore(deps): update Next.js ke 16.1
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 🗄️ Database (Prisma 7 + PostgreSQL 17)
|
|
123
|
+
|
|
124
|
+
### Setup Client Singleton (`lib/db/index.ts`)
|
|
125
|
+
```typescript
|
|
126
|
+
import { PrismaClient } from '@/generated/prisma'
|
|
127
|
+
import { PrismaPg } from '@prisma/adapter-pg'
|
|
128
|
+
|
|
129
|
+
const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL! })
|
|
130
|
+
const globalForPrisma = globalThis as unknown as { prisma: PrismaClient }
|
|
131
|
+
|
|
132
|
+
export const prisma = globalForPrisma.prisma ?? new PrismaClient({ adapter })
|
|
133
|
+
if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Schema Generator (`prisma/schema.prisma`)
|
|
137
|
+
```prisma
|
|
138
|
+
generator client {
|
|
139
|
+
provider = "prisma-client"
|
|
140
|
+
output = "../src/generated/prisma"
|
|
141
|
+
}
|
|
142
|
+
datasource db {
|
|
143
|
+
provider = "postgresql"
|
|
144
|
+
url = env("DATABASE_URL")
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Aturan Query
|
|
149
|
+
- Selalu `take` + `skip` pada `findMany` — tidak ada query tanpa limit
|
|
150
|
+
- Soft delete: `deletedAt DateTime?` — jangan hard delete data penting
|
|
151
|
+
- Semua tabel: `createdAt @default(now())` + `updatedAt @updatedAt`
|
|
152
|
+
- Multi-tabel: `prisma.$transaction(async (tx) => { ... })`
|
|
153
|
+
- Migration dev: `npx prisma migrate dev` | Production: `npx prisma migrate deploy`
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## 💳 Xendit Payment
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
// Webhook — WAJIB await headers()
|
|
161
|
+
export async function POST(req: Request) {
|
|
162
|
+
const callbackToken = (await headers()).get('x-callback-token')
|
|
163
|
+
if (callbackToken !== process.env.XENDIT_CALLBACK_TOKEN) {
|
|
164
|
+
return Response.json({ error: 'Unauthorized' }, { status: 403 })
|
|
165
|
+
}
|
|
166
|
+
const payload = await req.json()
|
|
167
|
+
await paymentQueue.add('process-webhook', payload, { attempts: 3 })
|
|
168
|
+
return Response.json({ received: true })
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Aturan:** Selalu verifikasi `x-callback-token`. Enqueue ke BullMQ — jangan proses langsung.
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## 🔌 Socket.io + BullMQ
|
|
177
|
+
|
|
178
|
+
```typescript
|
|
179
|
+
// Worker emit ke client setelah job selesai
|
|
180
|
+
worker.on('completed', (job, result) => {
|
|
181
|
+
io.to(`user_${result.userId}`).emit('payment:updated', result)
|
|
182
|
+
})
|
|
183
|
+
|
|
184
|
+
// Redis client
|
|
185
|
+
export const redis = new Redis(process.env.REDIS_URL!, {
|
|
186
|
+
maxRetriesPerRequest: null, // required untuk BullMQ
|
|
187
|
+
})
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## 🔒 Security + UU PDP
|
|
193
|
+
|
|
194
|
+
```typescript
|
|
195
|
+
// API Route — WAJIB await headers()
|
|
196
|
+
const session = await auth.api.getSession({ headers: await headers() })
|
|
197
|
+
if (!session) return Response.json({ error: 'Unauthorized' }, { status: 401 })
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
- ✅ Semua input divalidasi Zod sebelum masuk DB
|
|
201
|
+
- ✅ Firebase: hanya `firebase_messaging` — Analytics/Crashlytics = OFF
|
|
202
|
+
- ✅ Cloudflare DPA + Firebase DPT wajib di-accept (sekali oleh admin)
|
|
203
|
+
- ✅ Log tidak print password, token, NIK, nomor rekening
|
|
204
|
+
- ✅ Data sensitif (NIK, rekening) dienkripsi dengan pgcrypto di DB
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## 📝 Format Prompt Efektif
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
[KONTEKS] Fitur: [nama fitur]
|
|
212
|
+
[SPEC] Baca specs/NNN-nama.md jika ada
|
|
213
|
+
[TUGAS] Yang perlu dibuat: [deskripsi spesifik]
|
|
214
|
+
[CONSTRAINT] Jangan ubah: [file/komponen yang tidak boleh diubah]
|
|
215
|
+
use context7
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## ⚡ Workflows
|
|
219
|
+
|
|
220
|
+
### Planning (sebelum coding)
|
|
221
|
+
| Command | Gunakan ketika |
|
|
222
|
+
|---------|----------------|
|
|
223
|
+
| `/vibe-plan` | **Mulai project baru** — research → PRD → tech design → build plan |
|
|
224
|
+
|
|
225
|
+
### Build (saat coding)
|
|
226
|
+
| Command | Gunakan ketika |
|
|
227
|
+
|---------|----------------|
|
|
228
|
+
| `/new-feature` | Mulai fitur baru size M/L |
|
|
229
|
+
| `/db-migrate` | Ada perubahan schema Prisma |
|
|
230
|
+
| `/deploy` | Push ke production |
|
|
231
|
+
| `/health-check` | Ada masalah atau monitoring rutin |
|
|
232
|
+
| `/git-commit` | Commit dengan format benar |
|
|
233
|
+
| `/dev-reset` | Environment dev bermasalah |
|
|
234
|
+
|
|
235
|
+
## 🔌 MCP Servers
|
|
236
|
+
|
|
237
|
+
- **Context7** — docs real-time Next.js 16, Prisma 7, Better Auth, BullMQ → `use context7`
|
|
238
|
+
- **GitHub** — issues, PR, commits dari IDE
|
|
239
|
+
- **PostgreSQL** — schema dan query DB development (jangan production!)
|
|
240
|
+
- **Playwright** — E2E testing browser otomatis
|
|
241
|
+
- **Sentry** — production errors langsung ke context
|
|
242
|
+
- **Docker** — container logs dan status
|
|
243
|
+
|
|
244
|
+
Config lengkap di `.agent/mcp_config.json`
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## 🧠 Skills — Daftar Lengkap
|
|
249
|
+
|
|
250
|
+
### Planning Skills (jalankan sebelum coding project baru)
|
|
251
|
+
| Skill | Trigger |
|
|
252
|
+
|-------|---------|
|
|
253
|
+
| `vibe-research` | "riset dulu", "validasi ide", "analisa kompetitor" |
|
|
254
|
+
| `vibe-prd` | "buat PRD", "definisikan fitur", "scope MVP" |
|
|
255
|
+
| `vibe-techdesign` | "pilih stack", "desain arsitektur", "buat ERD" |
|
|
256
|
+
| `vibe-buildplan` | "buat sprint plan", "breakdown task", "berapa sprint" |
|
|
257
|
+
|
|
258
|
+
### Build Skills (dipakai saat coding)
|
|
259
|
+
| Skill | Trigger |
|
|
260
|
+
|-------|---------|
|
|
261
|
+
| `prisma-7-patterns` | Coding DB, schema, migrate |
|
|
262
|
+
| `xendit-integration` | Payment, webhook, split |
|
|
263
|
+
| `nextjs-api-route` | Buat `route.ts`, Server Action |
|
|
264
|
+
| `better-auth-patterns` | Auth, login, session |
|
|
265
|
+
| `bullmq-worker` | Background job, queue |
|
|
266
|
+
| `uu-pdp-feature-check` | Fitur yang sentuh data pribadi |
|
|
267
|
+
| `feature-spec-writer` | Plan fitur baru, size M/L |
|
|
268
|
+
| `neo-storage` | Upload file, presigned URL |
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Project Charter
|
|
2
|
+
> Document Status: Draft / Reviewed / Approved
|
|
3
|
+
> Date: [YYYY-MM-DD]
|
|
4
|
+
> Project Sponsor: [Sponsor Name]
|
|
5
|
+
> Project Manager: [PM Name]
|
|
6
|
+
|
|
7
|
+
## 1. Tujuan Proyek (Project Purpose/Justification)
|
|
8
|
+
Menjelaskan mengapa proyek ini dilakukan. Masalah bisnis apa yang sedang diselesaikan atau peluang apa yang ingin dimanfaatkan?
|
|
9
|
+
|
|
10
|
+
## 2. Sasaran Proyek & Kriteria Sukses (Objectives & Success Criteria)
|
|
11
|
+
Sasaran proyek (bersifat *measurable* dan spesifik).
|
|
12
|
+
- **Scope (Ruang Lingkup):** [contoh: Meluncurkan aplikasi Android dan Web minimal]
|
|
13
|
+
- **Time (Waktu):** [contoh: MVP rampung dalam 2 bulan]
|
|
14
|
+
- **Cost (Biaya):** [contoh: Anggaran cloud dan lisensi di bawah $500/bulan]
|
|
15
|
+
- **Kualitas:** [contoh: Pengadopsian awal 1000 pengguna]
|
|
16
|
+
|
|
17
|
+
## 3. Persyaratan Tingkat Tinggi (High-Level Requirements)
|
|
18
|
+
Fitur atau kapabilitas utama sistem secara makro (dari sisi non-teknis).
|
|
19
|
+
|
|
20
|
+
## 4. Risiko Tingkat Tinggi (High-Level Risks)
|
|
21
|
+
Daftar risiko utama yang bisa menggagalkan proyek beserta *mitigation plan* ringkas.
|
|
22
|
+
|
|
23
|
+
## 5. Ringkasan Milestone (Summary Milestone Schedule)
|
|
24
|
+
- Phase 1: Requirement Gathering (Minggu 1-2)
|
|
25
|
+
- Phase 2: UI/UX & Architecture (Minggu 3-4)
|
|
26
|
+
- Phase 3: MVP Development (Minggu 5-8)
|
|
27
|
+
- Phase 4: UAT & Launch (Minggu 9)
|
|
28
|
+
|
|
29
|
+
## 6. Daftar Pemangku Kepentingan (Stakeholder List)
|
|
30
|
+
| Nama / Peran | Jabatan / Pengaruh | Kontak / Catatan |
|
|
31
|
+
|-------------|---------------------|------------------|
|
|
32
|
+
| [Nama] | Sponsor/CEO | Pengambil keputusan akhir |
|
|
33
|
+
| [Nama] | Pengguna Akhir | Target tester MVP |
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Business Requirements Document (BRD)
|
|
2
|
+
> Project: [Nama Proyek]
|
|
3
|
+
> Date: [YYYY-MM-DD]
|
|
4
|
+
|
|
5
|
+
## 1. Executive Summary
|
|
6
|
+
Rangkuman singkat mengenai inisiatif bisnis ini—siapa yang membutuhkan dan nilai apa yang akan didapatkan perusahaan jika ini berhasil diimplementasikan.
|
|
7
|
+
|
|
8
|
+
## 2. Business Objectives
|
|
9
|
+
Apa gol strategis inisiatif ini? (Contoh: Mengurangi beban CS hingga 40%, atau menigkatkan retensi pengguna baru sebesar 15%).
|
|
10
|
+
|
|
11
|
+
## 3. Business Scope (In-Scope & Out-of-Scope)
|
|
12
|
+
- **In-Scope:** Proses, operasional, atau departemen yang tercakup oleh produk.
|
|
13
|
+
- **Out-of-Scope:** Proses yang secara eksplisit tidak akan dilayani pada iterasi rilis ini.
|
|
14
|
+
|
|
15
|
+
## 4. Business Process Model (As-Is / To-Be)
|
|
16
|
+
- **As-Is Process:** Bagaimana proses berjalan saat ini tanpa produk ini.
|
|
17
|
+
- **To-Be Process:** Bagaimana produk baru ini akan merampingkan/memperbarui proses lama. (Bisa digambarkan dengan *Flowchart* tekstual).
|
|
18
|
+
|
|
19
|
+
## 5. Business Use Cases
|
|
20
|
+
Kasus penggunaan yang diuraikan dari lensa tujuan bisnis.
|
|
21
|
+
- **BUC-01:** Customer bisa memproses komplain pengembalian dana mandiri. (Gol: Mengurangi interaksi CS manual).
|
|
22
|
+
- **BUC-02:** Sistem mendeteksi anomali fraud transaksi tinggi. (Gol: Preventif kerugian asuransi).
|
|
23
|
+
|
|
24
|
+
## 6. Asumsi Bisnis & Constraints (Hambatan)
|
|
25
|
+
Asumsi-asumsi (contoh: user diasumsikan memiliki koneksi internet) dan constraints (contoh: integrasi bergantung pada kesiapan API bank).
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# 01 — Product Requirements Document (PRD)
|
|
2
|
+
> Isi dokumen ini sebelum mulai coding sprint pertama.
|
|
3
|
+
> AI membaca ini sebagai konteks utama untuk memahami produk yang dibangun.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Ringkasan Produk
|
|
8
|
+
|
|
9
|
+
| Field | Isi |
|
|
10
|
+
|-------|-----|
|
|
11
|
+
| **Nama Produk** | [nama aplikasi] |
|
|
12
|
+
| **Tipe** | [Web App / Mobile App / Marketplace] |
|
|
13
|
+
| **Versi** | v0.1 — MVP |
|
|
14
|
+
| **Tanggal** | [tanggal] |
|
|
15
|
+
| **Owner** | [nama PIC] |
|
|
16
|
+
|
|
17
|
+
### Elevator Pitch
|
|
18
|
+
> Aplikasi ini membantu **[siapa]** untuk **[melakukan apa]** sehingga **[manfaat utama]**.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 2. Masalah & Target Pengguna
|
|
23
|
+
|
|
24
|
+
### Problem Statement
|
|
25
|
+
[Jelaskan masalah nyata yang ada. Apa pain point pengguna saat ini?]
|
|
26
|
+
|
|
27
|
+
### Target Pengguna
|
|
28
|
+
| Segmen | Deskripsi | Pain Point Utama |
|
|
29
|
+
|--------|-----------|--------------------|
|
|
30
|
+
| User Utama | [contoh: pemilik toko online] | [contoh: susah kelola pesanan] |
|
|
31
|
+
| User Sekunder | [contoh: pelanggan toko] | [contoh: checkout ribet] |
|
|
32
|
+
| Admin | [contoh: operator platform] | [contoh: rekonsiliasi manual] |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 3. Fitur MVP
|
|
37
|
+
|
|
38
|
+
> **Prinsip:** Hanya fitur yang WAJIB untuk validasi bisnis. Sisanya masuk backlog.
|
|
39
|
+
|
|
40
|
+
### ✅ In Scope
|
|
41
|
+
| ID | Fitur | Deskripsi | Prioritas |
|
|
42
|
+
|----|-------|-----------|-----------|
|
|
43
|
+
| F01 | Autentikasi | Login email, Google OAuth, session 7 hari | P0 |
|
|
44
|
+
| F02 | [nama fitur] | [deskripsi singkat] | P0 |
|
|
45
|
+
| F03 | [nama fitur] | [deskripsi singkat] | P1 |
|
|
46
|
+
| F04 | Pembayaran | Xendit payment link, webhook, split payment | P0 |
|
|
47
|
+
| F05 | Notifikasi | FCM push notif, email via Resend | P1 |
|
|
48
|
+
|
|
49
|
+
### ❌ Out of Scope MVP
|
|
50
|
+
- [fitur yang sengaja ditunda]
|
|
51
|
+
- [fitur nice-to-have]
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 4. User Stories
|
|
56
|
+
|
|
57
|
+
> Format: **Sebagai [siapa], saya ingin [aksi], agar [tujuan].**
|
|
58
|
+
|
|
59
|
+
### Autentikasi
|
|
60
|
+
- [ ] **REQ-001** Sebagai pengguna baru, saya ingin mendaftar dengan email/Google, agar bisa akses aplikasi
|
|
61
|
+
- [ ] **REQ-002** Sebagai pengguna, saya ingin login dan sesi tersimpan 7 hari, agar tidak perlu login ulang
|
|
62
|
+
- [ ] **REQ-003** Sebagai pengguna, saya ingin reset password via email, agar bisa akses akun jika lupa
|
|
63
|
+
|
|
64
|
+
### [Modul Utama — ganti sesuai aplikasi]
|
|
65
|
+
- [ ] **REQ-010** Sebagai [role], saya ingin [aksi], agar [tujuan]
|
|
66
|
+
- [ ] **REQ-011** Sebagai [role], saya ingin [aksi], agar [tujuan]
|
|
67
|
+
|
|
68
|
+
### Pembayaran (Xendit)
|
|
69
|
+
- [ ] **REQ-020** Sebagai pembeli, saya ingin membayar via VA/QRIS/e-wallet
|
|
70
|
+
- [ ] **REQ-021** Sebagai penjual, saya ingin dana langsung masuk rekening saya (split)
|
|
71
|
+
- [ ] **REQ-022** Sebagai admin, saya ingin melihat status semua transaksi
|
|
72
|
+
|
|
73
|
+
### Notifikasi
|
|
74
|
+
- [ ] **REQ-030** Sebagai pengguna, saya ingin dapat push notif saat ada update penting
|
|
75
|
+
- [ ] **REQ-031** Sebagai pengguna, saya ingin dapat email konfirmasi pembayaran
|
|
76
|
+
|
|
77
|
+
### UU PDP — Hak Pengguna (Wajib sesuai UU PDP No. 27/2022)
|
|
78
|
+
- [ ] **REQ-040** Sebagai pengguna, saya ingin dapat menghapus akun + semua data saya
|
|
79
|
+
- [ ] **REQ-041** Sebagai pengguna, saya ingin dapat mengunduh semua data pribadi saya
|
|
80
|
+
- [ ] **REQ-042** Sebagai pengguna, saya ingin dapat mencabut consent marketing kapan saja
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 5. Non-Functional Requirements
|
|
85
|
+
|
|
86
|
+
| Kategori | Requirement | Target |
|
|
87
|
+
|----------|-------------|--------|
|
|
88
|
+
| Performance | Load halaman utama | < 2 detik |
|
|
89
|
+
| Availability | Uptime | 99.9% |
|
|
90
|
+
| Security | Auth | Session DB (Better Auth 1.5) |
|
|
91
|
+
| Security | Payment | Xendit callback token verified |
|
|
92
|
+
| Security | Data sensitif | Enkripsi at-rest (pgcrypto) |
|
|
93
|
+
| Scalability | Concurrent users (MVP) | 100 users |
|
|
94
|
+
| Mobile | Platform | Android + iOS (Flutter 3.41.2) |
|
|
95
|
+
| Storage | File upload max | 5 MB |
|
|
96
|
+
| Regulasi | Compliance | UU PDP No. 27/2022 |
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 6. Success Metrics
|
|
101
|
+
|
|
102
|
+
| Metric | Target MVP (Bulan 1) | Cara Ukur |
|
|
103
|
+
|--------|---------------------|-----------|
|
|
104
|
+
| Registrasi user | [target] | DB count |
|
|
105
|
+
| Transaksi berhasil | [target] | Xendit dashboard |
|
|
106
|
+
| Uptime | 99.9% | Uptime Kuma |
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 7. Constraints & Asumsi
|
|
111
|
+
|
|
112
|
+
### Constraints
|
|
113
|
+
- Tim: 2–3 orang
|
|
114
|
+
- Timeline MVP: [target tanggal]
|
|
115
|
+
- Budget infra: [estimasi/bulan]
|
|
116
|
+
- Regulasi: UU PDP No. 27/2022 (berlaku penuh Oktober 2024)
|
|
117
|
+
|
|
118
|
+
### Asumsi
|
|
119
|
+
- User memiliki smartphone Android/iOS
|
|
120
|
+
- Merchant sudah terdaftar sebagai sub-merchant di Xendit
|
|
121
|
+
- Semua user WNI — tidak perlu multi-currency untuk MVP
|
|
122
|
+
- Primary database di Indonesia (Biznet Gio) untuk comply data residency
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Software Requirements Specification (SRS)
|
|
2
|
+
> Sistem: [Nama Proyek/Sistem]
|
|
3
|
+
> Versi: [1.0]
|
|
4
|
+
> Tanggal: [YYYY-MM-DD]
|
|
5
|
+
|
|
6
|
+
## 1. Pendahuluan
|
|
7
|
+
### 1.1 Tujuan
|
|
8
|
+
Dokumen ini mendefinisikan persyaratan fungsional dan non-fungsional, serta arsitektur dari sistem [Nama Proyek]. Tujuannya adalah memastikan pemahaman yang sama antara pemangku kepentingan dan tim pengembang (termasuk AI agent) mengenai target spesifik dari pengembangan peranti lunak.
|
|
9
|
+
|
|
10
|
+
### 1.2 Ruang Lingkup (Scope)
|
|
11
|
+
Penjelasan ringkas mengenai batasan sistem. Apa yang akan dikembangkan dalam MVP dan apa yang termasuk di luar fase (Out of Scope).
|
|
12
|
+
|
|
13
|
+
### 1.3 Referensi
|
|
14
|
+
- `docs/01-PRD.md` (Product Requirements Document terkait MVP)
|
|
15
|
+
- `docs/tech-design.md` (Spesifikasi Teknis)
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 2. Deskripsi Keseluruhan
|
|
20
|
+
### 2.1 Konteks Sistem
|
|
21
|
+
Diagram tingkat tinggi atau deskripsi interaksi sistem dengan entitas eksternal (sistem pihak ketiga, pengguna akhir, layanan integrasi seperti Payment Gateway Xendit).
|
|
22
|
+
|
|
23
|
+
### 2.2 Karakteristik Pengguna
|
|
24
|
+
Identifikasi setiap aktor. (Contoh: Admin, End-User, Guest).
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 3. Spesifikasi Persyaratan Fungsi (Functional Requirements)
|
|
29
|
+
Spesifikasikan dengan format *Use Case* atau cerita pengguna (User Stories) dengan rincian yang lebih dalam dibandingkan MVP PRD.
|
|
30
|
+
|
|
31
|
+
### 3.1 Layanan Otentikasi
|
|
32
|
+
1. Sistem harus mengijinkan user masuk menggunakan OAuth Google (Better Auth).
|
|
33
|
+
2. Sistem wajib mengelola sesi kadaluwarsa pengguna secara otomatis.
|
|
34
|
+
|
|
35
|
+
### 3.2 Modul Utama [Nama Modul]
|
|
36
|
+
_Rincian setiap interaksi yang terjadi pada sistem..._
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 4. Persyaratan Non-Fungsional (Non-Functional Requirements / NFR)
|
|
41
|
+
### 4.1 Keamanan (Security)
|
|
42
|
+
- Sistem harus mengamankan data sensitif pengguna (seperti NIK) menggunakan enkripsi pgcrypto pada database PostgreSQL.
|
|
43
|
+
- Transmisi data wajib dibalut di bawah HTTPS.
|
|
44
|
+
- Proteksi terhadap *SQL Injection* dan *XSS* wajib ditegakkan (Zod Validations & Parameterized Queries).
|
|
45
|
+
|
|
46
|
+
### 4.2 Kinerja (Performance)
|
|
47
|
+
1. Kecepatan *load* halaman klien (LCP - Largest Contentful Paint) harus kurang dari 2.5 detik.
|
|
48
|
+
2. *Webhook* transaksi harus mampu memproses antrean `BullMQ` dengan konkurensi minimal 10 task tanpa membebani thread antarmuka.
|
|
49
|
+
|
|
50
|
+
### 4.3 Privasi Data (UU PDP Compliance)
|
|
51
|
+
Hak pengguna untuk mengakses, mengunduh (*data portability*), dan menghapus data personal (Right to Erasure) wajib tersedia secara mandiri di halaman pengaturan akun.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 5. Pemodelan Data & Lingkungan
|
|
56
|
+
### 5.1 Spesifikasi Skema Database
|
|
57
|
+
Diagram ERD secara tekstual atau penjelasan tabel utama (misal: relasi `Users` ke `Transactions` dalam rancangan Prisma 7).
|
|
58
|
+
|
|
59
|
+
### 5.2 Strategi Backup & Pemulihan
|
|
60
|
+
Rincian metode *snapshot* di lingkungan produksi atau penyimpanan file pengguna yang direkam menuju NEO Object Storage Biznet.
|