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.
Files changed (235) hide show
  1. package/README.md +56 -0
  2. package/bin/cli.js +56 -0
  3. package/package.json +26 -0
  4. package/templates/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
  5. package/templates/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
  6. package/templates/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
  7. package/templates/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
  8. package/templates/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
  9. package/templates/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
  10. package/templates/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
  11. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  12. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  13. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  14. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  15. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  16. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  17. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  18. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  19. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  20. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  21. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  22. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  23. package/templates/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
  24. package/templates/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
  25. package/templates/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  26. package/templates/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  27. package/templates/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
  28. package/templates/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
  29. package/templates/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
  30. package/templates/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
  31. package/templates/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
  32. package/templates/.agent/.shared/ui-ux-pro-max/scripts/search.py +106 -0
  33. package/templates/.agent/agents/backend-specialist.md +263 -0
  34. package/templates/.agent/agents/code-archaeologist.md +106 -0
  35. package/templates/.agent/agents/database-architect.md +226 -0
  36. package/templates/.agent/agents/debugger.md +225 -0
  37. package/templates/.agent/agents/devops-engineer.md +242 -0
  38. package/templates/.agent/agents/documentation-writer.md +104 -0
  39. package/templates/.agent/agents/explorer-agent.md +73 -0
  40. package/templates/.agent/agents/frontend-specialist.md +593 -0
  41. package/templates/.agent/agents/game-developer.md +162 -0
  42. package/templates/.agent/agents/mobile-developer.md +377 -0
  43. package/templates/.agent/agents/orchestrator.md +416 -0
  44. package/templates/.agent/agents/penetration-tester.md +188 -0
  45. package/templates/.agent/agents/performance-optimizer.md +187 -0
  46. package/templates/.agent/agents/product-manager.md +112 -0
  47. package/templates/.agent/agents/product-owner.md +95 -0
  48. package/templates/.agent/agents/project-planner.md +406 -0
  49. package/templates/.agent/agents/qa-automation-engineer.md +103 -0
  50. package/templates/.agent/agents/security-auditor.md +170 -0
  51. package/templates/.agent/agents/seo-specialist.md +111 -0
  52. package/templates/.agent/agents/test-engineer.md +158 -0
  53. package/templates/.agent/mcp_config.json +129 -0
  54. package/templates/.agent/rules/GEMINI.md +273 -0
  55. package/templates/.agent/scripts/auto_preview.py +148 -0
  56. package/templates/.agent/scripts/checklist.py +217 -0
  57. package/templates/.agent/scripts/session_manager.py +120 -0
  58. package/templates/.agent/scripts/verify_all.py +327 -0
  59. package/templates/.agent/skills/api-patterns/SKILL.md +81 -0
  60. package/templates/.agent/skills/api-patterns/api-style.md +42 -0
  61. package/templates/.agent/skills/api-patterns/auth.md +24 -0
  62. package/templates/.agent/skills/api-patterns/documentation.md +26 -0
  63. package/templates/.agent/skills/api-patterns/graphql.md +41 -0
  64. package/templates/.agent/skills/api-patterns/rate-limiting.md +31 -0
  65. package/templates/.agent/skills/api-patterns/response.md +37 -0
  66. package/templates/.agent/skills/api-patterns/rest.md +40 -0
  67. package/templates/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
  68. package/templates/.agent/skills/api-patterns/security-testing.md +122 -0
  69. package/templates/.agent/skills/api-patterns/trpc.md +41 -0
  70. package/templates/.agent/skills/api-patterns/versioning.md +22 -0
  71. package/templates/.agent/skills/app-builder/SKILL.md +75 -0
  72. package/templates/.agent/skills/app-builder/agent-coordination.md +71 -0
  73. package/templates/.agent/skills/app-builder/feature-building.md +53 -0
  74. package/templates/.agent/skills/app-builder/project-detection.md +34 -0
  75. package/templates/.agent/skills/app-builder/scaffolding.md +118 -0
  76. package/templates/.agent/skills/app-builder/tech-stack.md +41 -0
  77. package/templates/.agent/skills/app-builder/templates/SKILL.md +39 -0
  78. package/templates/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  79. package/templates/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  80. package/templates/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  81. package/templates/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  82. package/templates/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  83. package/templates/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  84. package/templates/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  85. package/templates/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
  86. package/templates/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
  87. package/templates/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
  88. package/templates/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
  89. package/templates/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  90. package/templates/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
  91. package/templates/.agent/skills/architecture/SKILL.md +55 -0
  92. package/templates/.agent/skills/architecture/context-discovery.md +43 -0
  93. package/templates/.agent/skills/architecture/examples.md +94 -0
  94. package/templates/.agent/skills/architecture/pattern-selection.md +68 -0
  95. package/templates/.agent/skills/architecture/patterns-reference.md +50 -0
  96. package/templates/.agent/skills/architecture/trade-off-analysis.md +77 -0
  97. package/templates/.agent/skills/bash-linux/SKILL.md +199 -0
  98. package/templates/.agent/skills/behavioral-modes/SKILL.md +242 -0
  99. package/templates/.agent/skills/better-auth-patterns/SKILL.md +121 -0
  100. package/templates/.agent/skills/brainstorming/SKILL.md +163 -0
  101. package/templates/.agent/skills/brainstorming/dynamic-questioning.md +350 -0
  102. package/templates/.agent/skills/bullmq-worker/SKILL.md +124 -0
  103. package/templates/.agent/skills/clean-code/SKILL.md +201 -0
  104. package/templates/.agent/skills/code-review-checklist/SKILL.md +109 -0
  105. package/templates/.agent/skills/database-design/SKILL.md +52 -0
  106. package/templates/.agent/skills/database-design/database-selection.md +43 -0
  107. package/templates/.agent/skills/database-design/indexing.md +39 -0
  108. package/templates/.agent/skills/database-design/migrations.md +48 -0
  109. package/templates/.agent/skills/database-design/optimization.md +36 -0
  110. package/templates/.agent/skills/database-design/orm-selection.md +30 -0
  111. package/templates/.agent/skills/database-design/schema-design.md +56 -0
  112. package/templates/.agent/skills/database-design/scripts/schema_validator.py +172 -0
  113. package/templates/.agent/skills/deployment-procedures/SKILL.md +241 -0
  114. package/templates/.agent/skills/doc.md +177 -0
  115. package/templates/.agent/skills/documentation-templates/SKILL.md +194 -0
  116. package/templates/.agent/skills/feature-spec-writer/SKILL.md +76 -0
  117. package/templates/.agent/skills/frontend-design/SKILL.md +452 -0
  118. package/templates/.agent/skills/frontend-design/animation-guide.md +331 -0
  119. package/templates/.agent/skills/frontend-design/color-system.md +311 -0
  120. package/templates/.agent/skills/frontend-design/decision-trees.md +418 -0
  121. package/templates/.agent/skills/frontend-design/motion-graphics.md +306 -0
  122. package/templates/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  123. package/templates/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
  124. package/templates/.agent/skills/frontend-design/typography-system.md +345 -0
  125. package/templates/.agent/skills/frontend-design/ux-psychology.md +1116 -0
  126. package/templates/.agent/skills/frontend-design/visual-effects.md +383 -0
  127. package/templates/.agent/skills/game-development/2d-games/SKILL.md +119 -0
  128. package/templates/.agent/skills/game-development/3d-games/SKILL.md +135 -0
  129. package/templates/.agent/skills/game-development/SKILL.md +167 -0
  130. package/templates/.agent/skills/game-development/game-art/SKILL.md +185 -0
  131. package/templates/.agent/skills/game-development/game-audio/SKILL.md +190 -0
  132. package/templates/.agent/skills/game-development/game-design/SKILL.md +129 -0
  133. package/templates/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
  134. package/templates/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
  135. package/templates/.agent/skills/game-development/pc-games/SKILL.md +144 -0
  136. package/templates/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
  137. package/templates/.agent/skills/game-development/web-games/SKILL.md +150 -0
  138. package/templates/.agent/skills/geo-fundamentals/SKILL.md +156 -0
  139. package/templates/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  140. package/templates/.agent/skills/i18n-localization/SKILL.md +154 -0
  141. package/templates/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  142. package/templates/.agent/skills/intelligent-routing/SKILL.md +335 -0
  143. package/templates/.agent/skills/lint-and-validate/SKILL.md +45 -0
  144. package/templates/.agent/skills/lint-and-validate/scripts/lint_runner.py +184 -0
  145. package/templates/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  146. package/templates/.agent/skills/mcp-builder/SKILL.md +176 -0
  147. package/templates/.agent/skills/mobile-design/SKILL.md +394 -0
  148. package/templates/.agent/skills/mobile-design/decision-trees.md +516 -0
  149. package/templates/.agent/skills/mobile-design/mobile-backend.md +491 -0
  150. package/templates/.agent/skills/mobile-design/mobile-color-system.md +420 -0
  151. package/templates/.agent/skills/mobile-design/mobile-debugging.md +122 -0
  152. package/templates/.agent/skills/mobile-design/mobile-design-thinking.md +357 -0
  153. package/templates/.agent/skills/mobile-design/mobile-navigation.md +458 -0
  154. package/templates/.agent/skills/mobile-design/mobile-performance.md +767 -0
  155. package/templates/.agent/skills/mobile-design/mobile-testing.md +356 -0
  156. package/templates/.agent/skills/mobile-design/mobile-typography.md +433 -0
  157. package/templates/.agent/skills/mobile-design/platform-android.md +666 -0
  158. package/templates/.agent/skills/mobile-design/platform-ios.md +561 -0
  159. package/templates/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
  160. package/templates/.agent/skills/mobile-design/touch-psychology.md +537 -0
  161. package/templates/.agent/skills/neo-storage/SKILL.md +115 -0
  162. package/templates/.agent/skills/nextjs-api-route/SKILL.md +134 -0
  163. package/templates/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +351 -0
  164. package/templates/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
  165. package/templates/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -0
  166. package/templates/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
  167. package/templates/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
  168. package/templates/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
  169. package/templates/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -0
  170. package/templates/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
  171. package/templates/.agent/skills/nextjs-react-expert/9-cache-components.md +103 -0
  172. package/templates/.agent/skills/nextjs-react-expert/SKILL.md +293 -0
  173. package/templates/.agent/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
  174. package/templates/.agent/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
  175. package/templates/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
  176. package/templates/.agent/skills/parallel-agents/SKILL.md +175 -0
  177. package/templates/.agent/skills/performance-profiling/SKILL.md +143 -0
  178. package/templates/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
  179. package/templates/.agent/skills/plan-writing/SKILL.md +152 -0
  180. package/templates/.agent/skills/powershell-windows/SKILL.md +167 -0
  181. package/templates/.agent/skills/prisma-7-patterns/SKILL.md +91 -0
  182. package/templates/.agent/skills/python-patterns/SKILL.md +441 -0
  183. package/templates/.agent/skills/red-team-tactics/SKILL.md +199 -0
  184. package/templates/.agent/skills/rust-pro/SKILL.md +176 -0
  185. package/templates/.agent/skills/seo-fundamentals/SKILL.md +129 -0
  186. package/templates/.agent/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  187. package/templates/.agent/skills/server-management/SKILL.md +161 -0
  188. package/templates/.agent/skills/systematic-debugging/SKILL.md +109 -0
  189. package/templates/.agent/skills/tailwind-patterns/SKILL.md +269 -0
  190. package/templates/.agent/skills/tdd-workflow/SKILL.md +149 -0
  191. package/templates/.agent/skills/testing-patterns/SKILL.md +178 -0
  192. package/templates/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
  193. package/templates/.agent/skills/uu-pdp-feature-check/SKILL.md +116 -0
  194. package/templates/.agent/skills/vibe-buildplan/SKILL.md +232 -0
  195. package/templates/.agent/skills/vibe-prd/SKILL.md +226 -0
  196. package/templates/.agent/skills/vibe-research/SKILL.md +162 -0
  197. package/templates/.agent/skills/vibe-techdesign/SKILL.md +195 -0
  198. package/templates/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
  199. package/templates/.agent/skills/vulnerability-scanner/checklists.md +121 -0
  200. package/templates/.agent/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  201. package/templates/.agent/skills/web-design-guidelines/SKILL.md +57 -0
  202. package/templates/.agent/skills/webapp-testing/SKILL.md +187 -0
  203. package/templates/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  204. package/templates/.agent/skills/xendit-integration/SKILL.md +100 -0
  205. package/templates/.agent/snippets/@react-component-template.tsx +29 -0
  206. package/templates/.agent/workflows/brainstorm.md +113 -0
  207. package/templates/.agent/workflows/create.md +59 -0
  208. package/templates/.agent/workflows/db-migrate.md +26 -0
  209. package/templates/.agent/workflows/debug.md +103 -0
  210. package/templates/.agent/workflows/deploy.md +35 -0
  211. package/templates/.agent/workflows/dev-reset.md +40 -0
  212. package/templates/.agent/workflows/enhance.md +63 -0
  213. package/templates/.agent/workflows/git-commit.md +24 -0
  214. package/templates/.agent/workflows/health-check.md +34 -0
  215. package/templates/.agent/workflows/new-feature.md +32 -0
  216. package/templates/.agent/workflows/orchestrate.md +237 -0
  217. package/templates/.agent/workflows/plan.md +89 -0
  218. package/templates/.agent/workflows/preview.md +81 -0
  219. package/templates/.agent/workflows/status.md +86 -0
  220. package/templates/.agent/workflows/test.md +144 -0
  221. package/templates/.agent/workflows/ui-ux-pro-max.md +296 -0
  222. package/templates/.agent/workflows/vibe-plan.md +133 -0
  223. package/templates/.agent/workflows/vibe-recap.md +17 -0
  224. package/templates/.antigravity/rules.md +64 -0
  225. package/templates/AGENTS.md +268 -0
  226. package/templates/docs/00A-PROJECT-CHARTER.md +33 -0
  227. package/templates/docs/00B-BRD.md +25 -0
  228. package/templates/docs/01-PRD.md +122 -0
  229. package/templates/docs/01B-SRS-LENGKAP.md +60 -0
  230. package/templates/docs/02-TECH-DESIGN.md +491 -0
  231. package/templates/docs/03-UI-GUIDELINES.md +301 -0
  232. package/templates/docs/04-BACKLOG.md +127 -0
  233. package/templates/docs/05-DEPLOYMENT.md +363 -0
  234. package/templates/docs/06-DEVELOPMENT-LOG.md +78 -0
  235. package/templates/specs/README.md +54 -0
@@ -0,0 +1,363 @@
1
+ # 05 — Deployment Guide
2
+ > Panduan lengkap setup VPS Biznet Gio + Coolify + CI/CD.
3
+
4
+ ---
5
+
6
+ ## 1. Arsitektur Deployment
7
+
8
+ ```
9
+ GitHub (push to main)
10
+
11
+ ▼ GitHub Actions (lint + build check)
12
+
13
+ ▼ Coolify Webhook (auto-deploy)
14
+
15
+ ▼ Docker Build
16
+
17
+ ▼ Traefik (reverse proxy + SSL)
18
+
19
+ ▼ https://[domain].com
20
+ ```
21
+
22
+ ---
23
+
24
+ ## 2. Setup Awal VPS Biznet Gio
25
+
26
+ ### Spesifikasi Minimum
27
+
28
+ | Resource | MVP | Scaling |
29
+ |----------|-----|---------|
30
+ | CPU | 2 vCPU | 4–8 vCPU |
31
+ | RAM | 4 GB | 8–16 GB |
32
+ | Storage | 60 GB SSD | 100 GB SSD |
33
+ | OS | Ubuntu 22.04 LTS | Ubuntu 22.04 LTS |
34
+
35
+ > ⚠️ **Production:** Pisahkan VPS database dari VPS app. PostgreSQL dan Next.js di server yang sama akan menyebabkan resource contention saat traffic tinggi.
36
+
37
+ ### Initial Server Setup
38
+ ```bash
39
+ # Update system
40
+ sudo apt update && sudo apt upgrade -y
41
+ sudo apt install -y curl git ufw
42
+
43
+ # Firewall
44
+ sudo ufw allow 22 # SSH
45
+ sudo ufw allow 80 # HTTP
46
+ sudo ufw allow 443 # HTTPS
47
+ sudo ufw allow 8000 # Coolify (setup awal)
48
+ sudo ufw enable
49
+
50
+ # Install Docker
51
+ curl -fsSL https://get.docker.com | sh
52
+ sudo usermod -aG docker $USER
53
+ newgrp docker
54
+
55
+ # Install Coolify
56
+ curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash
57
+ ```
58
+
59
+ Setelah install: buka `http://[IP-VPS]:8000`, buat akun admin.
60
+
61
+ ---
62
+
63
+ ## 3. Coolify Configuration
64
+
65
+ ### Services yang Di-deploy via Coolify
66
+
67
+ | Service | Port | Type |
68
+ |---------|------|------|
69
+ | Next.js Web | 3000 | Dockerfile |
70
+ | Socket.io + Worker | 3001 | Dockerfile |
71
+ | PostgreSQL | 5432 | Database |
72
+ | Redis | 6379 | Database |
73
+
74
+ ### Setup Aplikasi di Coolify
75
+ 1. New Resource → Application
76
+ 2. Source: GitHub → pilih repo
77
+ 3. Branch: `main`
78
+ 4. Build Pack: `Dockerfile`
79
+ 5. Port: sesuai service
80
+ 6. Domain: `[domain].com`
81
+ 7. SSL: Enable (auto via Let's Encrypt / Traefik)
82
+
83
+ ### Environment Variables di Coolify
84
+ Masukkan semua env vars production di Coolify UI — **JANGAN** di `.env` yang ter-commit:
85
+ ```
86
+ DATABASE_URL=postgresql://user:pass@postgres:5432/myapp_prod
87
+ REDIS_URL=redis://redis:6379
88
+ BETTER_AUTH_SECRET=[generate baru untuk prod]
89
+ BETTER_AUTH_URL=https://[domain].com
90
+ XENDIT_SECRET_KEY=xnd_production_...
91
+ XENDIT_CALLBACK_TOKEN=[random string panjang]
92
+ XENDIT_FEE_RULE_ID=
93
+ NEO_ENDPOINT=https://nos.wjv-1.neo.id
94
+ NEO_ACCESS_KEY=
95
+ NEO_SECRET_KEY=
96
+ NEO_BUCKET_NAME=myapp-prod
97
+ RESEND_API_KEY=
98
+ NEXT_PUBLIC_APP_URL=https://[domain].com
99
+ NODE_ENV=production
100
+ ```
101
+
102
+ ---
103
+
104
+ ## 4. Dockerfile
105
+
106
+ ### Next.js (`apps/web/Dockerfile`)
107
+ ```dockerfile
108
+ FROM node:22-alpine AS base
109
+ RUN apk add --no-cache libc6-compat
110
+
111
+ FROM base AS deps
112
+ WORKDIR /app
113
+ COPY package*.json ./
114
+ RUN npm ci
115
+
116
+ FROM base AS builder
117
+ WORKDIR /app
118
+ COPY --from=deps /app/node_modules ./node_modules
119
+ COPY . .
120
+ RUN npx prisma generate
121
+ RUN npm run build
122
+
123
+ FROM base AS runner
124
+ WORKDIR /app
125
+ ENV NODE_ENV=production
126
+ RUN addgroup --system --gid 1001 nodejs
127
+ RUN adduser --system --uid 1001 nextjs
128
+ COPY --from=builder /app/.next/standalone ./
129
+ COPY --from=builder /app/.next/static ./.next/static
130
+ COPY --from=builder /app/public ./public
131
+ USER nextjs
132
+ EXPOSE 3000
133
+ CMD ["node", "server.js"]
134
+ ```
135
+
136
+ ### Socket.io + Worker (`apps/worker/Dockerfile`)
137
+ ```dockerfile
138
+ FROM node:22-alpine
139
+ WORKDIR /app
140
+ COPY package*.json ./
141
+ RUN npm ci --only=production
142
+ COPY . .
143
+ EXPOSE 3001
144
+ CMD ["node", "server.js"]
145
+ ```
146
+
147
+ ---
148
+
149
+ ## 5. GitHub Actions CI/CD
150
+
151
+ ### `.github/workflows/deploy.yml`
152
+ ```yaml
153
+ name: Deploy Production
154
+
155
+ on:
156
+ push:
157
+ branches: [main]
158
+
159
+ jobs:
160
+ check:
161
+ runs-on: ubuntu-latest
162
+ steps:
163
+ - uses: actions/checkout@v4
164
+ - uses: actions/setup-node@v4
165
+ with:
166
+ node-version: '22'
167
+ cache: 'npm'
168
+ - run: npm ci
169
+ - run: npm run type-check
170
+ - run: npm run lint
171
+
172
+ deploy:
173
+ needs: check
174
+ runs-on: ubuntu-latest
175
+ steps:
176
+ - name: Trigger Coolify Deploy
177
+ run: |
178
+ curl -X POST \
179
+ -H "Authorization: Bearer ${{ secrets.COOLIFY_TOKEN }}" \
180
+ "https://[IP-VPS]:8000/api/v1/deploy?uuid=${{ secrets.COOLIFY_APP_UUID }}"
181
+ ```
182
+
183
+ ### GitHub Secrets yang Diperlukan
184
+ Di: Settings → Secrets → Actions
185
+ ```
186
+ COOLIFY_TOKEN → dari Coolify: Settings → API Keys
187
+ COOLIFY_APP_UUID → UUID aplikasi di Coolify
188
+ ```
189
+
190
+ ---
191
+
192
+ ## 6. Database Migration (Production)
193
+
194
+ ```bash
195
+ # Jalankan migration di production via Coolify terminal atau SSH
196
+ cd /app
197
+ npx prisma migrate deploy
198
+
199
+ # Jangan pernah pakai migrate dev di production!
200
+ # migrate dev = reset + seed (bahaya di prod)
201
+ # migrate deploy = apply pending migrations saja
202
+ ```
203
+
204
+ ### Supabase CLI untuk manage migrations
205
+ ```bash
206
+ npm install -g prisma
207
+ # Generate migration baru (di local)
208
+ npx prisma migrate dev --name [nama_migration]
209
+ # Push ke production
210
+ npx prisma migrate deploy
211
+ ```
212
+
213
+ ---
214
+
215
+ ## 7. NEO Object Storage Setup
216
+
217
+ ### Buat Bucket di Portal Biznet Gio
218
+ 1. Login ke https://portal.biznetgio.com
219
+ 2. NEO Object Storage → Create Bucket
220
+ 3. Nama bucket: `myapp-prod`
221
+ 4. ACL: Private (akses via presigned URL)
222
+ 5. Salin Access Key + Secret Key → masukkan ke env vars Coolify
223
+
224
+ ### Konfigurasi CORS (untuk upload langsung dari browser)
225
+ ```json
226
+ {
227
+ "CORSRules": [{
228
+ "AllowedOrigins": ["https://[domain].com"],
229
+ "AllowedMethods": ["GET", "PUT", "POST"],
230
+ "AllowedHeaders": ["*"],
231
+ "MaxAgeSeconds": 3000
232
+ }]
233
+ }
234
+ ```
235
+
236
+ ---
237
+
238
+ ## 8. Backup Strategy
239
+
240
+ ### Backup PostgreSQL Harian ke NEO Object Storage
241
+ ```bash
242
+ #!/bin/bash
243
+ # /home/ubuntu/backup-db.sh
244
+
245
+ DATE=$(date +%Y%m%d_%H%M%S)
246
+ BACKUP_FILE="backup_${DATE}.sql.gz"
247
+ BUCKET="myapp-backups"
248
+
249
+ # Dump database
250
+ docker exec postgres pg_dump -U produser myapp_prod | gzip > /tmp/${BACKUP_FILE}
251
+
252
+ # Upload ke NEO Object Storage
253
+ s3cmd put /tmp/${BACKUP_FILE} s3://${BUCKET}/${BACKUP_FILE} \
254
+ --host=nos.wjv-1.neo.id \
255
+ --host-bucket="%(bucket)s.nos.wjv-1.neo.id" \
256
+ --access_key=${NEO_ACCESS_KEY} \
257
+ --secret_key=${NEO_SECRET_KEY}
258
+
259
+ # Hapus backup lokal
260
+ rm /tmp/${BACKUP_FILE}
261
+
262
+ # Hapus backup lebih dari 7 hari
263
+ s3cmd ls s3://${BUCKET}/ | grep backup_ | sort | head -n -7 | \
264
+ awk '{print $4}' | xargs -I{} s3cmd del {}
265
+ ```
266
+
267
+ ### Setup Cron
268
+ ```bash
269
+ # Jalankan backup setiap hari jam 02:00 WIB
270
+ crontab -e
271
+ 0 19 * * * /home/ubuntu/backup-db.sh >> /var/log/backup.log 2>&1
272
+ ```
273
+
274
+ ---
275
+
276
+ ## 9. DNS & Domain Setup
277
+
278
+ ### Cloudflare DNS Records
279
+ ```
280
+ A @ [IP-VPS] # apex domain
281
+ A www [IP-VPS] # www
282
+ A api [IP-VPS] # API subdomain (jika terpisah)
283
+ A ws [IP-VPS] # Socket.io (jika butuh subdomain)
284
+ ```
285
+
286
+ ### Cloudflare Settings
287
+ - **SSL/TLS:** Full (strict)
288
+ - **Auto HTTPS Redirect:** On
289
+ - **WebSocket:** On (untuk Socket.io)
290
+ - **Cache Level:** Standard
291
+
292
+ ### ⚠️ Wajib: Accept Cloudflare DPA
293
+ Setelah domain aktif di Cloudflare, accept Data Processing Addendum:
294
+ 1. Login Cloudflare → klik nama akun kanan atas
295
+ 2. **My Profile → Privacy → Data Processing Addendum**
296
+ 3. Klik "Accept DPA"
297
+
298
+ Ini menjadikan Cloudflare sub-processor sah sesuai UU PDP. Tanpa ini, IP address pengguna yang diproses Cloudflare tidak memiliki mekanisme transfer lintas negara yang sah.
299
+
300
+ > ⚠️ Socket.io butuh WebSocket support — pastikan Cloudflare proxy diaktifkan dengan setting WebSocket = On, atau bypass proxy untuk subdomain Socket.io.
301
+
302
+ ---
303
+
304
+ ## 10. Deployment Checklist
305
+
306
+ ### Sebelum Deploy ke Production
307
+ - [ ] `npm run build` sukses tanpa error di local
308
+ - [ ] `npm run lint` bersih
309
+ - [ ] `npx prisma migrate deploy` sudah dijalankan
310
+ - [ ] Semua env vars sudah diset di Coolify
311
+ - [ ] Xendit callback URL sudah diupdate ke domain production
312
+ - [ ] Firebase project sudah switch ke production — **hanya FCM yang diaktifkan** (Analytics/Crashlytics/Performance = OFF)
313
+ - [ ] Backup database terakhir tersimpan
314
+ - [ ] Test manual di staging (jika ada)
315
+
316
+ ### UU PDP Compliance (sekali saja, sebelum go-live pertama)
317
+ - [ ] **Cloudflare DPA** sudah di-accept → Dashboard → My Profile → Privacy → Data Processing Addendum
318
+ - [ ] **Firebase Data Processing Terms** sudah di-accept → Firebase Console → Project Settings → Usage and billing
319
+ - [ ] Privacy Policy mencantumkan Cloudflare, Firebase, Resend sebagai **sub-processor**
320
+ - [ ] Halaman Privacy Policy & Terms of Service tersedia dalam Bahasa Indonesia di app
321
+ - [ ] Consent flow saat registrasi aktif (checkbox **tidak** pre-checked)
322
+ - [ ] Tabel `consent_records` ada di database dan berfungsi
323
+ - [ ] Fitur **hapus akun** tersedia di settings pengguna
324
+ - [ ] Fitur **unduh data saya** tersedia di settings pengguna
325
+
326
+ ### Setelah Deploy
327
+ - [ ] Aplikasi bisa diakses via domain
328
+ - [ ] SSL certificate valid (https berjalan)
329
+ - [ ] Login berhasil
330
+ - [ ] Test pembayaran Xendit (mode production)
331
+ - [ ] Cek logs tidak ada error critical di Coolify
332
+ - [ ] Uptime Kuma mendeteksi service UP
333
+ - [ ] Monitor resource VPS 15 menit pertama
334
+
335
+ ---
336
+
337
+ ## 11. Troubleshooting
338
+
339
+ ### Container tidak mau start
340
+ ```bash
341
+ # Cek logs di Coolify UI atau via SSH
342
+ docker logs [container-name] --tail 100 -f
343
+ docker ps -a # lihat status semua container
344
+ ```
345
+
346
+ ### Database connection error
347
+ ```bash
348
+ # Test koneksi PostgreSQL
349
+ docker exec postgres psql -U produser -d myapp_prod -c "SELECT 1"
350
+ # Cek env DATABASE_URL sudah benar
351
+ ```
352
+
353
+ ### Xendit webhook tidak masuk
354
+ 1. Cek Xendit Dashboard → Settings → Webhooks
355
+ 2. Pastikan URL sudah benar dan HTTPS
356
+ 3. Test dengan Xendit webhook tester
357
+ 4. Cek logs di Coolify untuk error
358
+ 5. Pastikan `XENDIT_CALLBACK_TOKEN` sama antara Xendit dan env vars
359
+
360
+ ### Socket.io tidak connect
361
+ 1. Pastikan port 3001 tidak diblok firewall
362
+ 2. Pastikan Cloudflare WebSocket = On
363
+ 3. Cek CORS origin di Socket.io server sudah include domain production
@@ -0,0 +1,78 @@
1
+ # 06 — Development Log
2
+ > File ini **append-only** — JANGAN edit entry lama, hanya tambah di bawah.
3
+ > Catat setiap keputusan teknis, perubahan arsitektur, dan lesson learned.
4
+ > AI membaca ini untuk memahami kenapa sebuah keputusan dibuat.
5
+
6
+ ---
7
+
8
+ ## Cara Menambah Entry
9
+
10
+ ```
11
+ ## YYYY-MM-DD
12
+
13
+ ### [KEPUTUSAN] Judul singkat
14
+ **Konteks:** Apa situasinya?
15
+ **Keputusan:** Apa yang dipilih?
16
+ **Alasan:** Kenapa ini dipilih vs alternatif lain?
17
+ **Dampak:** Apa konsekuensinya?
18
+ ```
19
+
20
+ **Kategori:** `[KEPUTUSAN]` `[PERUBAHAN]` `[PROBLEM]` `[RISET]` `[REGULASI]` `[DEPLOY]`
21
+
22
+ ---
23
+
24
+ ## Maret 2026
25
+
26
+ ### [KEPUTUSAN] Stack teknologi final
27
+ **Konteks:** Memilih stack untuk aplikasi multi-platform (Web + Mobile + Marketplace).
28
+ **Keputusan:** Next.js 16.1 + Flutter 3.41.2 + PostgreSQL 17 + Prisma 7 + Better Auth 1.5 + Coolify di Biznet Gio VPS.
29
+ **Alasan:** Next.js 16 App Router terbaik untuk SSR/SSG. Flutter untuk single codebase Android+iOS. Biznet Gio untuk data residency Indonesia. Coolify untuk self-hosted PaaS tanpa vendor lock-in.
30
+ **Dampak:** Semua developer wajib familiar dengan App Router, async params, dan async headers() di Next.js 16.
31
+
32
+ ### [KEPUTUSAN] Data fetching: Server Components default + TanStack Query client
33
+ **Konteks:** Memilih strategi data fetching untuk Next.js 16.
34
+ **Keputusan:** Server Components (default, sebagian besar data) + TanStack Query (client mutations/optimistic UI/realtime).
35
+ **Alasan:** Server Components = zero bundle, SEO, langsung query Prisma. TanStack Query (12.3M weekly downloads) lebih powerful dari SWR.
36
+ **Dampak:** Default fetch di server — TanStack Query hanya untuk client interaktif.
37
+
38
+ ### [KEPUTUSAN] Arsitektur: Modular Monolith
39
+ **Konteks:** Memilih arsitektur untuk tim 2–3 orang.
40
+ **Keputusan:** Modular Monolith — 1 Next.js app + 1 BullMQ Worker container.
41
+ **Alasan:** Di bawah 10 developer monolith selalu lebih produktif. Expert consensus 2025: microservices di tahap ini = "trading a cluttered closet for a burning warehouse".
42
+ **Dampak:** Kode per domain (auth/, payment/, orders/). Extract microservice hanya jika ada bottleneck teridentifikasi.
43
+
44
+ ### [KEPUTUSAN] CDN: Cloudflare Free + NEO Object Storage
45
+ **Konteks:** Strategi CDN dan file storage.
46
+ **Keputusan:** Cloudflare Free (DNS/DDoS/proxy) + NEO Object Storage Biznet Gio.
47
+ **Alasan:** Cloudflare + VPS Indonesia cukup untuk user lokal. NEO sudah di stack, data di Indonesia (comply UU PDP). Catatan: November 2025 Kominfo ancam blokir Cloudflare — Bunny.net bisa jadi backup.
48
+ **Dampak:** Wajib accept Cloudflare DPA. NEO bucket = private, akses via presigned URL.
49
+
50
+ ### [KEPUTUSAN] Push Notifications: Firebase FCM only
51
+ **Konteks:** Provider push notif untuk Flutter.
52
+ **Keputusan:** Firebase FCM — hanya `firebase_messaging`.
53
+ **Alasan:** Gratis, unlimited, official Google SDK Flutter. Android dari Play Store wajib FCM. OneSignal tetap pakai FCM di balik layar.
54
+ **Dampak:** JANGAN aktifkan Firebase Analytics/Crashlytics/Performance — pakai Sentry. Accept Firebase Data Processing Terms di Console.
55
+
56
+ ### [KEPUTUSAN] Payment Gateway: Xendit
57
+ **Konteks:** Perlu split payment native untuk marketplace.
58
+ **Keputusan:** Xendit.
59
+ **Alasan:** Satu-satunya gateway Indonesia dengan native split payment API. Terdaftar OJK. Fee: VA Rp 4.000, QRIS 0.7%, CC 2.9%+Rp2.000.
60
+ **Dampak:** Platform tidak pernah tampung dana. Hanya install di app yang ada transaksi keuangan.
61
+
62
+ ### [REGULASI] UU PDP — Cloudflare DPA + Firebase DPT
63
+ **Konteks:** UU PDP No. 27/2022 berlaku efektif Oktober 2024.
64
+ **Keputusan:** Accept Cloudflare DPA + Firebase Data Processing Terms.
65
+ **Alasan:** UU PDP tidak wajibkan semua data di Indonesia — yang wajib adalah mekanisme transfer sah. DPA/DPT memenuhi syarat. PostgreSQL tetap di Biznet Gio.
66
+ **Dampak:** Privacy Policy wajib cantumkan Cloudflare, Firebase, Resend sebagai sub-processor. Data breach: lapor Komdigi + user dalam 72 jam.
67
+
68
+ ### [KEPUTUSAN] Antigravity: Rules + 8 Skills + 6 Workflows + MCP
69
+ **Konteks:** Standarisasi cara kerja AI agent.
70
+ **Keputusan:** Rules + 8 Skills + 6 Workflows + MCP servers (Context7, GitHub, PostgreSQL, Playwright, Sentry, Docker).
71
+ **Alasan:** Rules = selalu aktif. Skills = pengetahuan stack on-demand. Workflows = automation. Context7 kritis untuk Prisma 7 + Next.js 16 yang sering breaking change.
72
+ **Dampak:** Developer baru langsung dapat config yang sama. Wajib `use context7` saat coding Prisma/Next.js.
73
+
74
+ ### [PERUBAHAN] Next.js 16: `headers()` harus di-await
75
+ **Konteks:** Setelah setup ditemukan Next.js 16 membuat `headers()` juga async.
76
+ **Perubahan:** Semua `headers()` harus `await` — termasuk di Better Auth `getSession()` dan Xendit webhook.
77
+ **Kenapa:** Breaking change Next.js 16.
78
+ **Dampak:** Pattern baru: `await auth.api.getSession({ headers: await headers() })` dan `(await headers()).get('x-callback-token')`. Ditambahkan ke rules dan semua code examples.
@@ -0,0 +1,54 @@
1
+ # specs/ — Feature Spec Files
2
+
3
+ Folder ini berisi spec singkat per fitur **sebelum** AI mulai coding.
4
+ Konsep dari KhazP/vibe-coding-prompt-template — "agent handoff artifacts".
5
+
6
+ ## Kenapa Perlu Ini?
7
+
8
+ Antigravity agent bekerja terbaik dengan konteks yang terfokus.
9
+ Daripada langsung bilang "buat fitur checkout", tulis spec dulu di sini —
10
+ agent punya blueprint yang jelas dan tidak akan salah arah.
11
+
12
+ ## Format File
13
+
14
+ Nama file: `NNN-nama-fitur.md` (contoh: `001-checkout.md`, `002-profile-edit.md`)
15
+
16
+ ```markdown
17
+ # [NNN] Nama Fitur
18
+
19
+ **Status:** Draft / Ready / In Progress / Done
20
+ **Sprint:** [nomor sprint]
21
+ **Assignee:** [nama atau "AI"]
22
+ **Estimasi:** S / M / L
23
+
24
+ ## Tujuan
25
+ [1-2 kalimat: kenapa fitur ini dibangun]
26
+
27
+ ## Acceptance Criteria
28
+ - [ ] [kriteria 1 — testable, konkret]
29
+ - [ ] [kriteria 2]
30
+ - [ ] [kriteria 3]
31
+
32
+ ## File yang Akan Diubah
33
+ - `app/(dashboard)/[path]/page.tsx`
34
+ - `lib/[module]/index.ts`
35
+ - `prisma/schema.prisma` (jika ada perubahan DB)
36
+
37
+ ## API / Data yang Dibutuhkan
38
+ - `GET /api/[resource]` — [deskripsi]
39
+ - `POST /api/[resource]` — [deskripsi]
40
+
41
+ ## Constraint
42
+ - Jangan ubah: [komponen/file yang tidak boleh diubah]
43
+ - Dependensi: [fitur lain yang harus selesai dulu]
44
+
45
+ ## Catatan Tambahan
46
+ [hal-hal penting lainnya]
47
+ ```
48
+
49
+ ## Cara Pakai di Antigravity
50
+
51
+ ```
52
+ Baca specs/001-checkout.md, lalu implementasikan sesuai acceptance criteria.
53
+ Jangan ubah file selain yang tercantum di "File yang Akan Diubah".
54
+ ```