achira-wf 3.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.
Files changed (229) hide show
  1. package/.achira/ARCHITECTURE.md +296 -0
  2. package/.achira/core/agents/backend-specialist.md +263 -0
  3. package/.achira/core/agents/code-archaeologist.md +106 -0
  4. package/.achira/core/agents/database-architect.md +226 -0
  5. package/.achira/core/agents/debugger.md +225 -0
  6. package/.achira/core/agents/devops-engineer.md +242 -0
  7. package/.achira/core/agents/documentation-writer.md +104 -0
  8. package/.achira/core/agents/explorer-agent.md +73 -0
  9. package/.achira/core/agents/frontend-specialist.md +593 -0
  10. package/.achira/core/agents/game-developer.md +162 -0
  11. package/.achira/core/agents/mobile-developer.md +377 -0
  12. package/.achira/core/agents/orchestrator.md +416 -0
  13. package/.achira/core/agents/penetration-tester.md +188 -0
  14. package/.achira/core/agents/performance-optimizer.md +187 -0
  15. package/.achira/core/agents/product-manager.md +112 -0
  16. package/.achira/core/agents/product-owner.md +95 -0
  17. package/.achira/core/agents/project-planner.md +413 -0
  18. package/.achira/core/agents/qa-automation-engineer.md +103 -0
  19. package/.achira/core/agents/security-auditor.md +170 -0
  20. package/.achira/core/agents/seo-specialist.md +111 -0
  21. package/.achira/core/agents/test-engineer.md +158 -0
  22. package/.achira/core/mcp_config.json +24 -0
  23. package/.achira/core/shared/ui-ux-pro-max/data/charts.csv +26 -0
  24. package/.achira/core/shared/ui-ux-pro-max/data/colors.csv +97 -0
  25. package/.achira/core/shared/ui-ux-pro-max/data/icons.csv +101 -0
  26. package/.achira/core/shared/ui-ux-pro-max/data/landing.csv +31 -0
  27. package/.achira/core/shared/ui-ux-pro-max/data/products.csv +97 -0
  28. package/.achira/core/shared/ui-ux-pro-max/data/prompts.csv +24 -0
  29. package/.achira/core/shared/ui-ux-pro-max/data/react-performance.csv +45 -0
  30. package/.achira/core/shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  31. package/.achira/core/shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  32. package/.achira/core/shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  33. package/.achira/core/shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  34. package/.achira/core/shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  35. package/.achira/core/shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  36. package/.achira/core/shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  37. package/.achira/core/shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  38. package/.achira/core/shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  39. package/.achira/core/shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  40. package/.achira/core/shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  41. package/.achira/core/shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  42. package/.achira/core/shared/ui-ux-pro-max/data/styles.csv +59 -0
  43. package/.achira/core/shared/ui-ux-pro-max/data/typography.csv +58 -0
  44. package/.achira/core/shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  45. package/.achira/core/shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  46. package/.achira/core/shared/ui-ux-pro-max/data/web-interface.csv +31 -0
  47. package/.achira/core/shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
  48. package/.achira/core/shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
  49. package/.achira/core/shared/ui-ux-pro-max/scripts/__pycache__/generate_theme.cpython-314.pyc +0 -0
  50. package/.achira/core/shared/ui-ux-pro-max/scripts/core.py +258 -0
  51. package/.achira/core/shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
  52. package/.achira/core/shared/ui-ux-pro-max/scripts/generate_theme.py +99 -0
  53. package/.achira/core/shared/ui-ux-pro-max/scripts/search.py +106 -0
  54. package/.achira/core/skills/api-patterns/SKILL.md +81 -0
  55. package/.achira/core/skills/api-patterns/api-style.md +42 -0
  56. package/.achira/core/skills/api-patterns/auth.md +24 -0
  57. package/.achira/core/skills/api-patterns/documentation.md +26 -0
  58. package/.achira/core/skills/api-patterns/graphql.md +41 -0
  59. package/.achira/core/skills/api-patterns/rate-limiting.md +31 -0
  60. package/.achira/core/skills/api-patterns/response.md +37 -0
  61. package/.achira/core/skills/api-patterns/rest.md +40 -0
  62. package/.achira/core/skills/api-patterns/scripts/api_validator.py +211 -0
  63. package/.achira/core/skills/api-patterns/security-testing.md +122 -0
  64. package/.achira/core/skills/api-patterns/trpc.md +41 -0
  65. package/.achira/core/skills/api-patterns/versioning.md +22 -0
  66. package/.achira/core/skills/app-builder/SKILL.md +98 -0
  67. package/.achira/core/skills/app-builder/agent-coordination.md +71 -0
  68. package/.achira/core/skills/app-builder/feature-building.md +53 -0
  69. package/.achira/core/skills/app-builder/project-detection.md +34 -0
  70. package/.achira/core/skills/app-builder/scaffolding.md +118 -0
  71. package/.achira/core/skills/app-builder/tech-stack.md +40 -0
  72. package/.achira/core/skills/app-builder/templates/SKILL.md +39 -0
  73. package/.achira/core/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  74. package/.achira/core/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  75. package/.achira/core/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  76. package/.achira/core/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  77. package/.achira/core/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  78. package/.achira/core/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  79. package/.achira/core/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  80. package/.achira/core/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
  81. package/.achira/core/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
  82. package/.achira/core/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
  83. package/.achira/core/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
  84. package/.achira/core/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  85. package/.achira/core/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
  86. package/.achira/core/skills/architecture/SKILL.md +55 -0
  87. package/.achira/core/skills/architecture/context-discovery.md +43 -0
  88. package/.achira/core/skills/architecture/examples.md +94 -0
  89. package/.achira/core/skills/architecture/pattern-selection.md +68 -0
  90. package/.achira/core/skills/architecture/patterns-reference.md +50 -0
  91. package/.achira/core/skills/architecture/trade-off-analysis.md +77 -0
  92. package/.achira/core/skills/bash-linux/SKILL.md +199 -0
  93. package/.achira/core/skills/behavioral-modes/SKILL.md +242 -0
  94. package/.achira/core/skills/brainstorming/SKILL.md +163 -0
  95. package/.achira/core/skills/brainstorming/dynamic-questioning.md +350 -0
  96. package/.achira/core/skills/clean-code/SKILL.md +201 -0
  97. package/.achira/core/skills/code-review-checklist/SKILL.md +109 -0
  98. package/.achira/core/skills/database-design/SKILL.md +52 -0
  99. package/.achira/core/skills/database-design/database-selection.md +43 -0
  100. package/.achira/core/skills/database-design/indexing.md +39 -0
  101. package/.achira/core/skills/database-design/migrations.md +48 -0
  102. package/.achira/core/skills/database-design/optimization.md +36 -0
  103. package/.achira/core/skills/database-design/orm-selection.md +30 -0
  104. package/.achira/core/skills/database-design/schema-design.md +56 -0
  105. package/.achira/core/skills/database-design/scripts/schema_validator.py +172 -0
  106. package/.achira/core/skills/deployment-procedures/SKILL.md +241 -0
  107. package/.achira/core/skills/doc.md +177 -0
  108. package/.achira/core/skills/documentation-templates/SKILL.md +194 -0
  109. package/.achira/core/skills/frontend-design/SKILL.md +418 -0
  110. package/.achira/core/skills/frontend-design/animation-guide.md +331 -0
  111. package/.achira/core/skills/frontend-design/color-system.md +311 -0
  112. package/.achira/core/skills/frontend-design/decision-trees.md +418 -0
  113. package/.achira/core/skills/frontend-design/motion-graphics.md +306 -0
  114. package/.achira/core/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  115. package/.achira/core/skills/frontend-design/scripts/ux_audit.py +722 -0
  116. package/.achira/core/skills/frontend-design/typography-system.md +345 -0
  117. package/.achira/core/skills/frontend-design/ux-psychology.md +1116 -0
  118. package/.achira/core/skills/frontend-design/visual-effects.md +383 -0
  119. package/.achira/core/skills/game-development/2d-games/SKILL.md +119 -0
  120. package/.achira/core/skills/game-development/3d-games/SKILL.md +135 -0
  121. package/.achira/core/skills/game-development/SKILL.md +167 -0
  122. package/.achira/core/skills/game-development/game-art/SKILL.md +185 -0
  123. package/.achira/core/skills/game-development/game-audio/SKILL.md +190 -0
  124. package/.achira/core/skills/game-development/game-design/SKILL.md +129 -0
  125. package/.achira/core/skills/game-development/mobile-games/SKILL.md +108 -0
  126. package/.achira/core/skills/game-development/multiplayer/SKILL.md +132 -0
  127. package/.achira/core/skills/game-development/pc-games/SKILL.md +144 -0
  128. package/.achira/core/skills/game-development/vr-ar/SKILL.md +123 -0
  129. package/.achira/core/skills/game-development/web-games/SKILL.md +150 -0
  130. package/.achira/core/skills/geo-fundamentals/SKILL.md +156 -0
  131. package/.achira/core/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  132. package/.achira/core/skills/i18n-localization/SKILL.md +154 -0
  133. package/.achira/core/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  134. package/.achira/core/skills/intelligent-routing/SKILL.md +335 -0
  135. package/.achira/core/skills/lint-and-validate/SKILL.md +45 -0
  136. package/.achira/core/skills/lint-and-validate/scripts/lint_runner.py +184 -0
  137. package/.achira/core/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  138. package/.achira/core/skills/mcp-builder/SKILL.md +176 -0
  139. package/.achira/core/skills/mobile-design/SKILL.md +394 -0
  140. package/.achira/core/skills/mobile-design/decision-trees.md +516 -0
  141. package/.achira/core/skills/mobile-design/mobile-backend.md +491 -0
  142. package/.achira/core/skills/mobile-design/mobile-color-system.md +420 -0
  143. package/.achira/core/skills/mobile-design/mobile-debugging.md +122 -0
  144. package/.achira/core/skills/mobile-design/mobile-design-thinking.md +357 -0
  145. package/.achira/core/skills/mobile-design/mobile-navigation.md +458 -0
  146. package/.achira/core/skills/mobile-design/mobile-performance.md +767 -0
  147. package/.achira/core/skills/mobile-design/mobile-testing.md +356 -0
  148. package/.achira/core/skills/mobile-design/mobile-typography.md +433 -0
  149. package/.achira/core/skills/mobile-design/platform-android.md +666 -0
  150. package/.achira/core/skills/mobile-design/platform-ios.md +561 -0
  151. package/.achira/core/skills/mobile-design/scripts/mobile_audit.py +670 -0
  152. package/.achira/core/skills/mobile-design/touch-psychology.md +537 -0
  153. package/.achira/core/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +312 -0
  154. package/.achira/core/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
  155. package/.achira/core/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -0
  156. package/.achira/core/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
  157. package/.achira/core/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
  158. package/.achira/core/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
  159. package/.achira/core/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -0
  160. package/.achira/core/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
  161. package/.achira/core/skills/nextjs-react-expert/SKILL.md +286 -0
  162. package/.achira/core/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
  163. package/.achira/core/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
  164. package/.achira/core/skills/nodejs-best-practices/SKILL.md +333 -0
  165. package/.achira/core/skills/parallel-agents/SKILL.md +175 -0
  166. package/.achira/core/skills/performance-profiling/SKILL.md +143 -0
  167. package/.achira/core/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
  168. package/.achira/core/skills/plan-writing/SKILL.md +152 -0
  169. package/.achira/core/skills/powershell-windows/SKILL.md +167 -0
  170. package/.achira/core/skills/project-setup/SKILL.md +291 -0
  171. package/.achira/core/skills/python-patterns/SKILL.md +441 -0
  172. package/.achira/core/skills/red-team-tactics/SKILL.md +199 -0
  173. package/.achira/core/skills/rust-pro/SKILL.md +176 -0
  174. package/.achira/core/skills/seo-fundamentals/SKILL.md +129 -0
  175. package/.achira/core/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  176. package/.achira/core/skills/server-management/SKILL.md +161 -0
  177. package/.achira/core/skills/systematic-debugging/SKILL.md +109 -0
  178. package/.achira/core/skills/tailwind-patterns/SKILL.md +269 -0
  179. package/.achira/core/skills/tdd-workflow/SKILL.md +149 -0
  180. package/.achira/core/skills/testing-patterns/SKILL.md +178 -0
  181. package/.achira/core/skills/testing-patterns/scripts/test_runner.py +219 -0
  182. package/.achira/core/skills/vulnerability-scanner/SKILL.md +276 -0
  183. package/.achira/core/skills/vulnerability-scanner/checklists.md +121 -0
  184. package/.achira/core/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  185. package/.achira/core/skills/web-design-guidelines/SKILL.md +57 -0
  186. package/.achira/core/skills/webapp-testing/SKILL.md +187 -0
  187. package/.achira/core/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  188. package/.achira/rules/GEMINI.md +273 -0
  189. package/.achira/scripts/__pycache__/checklist.cpython-314.pyc +0 -0
  190. package/.achira/scripts/__pycache__/shared_utils.cpython-314.pyc +0 -0
  191. package/.achira/scripts/__pycache__/verify_all.cpython-314.pyc +0 -0
  192. package/.achira/scripts/auto_preview.py +148 -0
  193. package/.achira/scripts/checklist.py +193 -0
  194. package/.achira/scripts/session_manager.py +120 -0
  195. package/.achira/scripts/shared_utils.py +64 -0
  196. package/.achira/scripts/verify_all.py +304 -0
  197. package/.achira/workflows/brainstorm.md +113 -0
  198. package/.achira/workflows/create.md +59 -0
  199. package/.achira/workflows/debug.md +103 -0
  200. package/.achira/workflows/deploy.md +176 -0
  201. package/.achira/workflows/enhance.md +63 -0
  202. package/.achira/workflows/html+js+css.md +363 -0
  203. package/.achira/workflows/next.js.md +316 -0
  204. package/.achira/workflows/orchestrate.md +237 -0
  205. package/.achira/workflows/plan.md +89 -0
  206. package/.achira/workflows/preview.md +81 -0
  207. package/.achira/workflows/react+vite.md +280 -0
  208. package/.achira/workflows/registry.json +35 -0
  209. package/.achira/workflows/status.md +86 -0
  210. package/.achira/workflows/test.md +144 -0
  211. package/.achira/workflows/ui-ux-pro-max.md +296 -0
  212. package/.agent/workflows/brainstorm.md +113 -0
  213. package/.agent/workflows/create.md +59 -0
  214. package/.agent/workflows/debug.md +103 -0
  215. package/.agent/workflows/deploy.md +176 -0
  216. package/.agent/workflows/enhance.md +63 -0
  217. package/.agent/workflows/html+js+css.md +363 -0
  218. package/.agent/workflows/next.js.md +316 -0
  219. package/.agent/workflows/orchestrate.md +237 -0
  220. package/.agent/workflows/plan.md +89 -0
  221. package/.agent/workflows/preview.md +81 -0
  222. package/.agent/workflows/react+vite.md +280 -0
  223. package/.agent/workflows/status.md +86 -0
  224. package/.agent/workflows/test.md +144 -0
  225. package/.agent/workflows/ui-ux-pro-max.md +296 -0
  226. package/LICENSE +21 -0
  227. package/README.md +110 -0
  228. package/cli.js +293 -0
  229. package/package.json +48 -0
@@ -0,0 +1,363 @@
1
+ ---
2
+ description: Scaffold a clean, scalable vanilla HTML + CSS + JavaScript project with clear separation of concerns.
3
+ ---
4
+
5
+ // turbo-all
6
+
7
+ ## Philosophy
8
+
9
+ This workflow enforces a strict separation between structure, style, and behavior.
10
+
11
+ - **HTML** = Structure only. No inline styles, no inline scripts.
12
+ - **CSS** = Styling only. Split by concern: globals, layout, page-specific.
13
+ - **JS** = Behavior only. Modular ES modules — one entry point, shared utils.
14
+
15
+ ---
16
+
17
+ ## 1. Create the Project Structure
18
+
19
+ ```
20
+ mkdir src
21
+ mkdir src/pages
22
+ mkdir src/styles
23
+ mkdir src/scripts
24
+ mkdir src/components
25
+ mkdir public
26
+ ```
27
+
28
+ Final structure:
29
+
30
+ ```
31
+ project/
32
+ ├── public/
33
+ ├── src/
34
+ │ ├── pages/
35
+ │ │ └── index.html
36
+ │ ├── styles/
37
+ │ │ ├── globals.css
38
+ │ │ ├── layout.css
39
+ │ │ └── index.css
40
+ │ ├── scripts/
41
+ │ │ ├── main.js
42
+ │ │ └── utils.js
43
+ │ └── components/
44
+ ├── jsconfig.json
45
+ ├── .gitignore
46
+ └── README.md
47
+ ```
48
+
49
+ ---
50
+
51
+ ## 2. Create `src/pages/index.html`
52
+
53
+ The entry point. Links all CSS and the JS module. No styles or scripts inline.
54
+
55
+ ```html
56
+ <!DOCTYPE html>
57
+ <html lang="en">
58
+ <head>
59
+ <meta charset="UTF-8" />
60
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
61
+ <title>My Project</title>
62
+
63
+ <!-- Global reset + variables -->
64
+ <link rel="stylesheet" href="../styles/globals.css" />
65
+ <!-- Reusable layout utilities -->
66
+ <link rel="stylesheet" href="../styles/layout.css" />
67
+ <!-- Page-specific styles -->
68
+ <link rel="stylesheet" href="../styles/index.css" />
69
+ </head>
70
+ <body>
71
+ <div class="container">
72
+ <h1>Hello World</h1>
73
+ </div>
74
+
75
+ <!-- module: enables import/export -->
76
+ <script type="module" src="../scripts/main.js"></script>
77
+ </body>
78
+ </html>
79
+ ```
80
+
81
+ ---
82
+
83
+ ## 3. Create `src/styles/globals.css`
84
+
85
+ The single source of truth for CSS variables and the global reset.
86
+ No component-specific styles go here.
87
+
88
+ ```css
89
+ /* Modern Reset */
90
+ *,
91
+ *::before,
92
+ *::after {
93
+ margin: 0;
94
+ padding: 0;
95
+ box-sizing: border-box;
96
+ }
97
+
98
+ html {
99
+ font-size: 16px;
100
+ scroll-behavior: smooth;
101
+ }
102
+
103
+ img,
104
+ picture,
105
+ video,
106
+ canvas,
107
+ svg {
108
+ display: block;
109
+ max-width: 100%;
110
+ }
111
+
112
+ button {
113
+ cursor: pointer;
114
+ }
115
+
116
+ /* Design Tokens */
117
+ :root {
118
+ --color-primary: #6366f1;
119
+ --color-bg: #ffffff;
120
+ --color-text: #111827;
121
+ --color-subtle: #6b7280;
122
+ --font-sans: system-ui, -apple-system, sans-serif;
123
+ --transition-default: all 0.2s ease;
124
+ }
125
+
126
+ @media (prefers-color-scheme: dark) {
127
+ :root {
128
+ --color-bg: #0f172a;
129
+ --color-text: #f8fafc;
130
+ }
131
+ }
132
+
133
+ body {
134
+ font-family: var(--font-sans);
135
+ background-color: var(--color-bg);
136
+ color: var(--color-text);
137
+ line-height: 1.6;
138
+ }
139
+ ```
140
+
141
+ ---
142
+
143
+ ## 4. Create `src/styles/layout.css`
144
+
145
+ Shared structural utilities across all pages. Not page-specific.
146
+
147
+ ```css
148
+ /* Centered content wrapper */
149
+ .container {
150
+ width: min(1100px, 90%);
151
+ margin: 0 auto;
152
+ padding: 2rem 0;
153
+ }
154
+
155
+ /* Utility layout classes */
156
+ .flex {
157
+ display: flex;
158
+ }
159
+ .flex-col {
160
+ flex-direction: column;
161
+ }
162
+ .flex-center {
163
+ display: flex;
164
+ align-items: center;
165
+ justify-content: center;
166
+ }
167
+
168
+ .grid {
169
+ display: grid;
170
+ }
171
+ .grid-2 {
172
+ grid-template-columns: repeat(2, 1fr);
173
+ gap: 1.5rem;
174
+ }
175
+ .grid-3 {
176
+ grid-template-columns: repeat(3, 1fr);
177
+ gap: 1.5rem;
178
+ }
179
+ ```
180
+
181
+ ---
182
+
183
+ ## 5. Create `src/styles/index.css`
184
+
185
+ Styles for the index page only. Each page gets its own file.
186
+
187
+ ```css
188
+ /* index page styles */
189
+ h1 {
190
+ color: var(--color-primary);
191
+ font-size: 2.5rem;
192
+ margin-bottom: 1rem;
193
+ }
194
+ ```
195
+
196
+ ---
197
+
198
+ ## 6. Create `src/scripts/utils.js`
199
+
200
+ Pure, reusable helper functions. No DOM access. No side effects.
201
+
202
+ ```javascript
203
+ /**
204
+ * One-call app initializer. Add further calls here as the app grows.
205
+ */
206
+ export function initApp() {
207
+ console.log("[App] Initialized");
208
+ }
209
+
210
+ /**
211
+ * Convenience wrapper: returns a single element or null.
212
+ * @param {string} selector
213
+ * @returns {Element|null}
214
+ */
215
+ export function qs(selector) {
216
+ return document.querySelector(selector);
217
+ }
218
+
219
+ /**
220
+ * Convenience wrapper: returns a NodeList.
221
+ * @param {string} selector
222
+ * @returns {NodeList}
223
+ */
224
+ export function qsAll(selector) {
225
+ return document.querySelectorAll(selector);
226
+ }
227
+ ```
228
+
229
+ ---
230
+
231
+ ## 7. Create `src/scripts/main.js`
232
+
233
+ The single JS entry point. Imports utils, hooks into `DOMContentLoaded`.
234
+ Page-specific logic starts here, but delegates to modules.
235
+
236
+ ```javascript
237
+ import { initApp } from "./utils.js";
238
+
239
+ document.addEventListener("DOMContentLoaded", () => {
240
+ initApp();
241
+ });
242
+ ```
243
+
244
+ ---
245
+
246
+ ## 8. Create `jsconfig.json`
247
+
248
+ Enable IntelliSense, type-checking via JSDoc, and module resolution in VS Code.
249
+
250
+ ```json
251
+ {
252
+ "compilerOptions": {
253
+ "checkJs": true,
254
+ "moduleResolution": "node",
255
+ "target": "ES2020",
256
+ "module": "ES2020"
257
+ },
258
+ "include": ["src/**/*.js"],
259
+ "exclude": ["node_modules"]
260
+ }
261
+ ```
262
+
263
+ ---
264
+
265
+ ## 9. Create `.gitignore`
266
+
267
+ ```
268
+ node_modules/
269
+ dist/
270
+ .DS_Store
271
+ *.log
272
+ .env
273
+ .env.local
274
+ ```
275
+
276
+ ---
277
+
278
+ ## 10. Create `README.md`
279
+
280
+ ```markdown
281
+ # Project Name
282
+
283
+ A clean HTML + CSS + JS project.
284
+
285
+ ## Structure
286
+
287
+ | Folder | Purpose |
288
+ | ----------------- | ----------------------------------------------------------------------------------- |
289
+ | `src/pages/` | HTML entry points — one file per page |
290
+ | `src/styles/` | `globals.css` (design tokens), `layout.css` (utilities), `page.css` (page-specific) |
291
+ | `src/scripts/` | `main.js` (entry), `utils.js` (shared helpers) |
292
+ | `src/components/` | Reusable HTML snippets (loaded/injected via JS if needed) |
293
+ | `public/` | Static assets: images, fonts, favicon |
294
+
295
+ ## Rules
296
+
297
+ - No inline CSS
298
+ - No inline scripts
299
+ - Use CSS variables from `globals.css`
300
+ - Use `type="module"` on all script tags
301
+ - One CSS file per page (mirroring `src/pages/`)
302
+
303
+ ## Dev Server
304
+ ```
305
+
306
+ npm run dev
307
+
308
+ ```
309
+
310
+ ```
311
+
312
+ ---
313
+
314
+ ## 11. Initialize npm and Install Dev Server
315
+
316
+ ```
317
+ npm init -y
318
+ npm install -D vite
319
+ ```
320
+
321
+ Add to `package.json`:
322
+
323
+ ```json
324
+ "scripts": {
325
+ "dev": "vite src/pages --port=3000 --open",
326
+ "build": "vite build",
327
+ "preview": "vite preview"
328
+ }
329
+ ```
330
+
331
+ Run:
332
+
333
+ ```
334
+ npm run dev
335
+ ```
336
+
337
+ ---
338
+
339
+ ## Scaling Rules
340
+
341
+ As the project grows, follow this pattern:
342
+
343
+ ```
344
+ src/
345
+ ├── pages/
346
+ │ ├── index.html ← each page has its own HTML
347
+ │ ├── about.html
348
+ │ └── contact.html
349
+ ├── styles/
350
+ │ ├── globals.css ← shared always
351
+ │ ├── layout.css ← shared always
352
+ │ ├── index.css ← page-specific
353
+ │ ├── about.css
354
+ │ └── contact.css
355
+ ├── scripts/
356
+ │ ├── main.js ← one per page (or shared entry + conditionals)
357
+ │ └── utils.js
358
+ └── components/ ← HTML snippets injected via fetch() or JS
359
+ ```
360
+
361
+ - Never let `globals.css` accumulate page-specific rules.
362
+ - Never use `<style>` tags inside HTML files.
363
+ - Never write logic inside event listeners — delegate to named functions.
@@ -0,0 +1,316 @@
1
+ ---
2
+ description: Scaffold a scalable, production-ready Next.js App Router project with feature-based architecture.
3
+ ---
4
+
5
+ // turbo-all
6
+
7
+ ## Goals
8
+
9
+ - App Router for routing + layouts
10
+ - Feature-based domain grouping
11
+ - Clear Server vs. Client Component boundaries
12
+ - Scalable from side project to SaaS
13
+
14
+ ---
15
+
16
+ ## 1. Create the Next.js Project
17
+
18
+ ```
19
+ npx -y create-next-app@latest ./ --typescript --eslint --tailwind=false --app --src-dir --import-alias "@/*" --use-npm
20
+ ```
21
+
22
+ ---
23
+
24
+ ## 2. Install Core Dependencies
25
+
26
+ ```
27
+ npm install axios lucide-react zod zustand
28
+ ```
29
+
30
+ ---
31
+
32
+ ## 3. Create the Full Directory Structure
33
+
34
+ ```
35
+ mkdir src/components/ui src/components/layout src/components/feature
36
+ mkdir src/features/auth src/features/user
37
+ mkdir src/lib src/hooks src/services src/store src/styles src/types
38
+ ```
39
+
40
+ Full structure:
41
+
42
+ ```
43
+ src/
44
+ ├── app/ # Next.js App Router (routing only)
45
+ │ ├── layout.tsx
46
+ │ ├── page.tsx
47
+ │ ├── globals.css
48
+ │ ├── (marketing)/ # Public-facing route group
49
+ │ │ └── page.tsx
50
+ │ ├── (dashboard)/ # Authenticated route group
51
+ │ │ └── layout.tsx
52
+ │ └── api/ # Route handlers
53
+
54
+ ├── components/ # Shared UI
55
+ │ ├── ui/ # Primitives: Button, Card, Modal
56
+ │ ├── layout/ # Navbar, Sidebar, Footer
57
+ │ └── feature/ # Composed feature-specific UI
58
+
59
+ ├── features/ # Feature-based domain logic
60
+ │ ├── auth/
61
+ │ │ ├── components/
62
+ │ │ ├── hooks/
63
+ │ │ ├── actions.ts # Server Actions (Mutations)
64
+ │ │ ├── service.ts
65
+ │ │ └── types.ts
66
+ │ └── user/
67
+ │ ├── components/
68
+ │ ├── hooks/
69
+ │ ├── service.ts
70
+ │ └── types.ts
71
+
72
+ ├── lib/ # Shared utilities (no external deps)
73
+ │ ├── fetcher.ts
74
+ │ ├── constants.ts
75
+ │ ├── validators.ts
76
+ │ └── env.ts # Zod-validated environment variables
77
+
78
+ ├── hooks/ # Global shared React hooks
79
+ ├── services/ # External API integrations
80
+ ├── store/ # Global state (Zustand)
81
+ ├── styles/ # CSS Modules for complex, shared styles
82
+ └── types/ # Global TypeScript type definitions
83
+ ```
84
+
85
+ ---
86
+
87
+ ## 4. Set Up `src/app/globals.css`
88
+
89
+ Replace default globals with a clean token-based reset.
90
+
91
+ ```css
92
+ *,
93
+ *::before,
94
+ *::after {
95
+ margin: 0;
96
+ padding: 0;
97
+ box-sizing: border-box;
98
+ }
99
+
100
+ html {
101
+ font-size: 16px;
102
+ scroll-behavior: smooth;
103
+ }
104
+
105
+ img,
106
+ picture,
107
+ video,
108
+ canvas,
109
+ svg {
110
+ display: block;
111
+ max-width: 100%;
112
+ }
113
+
114
+ button {
115
+ cursor: pointer;
116
+ }
117
+
118
+ :root {
119
+ --color-primary: #6366f1;
120
+ --color-bg: #ffffff;
121
+ --color-text: #111827;
122
+ --font-sans: var(--font-geist-sans), system-ui, sans-serif;
123
+ }
124
+
125
+ @media (prefers-color-scheme: dark) {
126
+ :root {
127
+ --color-bg: #0f172a;
128
+ --color-text: #f8fafc;
129
+ }
130
+ }
131
+
132
+ body {
133
+ font-family: var(--font-sans);
134
+ background-color: var(--color-bg);
135
+ color: var(--color-text);
136
+ line-height: 1.6;
137
+ }
138
+ ```
139
+
140
+ ---
141
+
142
+ ## 5. Create Root Layout `src/app/layout.tsx`
143
+
144
+ ```tsx
145
+ import type { Metadata } from "next";
146
+ import "./globals.css";
147
+
148
+ export const metadata: Metadata = {
149
+ title: "My App",
150
+ description: "Generated with achira-wf",
151
+ };
152
+
153
+ export default function RootLayout({
154
+ children,
155
+ }: {
156
+ children: React.ReactNode;
157
+ }) {
158
+ return (
159
+ <html lang="en">
160
+ <body>{children}</body>
161
+ </html>
162
+ );
163
+ }
164
+ ```
165
+
166
+ ---
167
+
168
+ ## 6. Create Home Page `src/app/page.tsx`
169
+
170
+ ```tsx
171
+ export default function HomePage() {
172
+ return (
173
+ <main>
174
+ <h1>Hello from Next.js App Router</h1>
175
+ </main>
176
+ );
177
+ }
178
+ ```
179
+
180
+ ---
181
+
182
+ ## 7. Set Up Example Feature (`auth`)
183
+
184
+ ### `src/features/auth/types.ts`
185
+
186
+ ```ts
187
+ export interface User {
188
+ id: string;
189
+ email: string;
190
+ name: string;
191
+ }
192
+ ```
193
+
194
+ ### `src/features/auth/service.ts`
195
+
196
+ ```ts
197
+ import axios from "axios";
198
+ import type { User } from "./types";
199
+
200
+ export async function getMe(): Promise<User> {
201
+ const { data } = await axios.get("/api/auth/me");
202
+ return data;
203
+ }
204
+ ```
205
+
206
+ ### `src/features/auth/hooks/useUser.ts`
207
+
208
+ ```ts
209
+ "use client";
210
+ import { useState, useEffect } from "react";
211
+ import { getMe } from "../service";
212
+ import type { User } from "../types";
213
+
214
+ export function useUser() {
215
+ const [user, setUser] = useState<User | null>(null);
216
+ const [loading, setLoading] = useState(true);
217
+
218
+ useEffect(() => {
219
+ getMe()
220
+ .then(setUser)
221
+ .finally(() => setLoading(false));
222
+ }, []);
223
+
224
+ return { user, loading };
225
+ }
226
+ ```
227
+
228
+ ---
229
+
230
+ ## 8. Set Up Shared Lib
231
+
232
+ ### `src/lib/constants.ts`
233
+
234
+ ```ts
235
+ export const APP_NAME = "My App";
236
+ export const API_URL = process.env.NEXT_PUBLIC_API_URL ?? "";
237
+ ```
238
+
239
+ ### `src/lib/fetcher.ts`
240
+
241
+ ```ts
242
+ export async function fetcher<T>(url: string): Promise<T> {
243
+ const res = await fetch(url);
244
+ if (!res.ok) throw new Error(`Fetch error: ${res.status}`);
245
+ return res.json();
246
+ }
247
+ ```
248
+
249
+ ### `src/lib/env.ts`
250
+
251
+ Validate environment variables at build time with Zod. Import this in `layout.tsx` or a server-only module so it runs at startup.
252
+
253
+ ```ts
254
+ import { z } from "zod";
255
+
256
+ const envSchema = z.object({
257
+ NEXT_PUBLIC_API_URL: z.string().url().optional().default(""),
258
+ NEXT_PUBLIC_APP_ENV: z
259
+ .enum(["development", "staging", "production"])
260
+ .default("development"),
261
+ DATABASE_URL: z.string().min(1, "DATABASE_URL is required"),
262
+ });
263
+
264
+ export const env = envSchema.parse(process.env);
265
+ ```
266
+
267
+ ---
268
+
269
+ ## 9. Create `.env.example`
270
+
271
+ ```
272
+ NEXT_PUBLIC_API_URL=
273
+ NEXT_PUBLIC_APP_ENV=development
274
+ DATABASE_URL=
275
+ ```
276
+
277
+ ---
278
+
279
+ ## 10. CSS Strategy Note
280
+
281
+ | Location | Use For |
282
+ | ------------------------- | --------------------------------------------------------------------------------------- |
283
+ | `src/app/globals.css` | CSS reset, CSS custom properties (`:root`), global body styles |
284
+ | `src/styles/*.module.css` | Complex, shared styles used across multiple components (e.g., form layouts, card grids) |
285
+ | Co-located `.module.css` | Component-specific styles that live next to their component file |
286
+
287
+ **Rule:** Default to co-located CSS Modules. Only use `src/styles/` for truly cross-cutting layouts that don't belong to any single component.
288
+
289
+ ---
290
+
291
+ ## 11. Start the Dev Server
292
+
293
+ ```
294
+ npm run dev
295
+ ```
296
+
297
+ ---
298
+
299
+ ## Component Guidelines
300
+
301
+ | Rule | Reason |
302
+ | ----------------------------------------- | --------------------------------------------- |
303
+ | Default to **Server Components** | Better performance, less JS sent to client |
304
+ | Use `"use client"` only at the leaf level | Keeps SSR benefits higher in the tree |
305
+ | No business logic in `page.tsx` | Pages are wiring only — delegate to features |
306
+ | Services handle all network calls | Hooks are for state/effects, not fetching raw |
307
+
308
+ ---
309
+
310
+ ## Scalability Path
311
+
312
+ | Stage | Add |
313
+ | ---------- | -------------------------------------------------------- |
314
+ | Small | `app/`, `components/`, `lib/` |
315
+ | Growing | Introduce `features/`, `services/`, feature-scoped hooks |
316
+ | Enterprise | Strict feature boundaries, API abstraction, `store/` |