create-vasvibe 0.1.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 +84 -0
- package/bin/cli.mjs +9 -0
- package/package.json +45 -0
- package/src/git.mjs +47 -0
- package/src/index.mjs +178 -0
- package/src/prompts.mjs +87 -0
- package/src/scaffold.mjs +66 -0
- package/src/utils.mjs +91 -0
- package/template/.agents/skills/developer/SKILL.md +93 -0
- package/template/.agents/skills/find-skills/SKILL.md +142 -0
- package/template/.agents/skills/penetration-testing/SKILL.md +94 -0
- package/template/.agents/skills/penetration-testing/references/automated-penetration-testing-framework.md +328 -0
- package/template/.agents/skills/penetration-testing/references/burp-suite-automation-script.md +135 -0
- package/template/.agents/skills/penetration-testing/scripts/security-checklist.sh +30 -0
- package/template/.agents/skills/pm/SKILL.md +202 -0
- package/template/.agents/skills/ui-ux-pro-max/SKILL.md +659 -0
- package/template/.agents/skills/ui-ux-pro-max/data/_sync_all.py +414 -0
- package/template/.agents/skills/ui-ux-pro-max/data/app-interface.csv +31 -0
- package/template/.agents/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/template/.agents/skills/ui-ux-pro-max/data/colors.csv +162 -0
- package/template/.agents/skills/ui-ux-pro-max/data/design.csv +1776 -0
- package/template/.agents/skills/ui-ux-pro-max/data/draft.csv +1779 -0
- package/template/.agents/skills/ui-ux-pro-max/data/google-fonts.csv +1924 -0
- package/template/.agents/skills/ui-ux-pro-max/data/icons.csv +106 -0
- package/template/.agents/skills/ui-ux-pro-max/data/landing.csv +35 -0
- package/template/.agents/skills/ui-ux-pro-max/data/products.csv +162 -0
- package/template/.agents/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -0
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -0
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -0
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/template/.agents/skills/ui-ux-pro-max/data/styles.csv +85 -0
- package/template/.agents/skills/ui-ux-pro-max/data/typography.csv +74 -0
- package/template/.agents/skills/ui-ux-pro-max/data/ui-reasoning.csv +162 -0
- package/template/.agents/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/template/.agents/skills/ui-ux-pro-max/scripts/core.py +262 -0
- package/template/.agents/skills/ui-ux-pro-max/scripts/design_system.py +1148 -0
- package/template/.agents/skills/ui-ux-pro-max/scripts/search.py +114 -0
- package/template/.claude/agents/analyst.md +61 -0
- package/template/.claude/agents/developer.md +144 -0
- package/template/.claude/agents/document.md +18 -0
- package/template/.claude/agents/fixer.md +67 -0
- package/template/.claude/agents/initiator.md +58 -0
- package/template/.claude/agents/pm.md +371 -0
- package/template/.claude/agents/sysarch.md +356 -0
- package/template/.claude/agents/tester.md +83 -0
- package/template/.claude/skills/find-skills/SKILL.md +142 -0
- package/template/.claude/skills/penetration-testing/SKILL.md +94 -0
- package/template/.claude/skills/penetration-testing/references/automated-penetration-testing-framework.md +328 -0
- package/template/.claude/skills/penetration-testing/references/burp-suite-automation-script.md +135 -0
- package/template/.claude/skills/penetration-testing/scripts/security-checklist.sh +30 -0
- package/template/.claude/skills/ui-ux-pro-max/SKILL.md +659 -0
- package/template/.claude/skills/ui-ux-pro-max/data/_sync_all.py +414 -0
- package/template/.claude/skills/ui-ux-pro-max/data/app-interface.csv +31 -0
- package/template/.claude/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/template/.claude/skills/ui-ux-pro-max/data/colors.csv +162 -0
- package/template/.claude/skills/ui-ux-pro-max/data/design.csv +1776 -0
- package/template/.claude/skills/ui-ux-pro-max/data/draft.csv +1779 -0
- package/template/.claude/skills/ui-ux-pro-max/data/google-fonts.csv +1924 -0
- package/template/.claude/skills/ui-ux-pro-max/data/icons.csv +106 -0
- package/template/.claude/skills/ui-ux-pro-max/data/landing.csv +35 -0
- package/template/.claude/skills/ui-ux-pro-max/data/products.csv +162 -0
- package/template/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -0
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -0
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -0
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/template/.claude/skills/ui-ux-pro-max/data/styles.csv +85 -0
- package/template/.claude/skills/ui-ux-pro-max/data/typography.csv +74 -0
- package/template/.claude/skills/ui-ux-pro-max/data/ui-reasoning.csv +162 -0
- package/template/.claude/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/template/.claude/skills/ui-ux-pro-max/scripts/core.py +262 -0
- package/template/.claude/skills/ui-ux-pro-max/scripts/design_system.py +1148 -0
- package/template/.claude/skills/ui-ux-pro-max/scripts/search.py +114 -0
- package/template/.github/prompts/analyst.prompt.md +58 -0
- package/template/.github/prompts/developer.prompt.md +100 -0
- package/template/.github/prompts/document.prompt.md +15 -0
- package/template/.github/prompts/fixer.prompt.md +64 -0
- package/template/.github/prompts/initiator.prompt.md +55 -0
- package/template/.github/prompts/pm.prompt.md +177 -0
- package/template/.github/prompts/sysarch.prompt.md +352 -0
- package/template/.github/prompts/tester.prompt.md +80 -0
- package/template/.opencode/commands/analyst.md +61 -0
- package/template/.opencode/commands/developer.md +174 -0
- package/template/.opencode/commands/document.md +18 -0
- package/template/.opencode/commands/fixer.md +67 -0
- package/template/.opencode/commands/initiator.md +58 -0
- package/template/.opencode/commands/pm.md +348 -0
- package/template/.opencode/commands/sysarch.md +356 -0
- package/template/.opencode/commands/tester.md +83 -0
- package/template/.opencode/skills/penetration-testing/SKILL.md +94 -0
- package/template/.opencode/skills/penetration-testing/references/automated-penetration-testing-framework.md +328 -0
- package/template/.opencode/skills/penetration-testing/references/burp-suite-automation-script.md +135 -0
- package/template/.opencode/skills/penetration-testing/scripts/security-checklist.sh +30 -0
- package/template/.opencode/skills/ui-ux-pro-max/SKILL.md +659 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/_sync_all.py +414 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/app-interface.csv +31 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/colors.csv +162 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/design.csv +1776 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/draft.csv +1779 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/google-fonts.csv +1924 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/icons.csv +106 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/landing.csv +35 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/products.csv +162 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/styles.csv +85 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/typography.csv +74 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/ui-reasoning.csv +162 -0
- package/template/.opencode/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/template/.opencode/skills/ui-ux-pro-max/scripts/core.py +262 -0
- package/template/.opencode/skills/ui-ux-pro-max/scripts/design_system.py +1148 -0
- package/template/.opencode/skills/ui-ux-pro-max/scripts/search.py +114 -0
- package/template/GIT_STRUCTURE_GUIDE.md +270 -0
- package/template/PROJECT_README.example.md +81 -0
- package/template/README.md +52 -0
- package/template/_gitignore +148 -0
- package/template/agent/workflows/analyst.md +58 -0
- package/template/agent/workflows/developer.md +66 -0
- package/template/agent/workflows/document.md +15 -0
- package/template/agent/workflows/fixer.md +64 -0
- package/template/agent/workflows/initiator.md +55 -0
- package/template/agent/workflows/pm.md +177 -0
- package/template/agent/workflows/sysacrh.md +352 -0
- package/template/agent/workflows/tester.md +80 -0
- package/template/codes/.gitkeep +1 -0
- package/template/project_overview_example.md +41 -0
- package/template/skills-lock.json +11 -0
- package/template/specifications/.gitkeep +1 -0
- package/template/tests/.gitkeep +1 -0
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
**Role:** System Architecture & Operations Specialist
|
|
2
|
+
**Agent Name:** SysArch Agent
|
|
3
|
+
**Responsibility:** Infrastructure Planning, Server Specifications, Scalability Analysis, and Operational Requirements
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🎯 Your Mission
|
|
8
|
+
|
|
9
|
+
You are a **System Architecture & Operations Specialist** responsible for designing robust, scalable, and cost-effective infrastructure for the VAS Vibe Reservation System. Your role is to:
|
|
10
|
+
|
|
11
|
+
1. **Analyze application requirements** from project documentation, specifications, and codebase
|
|
12
|
+
2. **Design server specifications** that match current and projected workloads
|
|
13
|
+
3. **Plan infrastructure architecture** for development, staging, and production environments
|
|
14
|
+
4. **Estimate resource requirements** (CPU, RAM, Storage, Bandwidth)
|
|
15
|
+
5. **Recommend deployment strategies** (bare metal, VPS, cloud, containerized)
|
|
16
|
+
6. **Create operational guidelines** for monitoring, backup, scaling, and disaster recovery
|
|
17
|
+
7. **Optimize costs** while maintaining performance and reliability
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 📋 Standard Operating Procedure (SOP)
|
|
22
|
+
|
|
23
|
+
### Phase 1: Application Analysis & Discovery
|
|
24
|
+
|
|
25
|
+
**Step 1: Read Project Documentation**
|
|
26
|
+
```bash
|
|
27
|
+
# Required reading (in order):
|
|
28
|
+
1. project_overview.md - Business context, user base, features
|
|
29
|
+
2. specifications/*.md - All technical specifications
|
|
30
|
+
3. codes/package.json - Application dependencies and scripts
|
|
31
|
+
4. codes/prisma/schema.prisma - Database schema and relationships
|
|
32
|
+
5. codes/docker-compose.yml - Current containerization setup
|
|
33
|
+
6. task/task_list.md - Feature roadmap and priorities
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Step 2: Analyze Codebase Patterns**
|
|
37
|
+
- Check `codes/app/api/**/*.ts` for API endpoints
|
|
38
|
+
- Check `codes/lib/**/*.ts` for business logic
|
|
39
|
+
- Check `codes/components/**/*.tsx` for frontend complexity
|
|
40
|
+
- Identify resource-intensive operations (file uploads, reports, exports)
|
|
41
|
+
- Count total routes, database tables, relationships
|
|
42
|
+
|
|
43
|
+
**Step 3: Document Current Architecture**
|
|
44
|
+
```markdown
|
|
45
|
+
Create: `architecture/current_state.md`
|
|
46
|
+
- Technology stack summary
|
|
47
|
+
- Database relationships count
|
|
48
|
+
- API endpoints count
|
|
49
|
+
- File storage requirements
|
|
50
|
+
- Third-party integrations
|
|
51
|
+
- Current Docker setup analysis
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
### Phase 2: User Requirements Gathering
|
|
57
|
+
|
|
58
|
+
**Step 4: Ask Critical Questions to User**
|
|
59
|
+
|
|
60
|
+
You **MUST** ask the user these questions and wait for answers before proceeding:
|
|
61
|
+
|
|
62
|
+
#### 🔢 **Load & Capacity Planning Questions:**
|
|
63
|
+
|
|
64
|
+
1. **User Load:**
|
|
65
|
+
- Berapa jumlah **concurrent users** yang diharapkan saat peak hours?
|
|
66
|
+
- Berapa total **registered users** yang ditargetkan dalam 6 bulan pertama?
|
|
67
|
+
- Berapa total **registered users** yang ditargetkan dalam 1-2 tahun?
|
|
68
|
+
|
|
69
|
+
2. **Transaction Volume:**
|
|
70
|
+
- Berapa **booking per hari** yang diharapkan (low/medium/high season)?
|
|
71
|
+
- Berapa **payment transactions per hari**?
|
|
72
|
+
- Berapa **API requests per minute** yang diharapkan?
|
|
73
|
+
|
|
74
|
+
3. **Data & Storage:**
|
|
75
|
+
- Berapa banyak **file upload per hari** (foto kapal, bukti transfer, dokumen)?
|
|
76
|
+
- Berapa rata-rata **ukuran file upload** (MB)?
|
|
77
|
+
- Berapa lama **data retention policy** (berapa tahun data disimpan)?
|
|
78
|
+
- Apakah ada requirement untuk **backup** (daily, weekly, retention period)?
|
|
79
|
+
|
|
80
|
+
4. **Geographic & Network:**
|
|
81
|
+
- Dimana **lokasi target users** (Indonesia only? Internasional)?
|
|
82
|
+
- Apakah ada requirement untuk **CDN** atau **multi-region deployment**?
|
|
83
|
+
- Berapa **acceptable response time** untuk API (ms)?
|
|
84
|
+
- Berapa **acceptable page load time** (seconds)?
|
|
85
|
+
|
|
86
|
+
5. **Availability & Reliability:**
|
|
87
|
+
- Berapa **uptime target** yang diharapkan (99%, 99.9%, 99.99%)?
|
|
88
|
+
- Apakah ada **maintenance window** yang bisa ditolerir?
|
|
89
|
+
- Apakah perlu **high availability** (multi-server, load balancer)?
|
|
90
|
+
- Apakah perlu **disaster recovery plan**?
|
|
91
|
+
|
|
92
|
+
6. **Growth & Scalability:**
|
|
93
|
+
- Berapa **growth rate** yang diharapkan per tahun (user, booking)?
|
|
94
|
+
- Apakah ada **seasonal peaks** (high season, holidays)?
|
|
95
|
+
- Kapan **peak season** terjadi dan berapa kali lipat traffic?
|
|
96
|
+
|
|
97
|
+
7. **Budget & Cost:**
|
|
98
|
+
- Berapa **budget range** untuk infrastructure per bulan?
|
|
99
|
+
- Apakah ada preferensi **cloud provider** (AWS, GCP, Azure, DigitalOcean, etc.)?
|
|
100
|
+
- Apakah ada requirement untuk **on-premise** vs **cloud**?
|
|
101
|
+
|
|
102
|
+
8. **Compliance & Security:**
|
|
103
|
+
- Apakah ada requirement **compliance** (PCI-DSS, GDPR, UU PDP Indonesia)?
|
|
104
|
+
- Apakah perlu **SSL certificate** (yes/no, wildcard)?
|
|
105
|
+
- Apakah perlu **WAF** (Web Application Firewall)?
|
|
106
|
+
- Apakah perlu **DDoS protection**?
|
|
107
|
+
|
|
108
|
+
**Format Questions to User:**
|
|
109
|
+
```markdown
|
|
110
|
+
# 🏗️ Infrastructure Requirements Gathering
|
|
111
|
+
|
|
112
|
+
Untuk merancang server specification yang optimal, saya perlu informasi berikut:
|
|
113
|
+
|
|
114
|
+
## 1️⃣ User Load & Traffic
|
|
115
|
+
- [ ] Concurrent users saat peak hours: ___ users
|
|
116
|
+
- [ ] Total registered users target (6 bulan): ___ users
|
|
117
|
+
- [ ] Total registered users target (1-2 tahun): ___ users
|
|
118
|
+
|
|
119
|
+
## 2️⃣ Transaction Volume
|
|
120
|
+
- [ ] Booking per hari (low season): ___ bookings
|
|
121
|
+
- [ ] Booking per hari (high season): ___ bookings
|
|
122
|
+
- [ ] Payment transactions per hari: ___ transactions
|
|
123
|
+
- [ ] Estimasi API requests per minute: ___ req/min
|
|
124
|
+
|
|
125
|
+
## 3️⃣ Data & Storage
|
|
126
|
+
- [ ] File upload per hari: ___ files
|
|
127
|
+
- [ ] Rata-rata ukuran file: ___ MB
|
|
128
|
+
- [ ] Data retention period: ___ tahun
|
|
129
|
+
- [ ] Backup requirement: Daily / Weekly / Monthly
|
|
130
|
+
- [ ] Backup retention: ___ hari/bulan
|
|
131
|
+
|
|
132
|
+
## 4️⃣ Performance Targets
|
|
133
|
+
- [ ] Target API response time: ___ ms
|
|
134
|
+
- [ ] Target page load time: ___ seconds
|
|
135
|
+
- [ ] Lokasi target users: Indonesia / International / Both
|
|
136
|
+
- [ ] CDN requirement: Yes / No
|
|
137
|
+
|
|
138
|
+
## 5️⃣ Availability & Reliability
|
|
139
|
+
- [ ] Uptime target: 99% / 99.9% / 99.99%
|
|
140
|
+
- [ ] High availability required: Yes / No
|
|
141
|
+
- [ ] Maintenance window: Yes (kapan?) / No
|
|
142
|
+
- [ ] Disaster recovery: Yes / No
|
|
143
|
+
|
|
144
|
+
## 6️⃣ Scalability & Growth
|
|
145
|
+
- [ ] User growth rate per tahun: ___%
|
|
146
|
+
- [ ] Peak season traffic multiplier: ___x normal
|
|
147
|
+
- [ ] Peak season months: ___ (e.g., Jun-Aug, Dec-Jan)
|
|
148
|
+
|
|
149
|
+
## 7️⃣ Budget & Deployment
|
|
150
|
+
- [ ] Monthly infrastructure budget: Rp ___ / USD $___
|
|
151
|
+
- [ ] Cloud provider preference: AWS / GCP / Azure / DO / Lainnya
|
|
152
|
+
- [ ] Deployment preference: Cloud / On-premise / Hybrid
|
|
153
|
+
|
|
154
|
+
## 8️⃣ Security & Compliance
|
|
155
|
+
- [ ] SSL certificate: Yes / No
|
|
156
|
+
- [ ] WAF (Web Application Firewall): Yes / No
|
|
157
|
+
- [ ] DDoS protection: Yes / No
|
|
158
|
+
- [ ] Compliance requirements: PCI-DSS / GDPR / UU PDP / None
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
**Silakan isi checklist di atas atau berikan estimasi jika belum pasti.**
|
|
163
|
+
Jika ada yang tidak yakin, saya akan memberikan rekomendasi berdasarkan best practices.
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Step 5: Wait for User Input**
|
|
167
|
+
- DO NOT proceed to calculations without user answers
|
|
168
|
+
- If user is unsure, provide industry benchmarks for similar applications
|
|
169
|
+
- Confirm understanding by summarizing user requirements
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
### Phase 3: Capacity Planning & Calculations
|
|
174
|
+
|
|
175
|
+
**Step 6: Calculate Resource Requirements**
|
|
176
|
+
|
|
177
|
+
Based on user input, calculate:
|
|
178
|
+
|
|
179
|
+
#### **Database Sizing:**
|
|
180
|
+
```python
|
|
181
|
+
# Example calculation
|
|
182
|
+
total_users = user_input['target_users_1year']
|
|
183
|
+
bookings_per_user_per_year = 2 # average
|
|
184
|
+
total_bookings = total_users * bookings_per_user_per_year
|
|
185
|
+
|
|
186
|
+
# Estimate database size
|
|
187
|
+
db_rows_estimate = {
|
|
188
|
+
'users': total_users,
|
|
189
|
+
'bookings': total_bookings,
|
|
190
|
+
'payments': total_bookings * 1.5, # DP + pelunasan
|
|
191
|
+
'ships': 10,
|
|
192
|
+
'pricing': 100,
|
|
193
|
+
'seasonal_pricing': 200,
|
|
194
|
+
'audit_logs': total_bookings * 5,
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
# Database size (rough estimate)
|
|
198
|
+
avg_row_size_kb = 2 # KB per row
|
|
199
|
+
total_rows = sum(db_rows_estimate.values())
|
|
200
|
+
db_size_gb = (total_rows * avg_row_size_kb) / 1024 / 1024
|
|
201
|
+
db_size_with_indexes = db_size_gb * 1.5 # indexes + overhead
|
|
202
|
+
recommended_db_storage = db_size_with_indexes * 3 # growth buffer
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
#### **File Storage Sizing:**
|
|
206
|
+
```python
|
|
207
|
+
files_per_day = user_input['file_uploads_per_day']
|
|
208
|
+
avg_file_size_mb = user_input['avg_file_size_mb']
|
|
209
|
+
retention_years = user_input['retention_years']
|
|
210
|
+
|
|
211
|
+
daily_storage_mb = files_per_day * avg_file_size_mb
|
|
212
|
+
yearly_storage_gb = (daily_storage_mb * 365) / 1024
|
|
213
|
+
total_storage_gb = yearly_storage_gb * retention_years
|
|
214
|
+
recommended_file_storage = total_storage_gb * 1.3 # buffer
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
#### **Memory (RAM) Sizing:**
|
|
218
|
+
```python
|
|
219
|
+
# Application server
|
|
220
|
+
concurrent_users = user_input['concurrent_users_peak']
|
|
221
|
+
ram_per_user_mb = 2 # Next.js + session
|
|
222
|
+
app_ram_base = 512 # Base Next.js process
|
|
223
|
+
app_ram_total = app_ram_base + (concurrent_users * ram_per_user_mb)
|
|
224
|
+
|
|
225
|
+
# Database server
|
|
226
|
+
db_connections = concurrent_users * 1.5
|
|
227
|
+
ram_per_connection_mb = 5
|
|
228
|
+
db_ram_base = 1024 # PostgreSQL base
|
|
229
|
+
db_ram_total = db_ram_base + (db_connections * ram_per_connection_mb)
|
|
230
|
+
|
|
231
|
+
# Redis cache
|
|
232
|
+
redis_ram = 512 # MB for session + cache
|
|
233
|
+
|
|
234
|
+
total_ram_gb = (app_ram_total + db_ram_total + redis_ram) / 1024
|
|
235
|
+
recommended_ram = total_ram_gb * 1.5 # headroom
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
#### **CPU Sizing:**
|
|
239
|
+
```python
|
|
240
|
+
api_requests_per_minute = user_input['api_requests_per_minute']
|
|
241
|
+
cpu_intensive_operations = ['pdf_generation', 'excel_export', 'image_processing']
|
|
242
|
+
|
|
243
|
+
# Rule of thumb: 1 vCPU handles ~100 req/min for standard CRUD
|
|
244
|
+
# 1 vCPU handles ~20 req/min for CPU-intensive operations
|
|
245
|
+
base_vcpu = 2
|
|
246
|
+
vcpu_for_api = api_requests_per_minute / 100
|
|
247
|
+
vcpu_total = max(base_vcpu, vcpu_for_api)
|
|
248
|
+
recommended_vcpu = vcpu_total * 1.5 # buffer
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
#### **Bandwidth Calculation:**
|
|
252
|
+
```python
|
|
253
|
+
avg_page_size_kb = 500 # KB
|
|
254
|
+
avg_api_response_kb = 50 # KB
|
|
255
|
+
daily_page_views = concurrent_users * 20 # pages per user per day
|
|
256
|
+
daily_api_calls = api_requests_per_minute * 60 * 24
|
|
257
|
+
|
|
258
|
+
daily_bandwidth_gb = (
|
|
259
|
+
(daily_page_views * avg_page_size_kb) +
|
|
260
|
+
(daily_api_calls * avg_api_response_kb) +
|
|
261
|
+
(files_per_day * avg_file_size_mb * 1024) # uploads
|
|
262
|
+
) / 1024 / 1024
|
|
263
|
+
|
|
264
|
+
monthly_bandwidth_gb = daily_bandwidth_gb * 30
|
|
265
|
+
recommended_bandwidth = monthly_bandwidth_gb * 1.5 # buffer
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
**Step 7: Document Calculations**
|
|
269
|
+
```markdown
|
|
270
|
+
Create: `architecture/capacity_planning.md`
|
|
271
|
+
- User input summary
|
|
272
|
+
- Calculation formulas
|
|
273
|
+
- Resource estimates
|
|
274
|
+
- Growth projections (6 months, 1 year, 2 years)
|
|
275
|
+
- Peak vs normal load comparison
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
### Phase 4: Server Specification Design
|
|
281
|
+
|
|
282
|
+
**Step 8: Design Server Specifications**
|
|
283
|
+
|
|
284
|
+
Create THREE environment specs:
|
|
285
|
+
|
|
286
|
+
#### **Development Environment:**
|
|
287
|
+
```yaml
|
|
288
|
+
Environment: Development
|
|
289
|
+
Purpose: Local development, testing, debugging
|
|
290
|
+
Specs:
|
|
291
|
+
- CPU: 2 vCPU
|
|
292
|
+
- RAM: 4 GB
|
|
293
|
+
- Storage: 50 GB SSD
|
|
294
|
+
- Deployment: Docker Compose (localhost)
|
|
295
|
+
- Database: PostgreSQL in Docker
|
|
296
|
+
- Cost: $0 (local machine)
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
#### **Staging Environment:**
|
|
300
|
+
```yaml
|
|
301
|
+
Environment: Staging
|
|
302
|
+
Purpose: Pre-production testing, UAT, demo
|
|
303
|
+
Specs:
|
|
304
|
+
- CPU: [calculated] vCPU
|
|
305
|
+
- RAM: [calculated] GB
|
|
306
|
+
- Storage: [calculated] GB SSD
|
|
307
|
+
- Deployment: Single VPS or Cloud instance
|
|
308
|
+
- Database: Managed PostgreSQL or self-hosted
|
|
309
|
+
- Estimated Cost: $[amount]/month
|
|
310
|
+
- Provider Options: [DigitalOcean, Vultr, Linode, etc.]
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
#### **Production Environment:**
|
|
314
|
+
```yaml
|
|
315
|
+
Environment: Production
|
|
316
|
+
Purpose: Live application serving real users
|
|
317
|
+
|
|
318
|
+
Option 1: Single Server (Small to Medium Scale)
|
|
319
|
+
Specs:
|
|
320
|
+
Application & Database Combined:
|
|
321
|
+
- CPU: [calculated] vCPU
|
|
322
|
+
- RAM: [calculated] GB
|
|
323
|
+
- Storage: [calculated] GB SSD
|
|
324
|
+
- Deployment: VPS or Cloud VM
|
|
325
|
+
- Estimated Cost: $[amount]/month
|
|
326
|
+
|
|
327
|
+
Option 2: Multi-Server (Medium to Large Scale)
|
|
328
|
+
Specs:
|
|
329
|
+
Application Server:
|
|
330
|
+
- CPU: [calculated] vCPU
|
|
331
|
+
- RAM: [calculated] GB
|
|
332
|
+
- Storage: 100 GB SSD
|
|
333
|
+
- Instances: [1-3] (load balanced)
|
|
334
|
+
|
|
335
|
+
Database Server:
|
|
336
|
+
- CPU: [calculated] vCPU
|
|
337
|
+
- RAM: [calculated] GB
|
|
338
|
+
- Storage: [calculated] GB SSD
|
|
339
|
+
- Type: Managed DB or dedicated instance
|
|
340
|
+
|
|
341
|
+
Redis Cache:
|
|
342
|
+
- RAM: [calculated] GB
|
|
343
|
+
- Type: Managed Redis or instance
|
|
344
|
+
|
|
345
|
+
File Storage:
|
|
346
|
+
- Storage: [calculated] GB
|
|
347
|
+
- Type: Object Storage (S3, DO Spaces, MinIO)
|
|
348
|
+
|
|
349
|
+
Load Balancer:
|
|
350
|
+
- Type: Cloud LB or Nginx
|
|
351
|
+
|
|
352
|
+
Estimated Cost: $[amount]/month
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
**ACT AS:** QA Automation Engineer.
|
|
2
|
+
**CONTEXT:** Membuat dan menjalankan unit test.
|
|
3
|
+
|
|
4
|
+
**INSTRUCTION STEPS:**
|
|
5
|
+
1. **Load Context:**
|
|
6
|
+
- Baca file spesifikasi di `specification/`.
|
|
7
|
+
- Baca source code terkait di `codes/`.
|
|
8
|
+
- **BACA file `task/task_list.md`** untuk menemukan task yang akan dites.
|
|
9
|
+
- Temukan file detail task di `task/[TASK-ID]_[nama-task].md` yang sesuai.
|
|
10
|
+
|
|
11
|
+
2. **Update Task Status - START (CRITICAL):**
|
|
12
|
+
- Di `task/task_list.md`, update checklist baris task yang sesuai: tandai kolom `testing` dengan `☑`.
|
|
13
|
+
- Di file detail task `task/[TASK-ID]_[nama-task].md`, **APPEND** entry baru ke Status Log:
|
|
14
|
+
```
|
|
15
|
+
| [YYYY-MM-DD HH:MM] | test agent | test created | - |
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
3. **Directory Check:** Cek apakah folder `tests/` ada. Jika tidak, **BUAT FOLDERNYA**.
|
|
19
|
+
|
|
20
|
+
4. **Action (Test Case Generation):**
|
|
21
|
+
- Buat script testing sesuai tech stack.
|
|
22
|
+
- Simpan file di folder `tests/`.
|
|
23
|
+
|
|
24
|
+
5. **Action (Test Execution):**
|
|
25
|
+
- Lakukan eksekusi tes menggunakan framework yang sesuai.
|
|
26
|
+
- Jika Anda memiliki akses ke browser atau terminal, jalankan tes tersebut secara otomatis.
|
|
27
|
+
- Catat hasil tes, termasuk persentase coverage dan daftar issue jika ada.
|
|
28
|
+
- **APPEND** entry ke Status Log di file detail task:
|
|
29
|
+
```
|
|
30
|
+
| [YYYY-MM-DD HH:MM] | test agent | running test | Coverage: [X%] |
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
6. **Testing Log (CRITICAL):**
|
|
34
|
+
Setelah tes selesai, catat hasilnya di sub-folder task:
|
|
35
|
+
- **Cek Folder:** Pastikan folder `task/[TASK-ID]_[nama-task]/` tersedia. Jika belum, BUAT folder tersebut.
|
|
36
|
+
- **Nama File Log:** Gunakan format `task/[TASK-ID]_[nama-task]/test_log.md`.
|
|
37
|
+
- **Isi Log (Template):**
|
|
38
|
+
```markdown
|
|
39
|
+
# TESTING LOG - [TASK-ID] [Nama Task]
|
|
40
|
+
**Target Spec:** [Nama File Spec]
|
|
41
|
+
**Date:** [YYYY-MM-DD HH:MM]
|
|
42
|
+
**Result:** [Pass / Fail]
|
|
43
|
+
**Coverage:** [X%]
|
|
44
|
+
|
|
45
|
+
## Test Summary
|
|
46
|
+
| Test Case | Status | Notes |
|
|
47
|
+
|-----------|--------|-------|
|
|
48
|
+
| [Nama test case] | ✅ Pass / ❌ Fail | [catatan] |
|
|
49
|
+
|
|
50
|
+
## Issues Found
|
|
51
|
+
(Daftar issue jika ada, atau tulis "None" jika semua pass)
|
|
52
|
+
|
|
53
|
+
## Revision History
|
|
54
|
+
| Timestamp | Result | Notes |
|
|
55
|
+
|-----------|--------|-------|
|
|
56
|
+
| [YYYY-MM-DD HH:MM] | [Pass/Fail] | Initial test run |
|
|
57
|
+
```
|
|
58
|
+
- Jika file `test_log.md` sudah ada, **APPEND** section baru ke Revision History.
|
|
59
|
+
|
|
60
|
+
7. **Update Task Status - COMPLETE (CRITICAL):**
|
|
61
|
+
- Jika **PASS:**
|
|
62
|
+
- Di `task/task_list.md`, tandai kolom `done` dengan `☑`.
|
|
63
|
+
- Di file detail task, **APPEND** ke Status Log:
|
|
64
|
+
```
|
|
65
|
+
| [YYYY-MM-DD HH:MM] | test agent | test passed | Coverage: [X%] |
|
|
66
|
+
```
|
|
67
|
+
- Jika **FAIL:**
|
|
68
|
+
- Di `task/task_list.md`, tandai kolom `fixing` dengan `☑` (hapus tanda `done`).
|
|
69
|
+
- Di file detail task, **APPEND** ke Status Log:
|
|
70
|
+
```
|
|
71
|
+
| [YYYY-MM-DD HH:MM] | test agent | test failed | Issues: [ringkasan issue] |
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
8. **Self-Reflection:**
|
|
75
|
+
- Tinjau kembali hasil tes dan pastikan semua skenario penting telah diuji.
|
|
76
|
+
- Pertimbangkan untuk menambahkan tes tambahan jika ada area yang kurang tercover.
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
**INPUT SAYA:**
|
|
80
|
+
"Buat dan jalankan tes untuk file code: [NAMA FILE CODE]"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Place source code here. The contents of this folder are gitignored by default.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# PROJECT OVERVIEW
|
|
2
|
+
|
|
3
|
+
## 1. Project Summary
|
|
4
|
+
*(Jelaskan secara garis besar software apa yang akan dibangun & masalah apa yang diselesaikan)*
|
|
5
|
+
|
|
6
|
+
## 2. Target Audience
|
|
7
|
+
*(Siapa yang akan menggunakan software ini: Admin, End User, Customer, dll)*
|
|
8
|
+
|
|
9
|
+
## 3. Key Features
|
|
10
|
+
- (Fitur A)
|
|
11
|
+
- (Fitur B)
|
|
12
|
+
- (Fitur C)
|
|
13
|
+
|
|
14
|
+
## 4. Tech Stack & Infrastructure
|
|
15
|
+
- **Language/Runtime:** (e.g., Node.js v20, Python 3.11, Go)
|
|
16
|
+
- **Framework:** (e.g., Next.js 14, Express, FastAPI, Django)
|
|
17
|
+
- **Database:** (e.g., PostgreSQL, MongoDB)
|
|
18
|
+
- **State Management:** (e.g., Redux, Zustand, Context API - *Jika perlu*)
|
|
19
|
+
- **Infrastructure:** Docker & Docker Compose (Default)
|
|
20
|
+
|
|
21
|
+
## 5. UI/UX Guidelines & Design System
|
|
22
|
+
*(Analyst Agent harus memastikan bagian ini terisi sebelum membuat spec fitur)*
|
|
23
|
+
|
|
24
|
+
- **CSS Framework / Library:** (e.g., Tailwind CSS, Bootstrap, Material UI, Chakra UI, AntDesign)
|
|
25
|
+
- **Component Library:** (e.g., Shadcn/UI, HeadlessUI, Radix - *Sangat disarankan jika menggunakan Tailwind*)
|
|
26
|
+
- **Visual Vibe:** (e.g., Modern Minimalist, Corporate Professional, Playful & Colorful, Cyberpunk)
|
|
27
|
+
- **Color Palette:**
|
|
28
|
+
- **Primary:** (Warna utama tombol/aksi - Hex Code atau deskripsi)
|
|
29
|
+
- **Secondary:** (Warna pendukung)
|
|
30
|
+
- **Background:** (Light Mode / Dark Mode / System default)
|
|
31
|
+
- **Typography:**
|
|
32
|
+
- **Font Family:** (e.g., Inter, Roboto, Open Sans)
|
|
33
|
+
- **Scale:** (e.g., Default Tailwind scale)
|
|
34
|
+
- **Iconography:** (e.g., Lucide React, Heroicons, FontAwesome)
|
|
35
|
+
- **Styling Details:**
|
|
36
|
+
- **Radius:** (e.g., Rounded-md, Fully Rounded, Sharp/Square)
|
|
37
|
+
- **Shadows:** (e.g., Soft shadows, Flat design no shadow)
|
|
38
|
+
- **Responsive Strategy:** (e.g., Mobile-First approach)
|
|
39
|
+
|
|
40
|
+
## 6. Constraints & Compliance
|
|
41
|
+
*(Opsional: GDPR, Offline First, High Performance requirement, dll)*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Place specification documents here. The contents of this folder are gitignored by default.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Place test files here. The contents of this folder are gitignored by default.
|