@nexus-framework/cli 0.1.1 → 0.1.2

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 (42) hide show
  1. package/README.md +69 -417
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +5 -4
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/generators/ai-config.d.ts +15 -8
  6. package/dist/generators/ai-config.d.ts.map +1 -1
  7. package/dist/generators/ai-config.js +165 -106
  8. package/dist/generators/ai-config.js.map +1 -1
  9. package/dist/generators/config.d.ts.map +1 -1
  10. package/dist/generators/config.js +127 -19
  11. package/dist/generators/config.js.map +1 -1
  12. package/dist/generators/docs.js +9 -9
  13. package/dist/generators/index.js +5 -3
  14. package/dist/generators/index.js.map +1 -1
  15. package/dist/generators/landing-page.d.ts.map +1 -1
  16. package/dist/generators/landing-page.js +310 -76
  17. package/dist/generators/landing-page.js.map +1 -1
  18. package/dist/generators/structure.d.ts.map +1 -1
  19. package/dist/generators/structure.js +161 -17
  20. package/dist/generators/structure.js.map +1 -1
  21. package/dist/generators/tests.js +1 -1
  22. package/dist/prompts/index.d.ts +3 -0
  23. package/dist/prompts/index.d.ts.map +1 -1
  24. package/dist/prompts/index.js +12 -8
  25. package/dist/prompts/index.js.map +1 -1
  26. package/dist/types/config.d.ts +3 -0
  27. package/dist/types/config.d.ts.map +1 -1
  28. package/dist/utils/index.d.ts +1 -1
  29. package/dist/utils/index.d.ts.map +1 -1
  30. package/dist/utils/index.js +1 -1
  31. package/dist/utils/index.js.map +1 -1
  32. package/dist/utils/logger.d.ts +2 -2
  33. package/dist/utils/logger.d.ts.map +1 -1
  34. package/dist/utils/logger.js +6 -3
  35. package/dist/utils/logger.js.map +1 -1
  36. package/dist/utils/validator.d.ts +20 -3
  37. package/dist/utils/validator.d.ts.map +1 -1
  38. package/dist/utils/validator.js +48 -15
  39. package/dist/utils/validator.js.map +1 -1
  40. package/dist/version.d.ts +1 -1
  41. package/dist/version.js +1 -1
  42. package/package.json +1 -1
@@ -55,7 +55,7 @@ function generateVision(config) {
55
55
  path: '.nexus/docs/01_vision.md',
56
56
  content: `${frontmatter('01_vision', 'Product Vision & Requirements')}# Product Vision & Requirements
57
57
 
58
- **Project:** ${config.projectName}
58
+ **Project:** ${config.displayName}
59
59
  **Created:** ${new Date().toISOString().split('T')[0]}
60
60
  **Status:** 🟡 In Development
61
61
 
@@ -115,7 +115,7 @@ function generateArchitecture(config) {
115
115
  path: '.nexus/docs/02_architecture.md',
116
116
  content: `${frontmatter('02_architecture', 'System Architecture')}# System Architecture
117
117
 
118
- **Project:** ${config.projectName}
118
+ **Project:** ${config.displayName}
119
119
  **Framework:** ${config.frontendFramework}
120
120
  **Data Strategy:** ${config.dataStrategy}
121
121
 
@@ -162,7 +162,7 @@ function generateDataContracts(config) {
162
162
  path: '.nexus/docs/03_data_contracts.md',
163
163
  content: `${frontmatter('03_data_contracts', 'Data Contracts')}# Data Contracts
164
164
 
165
- **Project:** ${config.projectName}
165
+ **Project:** ${config.displayName}
166
166
  **Data Strategy:** ${config.dataStrategy}
167
167
 
168
168
  ---
@@ -196,7 +196,7 @@ function generateApiContracts(config) {
196
196
  path: '.nexus/docs/04_api_contracts.md',
197
197
  content: `${frontmatter('04_api_contracts', 'API Contracts')}# API Contracts
198
198
 
199
- **Project:** ${config.projectName}
199
+ **Project:** ${config.displayName}
200
200
 
201
201
  ---
202
202
 
@@ -234,7 +234,7 @@ function generateBusinessLogic(config) {
234
234
  path: '.nexus/docs/05_business_logic.md',
235
235
  content: `${frontmatter('05_business_logic', 'Business Logic')}# Business Logic
236
236
 
237
- **Project:** ${config.projectName}
237
+ **Project:** ${config.displayName}
238
238
 
239
239
  ---
240
240
 
@@ -267,7 +267,7 @@ function generateTestStrategy(config) {
267
267
  path: '.nexus/docs/06_test_strategy.md',
268
268
  content: `${frontmatter('06_test_strategy', 'Test Strategy')}# Test Strategy
269
269
 
270
- **Project:** ${config.projectName}
270
+ **Project:** ${config.displayName}
271
271
  **Framework:** ${config.testFramework}
272
272
 
273
273
  ---
@@ -305,7 +305,7 @@ function generateImplementation(config) {
305
305
  path: '.nexus/docs/07_implementation.md',
306
306
  content: `${frontmatter('07_implementation', 'Implementation Plan')}# Implementation Plan
307
307
 
308
- **Project:** ${config.projectName}
308
+ **Project:** ${config.displayName}
309
309
 
310
310
  ---
311
311
 
@@ -343,7 +343,7 @@ function generateDeployment(config) {
343
343
  path: '.nexus/docs/08_deployment.md',
344
344
  content: `${frontmatter('08_deployment', 'Deployment')}# Deployment
345
345
 
346
- **Project:** ${config.projectName}
346
+ **Project:** ${config.displayName}
347
347
 
348
348
  ---
349
349
 
@@ -380,7 +380,7 @@ function generateNexusIndex(config) {
380
380
  path: '.nexus/index.md',
381
381
  content: `# NEXUS Project Index
382
382
 
383
- **Project:** ${config.projectName}
383
+ **Project:** ${config.displayName}
384
384
  **Generated:** ${new Date().toISOString().split('T')[0]}
385
385
  **CLI Version:** ${version}
386
386
 
@@ -7,7 +7,7 @@
7
7
  import path from 'node:path';
8
8
  import { execa } from 'execa';
9
9
  import ora from 'ora';
10
- import { logger, writeGeneratorResult, getInstallCommand, gitInit } from '../utils/index.js';
10
+ import { logger, writeGeneratorResult, getInstallCommand, gitInit, toDisplayName } from '../utils/index.js';
11
11
  import { generateAiConfig } from './ai-config.js';
12
12
  import { generateCiCd } from './ci-cd.js';
13
13
  import { generateConfigs } from './config.js';
@@ -63,7 +63,7 @@ export async function generateProject(config) {
63
63
  }
64
64
  }
65
65
  // Done!
66
- logger.complete(config.projectName);
66
+ logger.complete(config.projectName, config.displayName);
67
67
  }
68
68
  catch (err) {
69
69
  spinner.fail('Project generation failed.');
@@ -116,8 +116,10 @@ export async function adoptProject(targetDir, projectInfo) {
116
116
  * using sensible defaults for anything not detected.
117
117
  */
118
118
  function buildAdoptConfig(targetDir, info) {
119
+ const slug = info.name ?? path.basename(targetDir);
119
120
  return {
120
- projectName: info.name ?? path.basename(targetDir),
121
+ projectName: slug,
122
+ displayName: toDisplayName(slug),
121
123
  projectType: 'web',
122
124
  dataStrategy: 'cloud-first',
123
125
  appPatterns: [],
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"landing-page.d.ts","sourceRoot":"","sources":["../../src/generators/landing-page.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAuE3D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,EAAE,CAiBxE"}
1
+ {"version":3,"file":"landing-page.d.ts","sourceRoot":"","sources":["../../src/generators/landing-page.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AA0G3D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,EAAE,CAiBxE"}
@@ -49,19 +49,54 @@ const NEXUS_FAVICON_SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="32" he
49
49
  function landingCSS() {
50
50
  return `*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
51
51
  html{color-scheme:dark}
52
- body{font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:#0a0a0a;color:#ededed;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center}
53
- .nexus-landing{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:2rem;min-height:100vh;gap:2rem}
54
- .nexus-logo{width:160px;height:160px;animation:pulse 3s ease-in-out infinite}
55
- @keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.85;transform:scale(1.04)}}
56
- .nexus-title{font-size:clamp(2.5rem,6vw,4rem);font-weight:800;letter-spacing:-.03em;background:linear-gradient(135deg,#00D9FF 0%,#00FF87 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
57
- .nexus-subtitle{font-size:clamp(1rem,2.5vw,1.35rem);color:#888;max-width:520px;line-height:1.6}
58
- .nexus-meta{display:flex;gap:1.5rem;flex-wrap:wrap;justify-content:center;margin-top:.5rem}
59
- .nexus-badge{font-size:.85rem;padding:.35rem .85rem;border-radius:9999px;border:1px solid #222;color:#aaa;background:#111}
60
- .nexus-links{display:flex;gap:1rem;margin-top:1rem}
61
- .nexus-links a{color:#00D9FF;text-decoration:none;font-weight:600;padding:.6rem 1.4rem;border-radius:.5rem;border:1px solid #00D9FF33;transition:all .2s}
52
+ body{font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:#0a0a0a;color:#ededed;min-height:100vh}
53
+
54
+ /* ── Layout ── */
55
+ .nexus-page{max-width:720px;margin:0 auto;padding:3rem 1.5rem;display:flex;flex-direction:column;align-items:center;gap:2.5rem}
56
+
57
+ /* ── Hero ── */
58
+ .nexus-hero{display:flex;flex-direction:column;align-items:center;text-align:center;gap:1rem}
59
+ .nexus-logo{width:140px;height:140px;animation:float 4s ease-in-out infinite}
60
+ @keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
61
+ .nexus-title{font-size:clamp(2.5rem,6vw,3.5rem);font-weight:800;letter-spacing:-.03em;background:linear-gradient(135deg,#00D9FF 0%,#00FF87 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
62
+ .nexus-subtitle{font-size:clamp(.95rem,2.2vw,1.15rem);color:#888;max-width:480px;line-height:1.6}
63
+
64
+ /* ── Badge row ── */
65
+ .nexus-meta{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center}
66
+ .nexus-badge{font-size:.8rem;padding:.3rem .75rem;border-radius:9999px;border:1px solid #222;color:#aaa;background:#111;transition:border-color .2s}
67
+ .nexus-badge:hover{border-color:#00D9FF44}
68
+
69
+ /* ── Cards ── */
70
+ .nexus-card{width:100%;background:#111;border:1px solid #1a1a1a;border-radius:1rem;padding:1.5rem;transition:border-color .25s}
71
+ .nexus-card:hover{border-color:#00D9FF33}
72
+ .nexus-card h2{font-size:1.1rem;font-weight:700;color:#ddd;margin-bottom:1rem}
73
+
74
+ /* ── Logo sizes row ── */
75
+ .nexus-sizes{display:flex;align-items:flex-end;justify-content:center;gap:2rem;flex-wrap:wrap}
76
+ .nexus-size-item{display:flex;flex-direction:column;align-items:center;gap:.5rem}
77
+ .nexus-size-item svg{opacity:.85;transition:opacity .2s,transform .2s}
78
+ .nexus-size-item:hover svg{opacity:1;transform:scale(1.06)}
79
+ .nexus-size-label{font-size:.75rem;color:#555;font-family:monospace}
80
+
81
+ /* ── Brand colors ── */
82
+ .nexus-colors{display:grid;grid-template-columns:repeat(5,1fr);gap:.75rem}
83
+ .nexus-color-swatch{display:flex;flex-direction:column;align-items:center;gap:.4rem}
84
+ .nexus-color-block{width:100%;aspect-ratio:1;border-radius:.625rem;transition:transform .2s}
85
+ .nexus-color-block:hover{transform:scale(1.08)}
86
+ .nexus-color-hex{font-size:.7rem;font-family:monospace;color:#666}
87
+ .nexus-color-name{font-size:.65rem;color:#444}
88
+
89
+ /* ── Links row ── */
90
+ .nexus-links{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}
91
+ .nexus-links a{color:#00D9FF;text-decoration:none;font-weight:600;font-size:.9rem;padding:.55rem 1.3rem;border-radius:.5rem;border:1px solid #00D9FF33;transition:all .2s}
62
92
  .nexus-links a:hover{background:#00D9FF15;border-color:#00D9FF}
63
- .nexus-footer{position:fixed;bottom:1.5rem;font-size:.8rem;color:#555}
64
- .nexus-footer a{color:#00D9FF;text-decoration:none}`;
93
+
94
+ /* ── Footer ── */
95
+ .nexus-footer{text-align:center;font-size:.78rem;color:#444;padding-top:.5rem}
96
+ .nexus-footer a{color:#00D9FF;text-decoration:none}
97
+
98
+ /* ── Responsive ── */
99
+ @media(max-width:480px){.nexus-colors{grid-template-columns:repeat(3,1fr)}.nexus-sizes{gap:1.25rem}}`;
65
100
  }
66
101
  /* ──────────────────────────────────────────────────────────────
67
102
  * Public API
@@ -79,7 +114,7 @@ export function generateLandingPage(config) {
79
114
  return files;
80
115
  }
81
116
  // Framework-specific landing page + CSS
82
- const pageFiles = getLandingPageForFramework(config.frontendFramework, config.projectName);
117
+ const pageFiles = getLandingPageForFramework(config.frontendFramework, config.displayName);
83
118
  files.push(...pageFiles);
84
119
  return files;
85
120
  }
@@ -110,27 +145,67 @@ function getLandingPageForFramework(framework, projectName) {
110
145
  function nextjsLandingPage(projectName) {
111
146
  const page = `import Image from "next/image";
112
147
 
148
+ const brandColors = [
149
+ { hex: "#00D9FF", name: "Primary Cyan" },
150
+ { hex: "#00FF87", name: "Success Green" },
151
+ { hex: "#5352ED", name: "Info Blue" },
152
+ { hex: "#A55EEA", name: "Purple Accent" },
153
+ { hex: "#FF4757", name: "Error Red" },
154
+ ];
155
+
113
156
  export default function Home() {
114
157
  return (
115
- <div className="nexus-landing">
116
- <Image
117
- className="nexus-logo"
118
- src="/nexus-logo.svg"
119
- alt="NEXUS Logo"
120
- width={160}
121
- height={160}
122
- priority
123
- />
124
- <h1 className="nexus-title">${projectName}</h1>
125
- <p className="nexus-subtitle">
126
- Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding tool by GDA Africa.
127
- Your project is ready. Start building something amazing.
128
- </p>
129
- <div className="nexus-meta">
130
- <span className="nexus-badge">Next.js 15</span>
131
- <span className="nexus-badge">TypeScript</span>
132
- <span className="nexus-badge">NEXUS Docs</span>
158
+ <div className="nexus-page">
159
+ {/* ── Hero ── */}
160
+ <section className="nexus-hero">
161
+ <Image
162
+ className="nexus-logo"
163
+ src="/nexus-logo.svg"
164
+ alt="NEXUS Logo"
165
+ width={140}
166
+ height={140}
167
+ priority
168
+ />
169
+ <h1 className="nexus-title">${projectName}</h1>
170
+ <p className="nexus-subtitle">
171
+ Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding
172
+ tool by GDA Africa. Your project is ready.
173
+ </p>
174
+ <div className="nexus-meta">
175
+ <span className="nexus-badge">Next.js 15</span>
176
+ <span className="nexus-badge">TypeScript</span>
177
+ <span className="nexus-badge">NEXUS Docs</span>
178
+ </div>
179
+ </section>
180
+
181
+ {/* ── Size Variations ── */}
182
+ <div className="nexus-card">
183
+ <h2>✦ Size Variations</h2>
184
+ <div className="nexus-sizes">
185
+ {[48, 96, 160].map((s) => (
186
+ <div className="nexus-size-item" key={s}>
187
+ <Image src="/nexus-logo.svg" alt="logo" width={s} height={s} />
188
+ <span className="nexus-size-label">{s}px</span>
189
+ </div>
190
+ ))}
191
+ </div>
192
+ </div>
193
+
194
+ {/* ── Brand Colors ── */}
195
+ <div className="nexus-card">
196
+ <h2>🎨 Brand Colors</h2>
197
+ <div className="nexus-colors">
198
+ {brandColors.map((c) => (
199
+ <div className="nexus-color-swatch" key={c.hex}>
200
+ <div className="nexus-color-block" style={{ background: c.hex }} />
201
+ <span className="nexus-color-hex">{c.hex}</span>
202
+ <span className="nexus-color-name">{c.name}</span>
203
+ </div>
204
+ ))}
205
+ </div>
133
206
  </div>
207
+
208
+ {/* ── Links ── */}
134
209
  <div className="nexus-links">
135
210
  <a href="https://github.com/GDA-Africa/nexus-cli" target="_blank" rel="noopener noreferrer">
136
211
  Documentation
@@ -139,6 +214,7 @@ export default function Home() {
139
214
  GDA Africa
140
215
  </a>
141
216
  </div>
217
+
142
218
  <footer className="nexus-footer">
143
219
  Scaffolded with 🔮 <a href="https://github.com/GDA-Africa/nexus-cli">NEXUS CLI</a> by{" "}
144
220
  <a href="https://github.com/GDA-Africa">GDA Africa</a>
@@ -185,18 +261,56 @@ function reactViteLandingPage(projectName) {
185
261
 
186
262
  function App() {
187
263
  return (
188
- <div className="nexus-landing">
189
- <img className="nexus-logo" src="/nexus-logo.svg" alt="NEXUS Logo" width={160} height={160} />
190
- <h1 className="nexus-title">${projectName}</h1>
191
- <p className="nexus-subtitle">
192
- Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding tool by GDA Africa.
193
- Your project is ready. Start building something amazing.
194
- </p>
195
- <div className="nexus-meta">
196
- <span className="nexus-badge">React + Vite</span>
197
- <span className="nexus-badge">TypeScript</span>
198
- <span className="nexus-badge">NEXUS Docs</span>
264
+ <div className="nexus-page">
265
+ {/* ── Hero ── */}
266
+ <section className="nexus-hero">
267
+ <img className="nexus-logo" src="/nexus-logo.svg" alt="NEXUS Logo" width={140} height={140} />
268
+ <h1 className="nexus-title">${projectName}</h1>
269
+ <p className="nexus-subtitle">
270
+ Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding
271
+ tool by GDA Africa. Your project is ready.
272
+ </p>
273
+ <div className="nexus-meta">
274
+ <span className="nexus-badge">React + Vite</span>
275
+ <span className="nexus-badge">TypeScript</span>
276
+ <span className="nexus-badge">NEXUS Docs</span>
277
+ </div>
278
+ </section>
279
+
280
+ {/* ── Size Variations ── */}
281
+ <div className="nexus-card">
282
+ <h2>✦ Size Variations</h2>
283
+ <div className="nexus-sizes">
284
+ {[48, 96, 160].map((s) => (
285
+ <div className="nexus-size-item" key={s}>
286
+ <img src="/nexus-logo.svg" alt="logo" width={s} height={s} />
287
+ <span className="nexus-size-label">{s}px</span>
288
+ </div>
289
+ ))}
290
+ </div>
291
+ </div>
292
+
293
+ {/* ── Brand Colors ── */}
294
+ <div className="nexus-card">
295
+ <h2>🎨 Brand Colors</h2>
296
+ <div className="nexus-colors">
297
+ {[
298
+ { hex: "#00D9FF", name: "Primary Cyan" },
299
+ { hex: "#00FF87", name: "Success Green" },
300
+ { hex: "#5352ED", name: "Info Blue" },
301
+ { hex: "#A55EEA", name: "Purple Accent" },
302
+ { hex: "#FF4757", name: "Error Red" },
303
+ ].map((c) => (
304
+ <div className="nexus-color-swatch" key={c.hex}>
305
+ <div className="nexus-color-block" style={{ background: c.hex }} />
306
+ <span className="nexus-color-hex">{c.hex}</span>
307
+ <span className="nexus-color-name">{c.name}</span>
308
+ </div>
309
+ ))}
310
+ </div>
199
311
  </div>
312
+
313
+ {/* ── Links ── */}
200
314
  <div className="nexus-links">
201
315
  <a href="https://github.com/GDA-Africa/nexus-cli" target="_blank" rel="noopener noreferrer">
202
316
  Documentation
@@ -205,6 +319,7 @@ function App() {
205
319
  GDA Africa
206
320
  </a>
207
321
  </div>
322
+
208
323
  <footer className="nexus-footer">
209
324
  Scaffolded with 🔮 <a href="https://github.com/GDA-Africa/nexus-cli">NEXUS CLI</a> by{" "}
210
325
  <a href="https://github.com/GDA-Africa">GDA Africa</a>
@@ -252,21 +367,60 @@ ReactDOM.createRoot(document.getElementById("root")!).render(
252
367
  * ────────────────────────────────────────────────────────────── */
253
368
  function sveltekitLandingPage(projectName) {
254
369
  const page = `<script lang="ts">
255
- // ${projectName} Landing Page
370
+ const brandColors = [
371
+ { hex: "#00D9FF", name: "Primary Cyan" },
372
+ { hex: "#00FF87", name: "Success Green" },
373
+ { hex: "#5352ED", name: "Info Blue" },
374
+ { hex: "#A55EEA", name: "Purple Accent" },
375
+ { hex: "#FF4757", name: "Error Red" },
376
+ ];
377
+ const sizes = [48, 96, 160];
256
378
  </script>
257
379
 
258
- <div class="nexus-landing">
259
- <img class="nexus-logo" src="/nexus-logo.svg" alt="NEXUS Logo" width="160" height="160" />
260
- <h1 class="nexus-title">${projectName}</h1>
261
- <p class="nexus-subtitle">
262
- Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding tool by GDA Africa.
263
- Your project is ready. Start building something amazing.
264
- </p>
265
- <div class="nexus-meta">
266
- <span class="nexus-badge">SvelteKit</span>
267
- <span class="nexus-badge">TypeScript</span>
268
- <span class="nexus-badge">NEXUS Docs</span>
380
+ <div class="nexus-page">
381
+ <!-- Hero -->
382
+ <section class="nexus-hero">
383
+ <img class="nexus-logo" src="/nexus-logo.svg" alt="NEXUS Logo" width="140" height="140" />
384
+ <h1 class="nexus-title">${projectName}</h1>
385
+ <p class="nexus-subtitle">
386
+ Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding
387
+ tool by GDA Africa. Your project is ready.
388
+ </p>
389
+ <div class="nexus-meta">
390
+ <span class="nexus-badge">SvelteKit</span>
391
+ <span class="nexus-badge">TypeScript</span>
392
+ <span class="nexus-badge">NEXUS Docs</span>
393
+ </div>
394
+ </section>
395
+
396
+ <!-- Size Variations -->
397
+ <div class="nexus-card">
398
+ <h2>✦ Size Variations</h2>
399
+ <div class="nexus-sizes">
400
+ {#each sizes as s}
401
+ <div class="nexus-size-item">
402
+ <img src="/nexus-logo.svg" alt="logo" width={s} height={s} />
403
+ <span class="nexus-size-label">{s}px</span>
404
+ </div>
405
+ {/each}
406
+ </div>
407
+ </div>
408
+
409
+ <!-- Brand Colors -->
410
+ <div class="nexus-card">
411
+ <h2>🎨 Brand Colors</h2>
412
+ <div class="nexus-colors">
413
+ {#each brandColors as c}
414
+ <div class="nexus-color-swatch">
415
+ <div class="nexus-color-block" style="background:{c.hex}"></div>
416
+ <span class="nexus-color-hex">{c.hex}</span>
417
+ <span class="nexus-color-name">{c.name}</span>
418
+ </div>
419
+ {/each}
420
+ </div>
269
421
  </div>
422
+
423
+ <!-- Links -->
270
424
  <div class="nexus-links">
271
425
  <a href="https://github.com/GDA-Africa/nexus-cli" target="_blank" rel="noopener noreferrer">
272
426
  Documentation
@@ -275,6 +429,7 @@ function sveltekitLandingPage(projectName) {
275
429
  GDA Africa
276
430
  </a>
277
431
  </div>
432
+
278
433
  <footer class="nexus-footer">
279
434
  Scaffolded with 🔮 <a href="https://github.com/GDA-Africa/nexus-cli">NEXUS CLI</a> by
280
435
  <a href="https://github.com/GDA-Africa">GDA Africa</a>
@@ -323,18 +478,46 @@ function nuxtLandingPage(projectName) {
323
478
  </template>
324
479
  `;
325
480
  const indexPage = `<template>
326
- <div class="nexus-landing">
327
- <img class="nexus-logo" src="/nexus-logo.svg" alt="NEXUS Logo" width="160" height="160" />
328
- <h1 class="nexus-title">${projectName}</h1>
329
- <p class="nexus-subtitle">
330
- Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding tool by GDA Africa.
331
- Your project is ready. Start building something amazing.
332
- </p>
333
- <div class="nexus-meta">
334
- <span class="nexus-badge">Nuxt 3</span>
335
- <span class="nexus-badge">TypeScript</span>
336
- <span class="nexus-badge">NEXUS Docs</span>
481
+ <div class="nexus-page">
482
+ <!-- Hero -->
483
+ <section class="nexus-hero">
484
+ <img class="nexus-logo" src="/nexus-logo.svg" alt="NEXUS Logo" width="140" height="140" />
485
+ <h1 class="nexus-title">${projectName}</h1>
486
+ <p class="nexus-subtitle">
487
+ Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding
488
+ tool by GDA Africa. Your project is ready.
489
+ </p>
490
+ <div class="nexus-meta">
491
+ <span class="nexus-badge">Nuxt 3</span>
492
+ <span class="nexus-badge">TypeScript</span>
493
+ <span class="nexus-badge">NEXUS Docs</span>
494
+ </div>
495
+ </section>
496
+
497
+ <!-- Size Variations -->
498
+ <div class="nexus-card">
499
+ <h2>✦ Size Variations</h2>
500
+ <div class="nexus-sizes">
501
+ <div v-for="s in [48, 96, 160]" :key="s" class="nexus-size-item">
502
+ <img src="/nexus-logo.svg" alt="logo" :width="s" :height="s" />
503
+ <span class="nexus-size-label">{{ s }}px</span>
504
+ </div>
505
+ </div>
506
+ </div>
507
+
508
+ <!-- Brand Colors -->
509
+ <div class="nexus-card">
510
+ <h2>🎨 Brand Colors</h2>
511
+ <div class="nexus-colors">
512
+ <div v-for="c in brandColors" :key="c.hex" class="nexus-color-swatch">
513
+ <div class="nexus-color-block" :style="{ background: c.hex }" />
514
+ <span class="nexus-color-hex">{{ c.hex }}</span>
515
+ <span class="nexus-color-name">{{ c.name }}</span>
516
+ </div>
517
+ </div>
337
518
  </div>
519
+
520
+ <!-- Links -->
338
521
  <div class="nexus-links">
339
522
  <a href="https://github.com/GDA-Africa/nexus-cli" target="_blank" rel="noopener noreferrer">
340
523
  Documentation
@@ -343,6 +526,7 @@ function nuxtLandingPage(projectName) {
343
526
  GDA Africa
344
527
  </a>
345
528
  </div>
529
+
346
530
  <footer class="nexus-footer">
347
531
  Scaffolded with 🔮 <a href="https://github.com/GDA-Africa/nexus-cli">NEXUS CLI</a> by
348
532
  <a href="https://github.com/GDA-Africa">GDA Africa</a>
@@ -351,6 +535,14 @@ function nuxtLandingPage(projectName) {
351
535
  </template>
352
536
 
353
537
  <script setup lang="ts">
538
+ const brandColors = [
539
+ { hex: "#00D9FF", name: "Primary Cyan" },
540
+ { hex: "#00FF87", name: "Success Green" },
541
+ { hex: "#5352ED", name: "Info Blue" },
542
+ { hex: "#A55EEA", name: "Purple Accent" },
543
+ { hex: "#FF4757", name: "Error Red" },
544
+ ];
545
+
354
546
  useHead({
355
547
  title: "${projectName}",
356
548
  meta: [{ name: "description", content: "Generated with NEXUS CLI by GDA Africa" }],
@@ -384,21 +576,62 @@ export default defineNuxtConfig({
384
576
  function astroLandingPage(projectName) {
385
577
  const indexAstro = `---
386
578
  import Layout from "../layouts/Layout.astro";
579
+
580
+ const brandColors = [
581
+ { hex: "#00D9FF", name: "Primary Cyan" },
582
+ { hex: "#00FF87", name: "Success Green" },
583
+ { hex: "#5352ED", name: "Info Blue" },
584
+ { hex: "#A55EEA", name: "Purple Accent" },
585
+ { hex: "#FF4757", name: "Error Red" },
586
+ ];
587
+ const sizes = [48, 96, 160];
387
588
  ---
388
589
 
389
590
  <Layout title="${projectName}">
390
- <div class="nexus-landing">
391
- <img class="nexus-logo" src="/nexus-logo.svg" alt="NEXUS Logo" width="160" height="160" />
392
- <h1 class="nexus-title">${projectName}</h1>
393
- <p class="nexus-subtitle">
394
- Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding tool by GDA Africa.
395
- Your project is ready. Start building something amazing.
396
- </p>
397
- <div class="nexus-meta">
398
- <span class="nexus-badge">Astro</span>
399
- <span class="nexus-badge">TypeScript</span>
400
- <span class="nexus-badge">NEXUS Docs</span>
591
+ <div class="nexus-page">
592
+ <!-- Hero -->
593
+ <section class="nexus-hero">
594
+ <img class="nexus-logo" src="/nexus-logo.svg" alt="NEXUS Logo" width="140" height="140" />
595
+ <h1 class="nexus-title">${projectName}</h1>
596
+ <p class="nexus-subtitle">
597
+ Built with <strong>NEXUS CLI</strong> — the AI-native project scaffolding
598
+ tool by GDA Africa. Your project is ready.
599
+ </p>
600
+ <div class="nexus-meta">
601
+ <span class="nexus-badge">Astro</span>
602
+ <span class="nexus-badge">TypeScript</span>
603
+ <span class="nexus-badge">NEXUS Docs</span>
604
+ </div>
605
+ </section>
606
+
607
+ <!-- Size Variations -->
608
+ <div class="nexus-card">
609
+ <h2>✦ Size Variations</h2>
610
+ <div class="nexus-sizes">
611
+ {sizes.map((s) => (
612
+ <div class="nexus-size-item">
613
+ <img src="/nexus-logo.svg" alt="logo" width={s} height={s} />
614
+ <span class="nexus-size-label">{s}px</span>
615
+ </div>
616
+ ))}
617
+ </div>
618
+ </div>
619
+
620
+ <!-- Brand Colors -->
621
+ <div class="nexus-card">
622
+ <h2>🎨 Brand Colors</h2>
623
+ <div class="nexus-colors">
624
+ {brandColors.map((c) => (
625
+ <div class="nexus-color-swatch">
626
+ <div class="nexus-color-block" style={\`background:\${c.hex}\`} />
627
+ <span class="nexus-color-hex">{c.hex}</span>
628
+ <span class="nexus-color-name">{c.name}</span>
629
+ </div>
630
+ ))}
631
+ </div>
401
632
  </div>
633
+
634
+ <!-- Links -->
402
635
  <div class="nexus-links">
403
636
  <a href="https://github.com/GDA-Africa/nexus-cli" target="_blank" rel="noopener noreferrer">
404
637
  Documentation
@@ -407,6 +640,7 @@ import Layout from "../layouts/Layout.astro";
407
640
  GDA Africa
408
641
  </a>
409
642
  </div>
643
+
410
644
  <footer class="nexus-footer">
411
645
  Scaffolded with 🔮 <a href="https://github.com/GDA-Africa/nexus-cli">NEXUS CLI</a> by
412
646
  <a href="https://github.com/GDA-Africa">GDA Africa</a>
@@ -1 +1 @@
1
- {"version":3,"file":"landing-page.js","sourceRoot":"","sources":["../../src/generators/landing-page.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"landing-page.js","sourceRoot":"","sources":["../../src/generators/landing-page.ts"],"names":[],"mappings":"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"}