@nclamvn/vibecode-cli 2.1.0 → 2.2.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.
@@ -0,0 +1,724 @@
1
+ // ═══════════════════════════════════════════════════════════════════════════════
2
+ // VIBECODE CLI - Template Gallery
3
+ // Professional templates for rapid project creation
4
+ // ═══════════════════════════════════════════════════════════════════════════════
5
+
6
+ /**
7
+ * Template definitions
8
+ * Each template includes prompt, variables, and metadata
9
+ */
10
+ export const TEMPLATES = {
11
+ // ═══════════════════════════════════════════════════════════════════════════
12
+ // LANDING PAGES
13
+ // ═══════════════════════════════════════════════════════════════════════════
14
+
15
+ 'landing-minimal': {
16
+ id: 'landing-minimal',
17
+ name: 'Minimal Landing',
18
+ category: 'landing',
19
+ description: 'Clean, minimalist landing page with hero, features, CTA',
20
+ tags: ['minimal', 'clean', 'startup'],
21
+ stack: ['Next.js 14', 'Tailwind CSS'],
22
+ features: [
23
+ 'Responsive hero section',
24
+ 'Features grid (3 columns)',
25
+ 'CTA section',
26
+ 'Footer with links'
27
+ ],
28
+ preview: 'https://templates.vibecode.dev/landing-minimal.png',
29
+ prompt: `Create a minimal landing page with:
30
+ - Hero section: Large headline, subtitle, 2 CTA buttons (primary & secondary)
31
+ - Features: 3-column grid with icons and descriptions
32
+ - CTA section: Final call-to-action with email signup
33
+ - Footer: Links and copyright
34
+
35
+ Style: Clean, lots of whitespace, modern typography
36
+ Tech: Next.js 14 App Router, Tailwind CSS
37
+ Colors: Use a modern color palette with primary accent color`,
38
+ variables: {
39
+ name: { type: 'string', default: 'My Startup', description: 'Company name' },
40
+ tagline: { type: 'string', default: 'Build something amazing', description: 'Main tagline' },
41
+ primaryColor: { type: 'color', default: '#3B82F6', description: 'Primary brand color' }
42
+ }
43
+ },
44
+
45
+ 'landing-apple': {
46
+ id: 'landing-apple',
47
+ name: 'Apple Style Landing',
48
+ category: 'landing',
49
+ description: 'Premium Apple-inspired landing page with smooth animations',
50
+ tags: ['premium', 'apple', 'luxury', 'animations'],
51
+ stack: ['Next.js 14', 'Tailwind CSS', 'Framer Motion'],
52
+ features: [
53
+ 'Full-screen hero with scroll animations',
54
+ 'Product showcase sections',
55
+ 'Parallax effects',
56
+ 'Smooth scroll navigation',
57
+ 'Premium typography'
58
+ ],
59
+ preview: 'https://templates.vibecode.dev/landing-apple.png',
60
+ prompt: `Create a premium Apple-style landing page:
61
+
62
+ Design Philosophy:
63
+ - Ultra-minimalist, massive whitespace
64
+ - Black/white/gray color scheme with subtle gradients
65
+ - Large, bold typography (SF Pro style or Inter)
66
+
67
+ Sections:
68
+ 1. Hero: Full-screen with large product image, fade-in animation
69
+ 2. Product Features: Side-by-side layout, image + text alternating
70
+ 3. Specs/Details: Clean grid with icons
71
+ 4. Final CTA: Centered, minimal
72
+
73
+ Animations:
74
+ - Smooth scroll between sections
75
+ - Fade-in on scroll (elements appear as you scroll)
76
+ - Subtle parallax on images
77
+ - Hover effects on interactive elements
78
+
79
+ Navigation: Sticky header, transparent, blur effect on scroll
80
+
81
+ Tech: Next.js 14 App Router, Tailwind CSS, Framer Motion`,
82
+ variables: {
83
+ productName: { type: 'string', default: 'Product', description: 'Product name' },
84
+ theme: { type: 'select', options: ['dark', 'light'], default: 'dark', description: 'Color theme' }
85
+ }
86
+ },
87
+
88
+ 'landing-saas': {
89
+ id: 'landing-saas',
90
+ name: 'SaaS Landing',
91
+ category: 'landing',
92
+ description: 'Complete SaaS landing with pricing, testimonials, FAQ',
93
+ tags: ['saas', 'startup', 'pricing', 'complete'],
94
+ stack: ['Next.js 14', 'Tailwind CSS', 'Lucide Icons'],
95
+ features: [
96
+ 'Hero with product mockup',
97
+ 'Logo cloud / Trust badges',
98
+ 'Features section (6 features)',
99
+ 'Pricing table (3 tiers)',
100
+ 'Testimonials section',
101
+ 'FAQ accordion',
102
+ 'Newsletter signup',
103
+ 'Full footer with sitemap'
104
+ ],
105
+ preview: 'https://templates.vibecode.dev/landing-saas.png',
106
+ prompt: `Create a complete SaaS landing page:
107
+
108
+ Sections:
109
+ 1. Hero: Headline, subtitle, 2 CTA buttons, product screenshot/mockup
110
+ 2. Logo Cloud: 5-6 trust badges or client logos
111
+ 3. Features: 6 features in 2x3 grid with icons
112
+ 4. How It Works: 3-step process
113
+ 5. Pricing: 3 tiers (Starter $9/mo, Pro $29/mo, Enterprise custom)
114
+ 6. Testimonials: 3 customer quotes with photos and company
115
+ 7. FAQ: 5 questions in accordion format
116
+ 8. Final CTA: Email signup, conversion focus
117
+ 9. Footer: Full sitemap, social links, legal
118
+
119
+ Design:
120
+ - Modern, professional look
121
+ - Gradient backgrounds
122
+ - Card-based UI
123
+ - Lucide React icons
124
+
125
+ Tech: Next.js 14 App Router, Tailwind CSS, Lucide React`,
126
+ variables: {
127
+ name: { type: 'string', default: 'SaaSify', description: 'Product name' },
128
+ pricing: { type: 'boolean', default: true, description: 'Include pricing section' }
129
+ }
130
+ },
131
+
132
+ 'landing-startup': {
133
+ id: 'landing-startup',
134
+ name: 'Startup Landing',
135
+ category: 'landing',
136
+ description: 'Modern startup landing with waitlist and social proof',
137
+ tags: ['startup', 'waitlist', 'modern', 'gradient'],
138
+ stack: ['Next.js 14', 'Tailwind CSS'],
139
+ features: [
140
+ 'Gradient hero section',
141
+ 'Waitlist email capture',
142
+ 'Feature highlights',
143
+ 'Social proof counter',
144
+ 'Team section'
145
+ ],
146
+ preview: 'https://templates.vibecode.dev/landing-startup.png',
147
+ prompt: `Create a modern startup landing page:
148
+
149
+ Sections:
150
+ 1. Hero: Bold gradient background, waitlist signup form, "Join X others" counter
151
+ 2. Problem/Solution: What problem you solve
152
+ 3. Features: 4 key features with icons
153
+ 4. Social Proof: Testimonial + metrics (users, countries, etc)
154
+ 5. Team: Founder photos and bios (2-3 people)
155
+ 6. CTA: Final waitlist signup
156
+ 7. Footer: Minimal
157
+
158
+ Design:
159
+ - Vibrant gradient backgrounds (purple to blue or similar)
160
+ - Modern, energetic feel
161
+ - Rounded corners everywhere
162
+ - Animated counters
163
+
164
+ Tech: Next.js 14 App Router, Tailwind CSS`,
165
+ variables: {
166
+ name: { type: 'string', default: 'LaunchPad', description: 'Startup name' },
167
+ waitlistCount: { type: 'number', default: 1247, description: 'Waitlist counter' }
168
+ }
169
+ },
170
+
171
+ // ═══════════════════════════════════════════════════════════════════════════
172
+ // DASHBOARDS
173
+ // ═══════════════════════════════════════════════════════════════════════════
174
+
175
+ 'dashboard-admin': {
176
+ id: 'dashboard-admin',
177
+ name: 'Admin Dashboard',
178
+ category: 'dashboard',
179
+ description: 'Full-featured admin dashboard with charts, tables, sidebar',
180
+ tags: ['admin', 'dashboard', 'charts', 'tables'],
181
+ stack: ['Next.js 14', 'Tailwind CSS', 'Recharts', 'Lucide Icons'],
182
+ features: [
183
+ 'Collapsible sidebar navigation',
184
+ 'Header with search & profile',
185
+ 'Dashboard overview cards (4 KPIs)',
186
+ 'Charts (line, bar, pie)',
187
+ 'Data table with pagination',
188
+ 'Dark/Light mode toggle'
189
+ ],
190
+ preview: 'https://templates.vibecode.dev/dashboard-admin.png',
191
+ prompt: `Create an admin dashboard:
192
+
193
+ Layout:
194
+ - Sidebar: Collapsible, logo at top, navigation links, user menu at bottom
195
+ - Header: Search bar, notifications bell, profile dropdown
196
+ - Main: Content area with padding
197
+
198
+ Dashboard Page:
199
+ - 4 stat cards (Users, Revenue, Orders, Growth) with icons and trends
200
+ - Line chart: Revenue over time
201
+ - Bar chart: Sales by category
202
+ - Recent orders table with status badges
203
+ - Activity feed
204
+
205
+ Features:
206
+ - Dark/Light mode toggle in header
207
+ - Responsive (sidebar collapses on mobile)
208
+ - Table with sorting, filtering, pagination
209
+
210
+ Tech: Next.js 14 App Router, Tailwind CSS, Recharts, Lucide React`,
211
+ variables: {
212
+ name: { type: 'string', default: 'Admin Panel', description: 'Dashboard name' },
213
+ darkMode: { type: 'boolean', default: true, description: 'Enable dark mode' }
214
+ }
215
+ },
216
+
217
+ 'dashboard-analytics': {
218
+ id: 'dashboard-analytics',
219
+ name: 'Analytics Dashboard',
220
+ category: 'dashboard',
221
+ description: 'Data-focused analytics dashboard with multiple chart types',
222
+ tags: ['analytics', 'data', 'charts', 'metrics'],
223
+ stack: ['Next.js 14', 'Tailwind CSS', 'Recharts', 'date-fns'],
224
+ features: [
225
+ 'Real-time metrics cards',
226
+ 'Multiple chart types',
227
+ 'Date range picker',
228
+ 'Export data button',
229
+ 'Responsive tables',
230
+ 'Comparison metrics'
231
+ ],
232
+ preview: 'https://templates.vibecode.dev/dashboard-analytics.png',
233
+ prompt: `Create an analytics dashboard focused on data visualization:
234
+
235
+ Layout:
236
+ - Top bar with date range picker and export button
237
+ - Main content with grid of charts and tables
238
+
239
+ Components:
240
+ 1. KPI Cards (6 total): Visitors, Page Views, Bounce Rate, Avg Session, Conversions, Revenue
241
+ - Each with trend indicator (+/-%)
242
+ 2. Main Chart: Large area chart showing traffic over time
243
+ 3. Secondary Charts:
244
+ - Bar chart: Top pages
245
+ - Pie chart: Traffic sources
246
+ - Line chart: Conversions
247
+ 4. Data Table: Detailed metrics with sortable columns
248
+
249
+ Features:
250
+ - Date range selector (Last 7 days, 30 days, 90 days, Custom)
251
+ - Export to CSV button
252
+ - Real-time updates simulation
253
+ - Responsive grid layout
254
+
255
+ Tech: Next.js 14 App Router, Tailwind CSS, Recharts, date-fns`,
256
+ variables: {
257
+ metrics: { type: 'string', default: 'users,revenue,sessions', description: 'Metrics to display' }
258
+ }
259
+ },
260
+
261
+ // ═══════════════════════════════════════════════════════════════════════════
262
+ // E-COMMERCE
263
+ // ═══════════════════════════════════════════════════════════════════════════
264
+
265
+ 'ecommerce-store': {
266
+ id: 'ecommerce-store',
267
+ name: 'E-commerce Store',
268
+ category: 'ecommerce',
269
+ description: 'Complete e-commerce store with product pages, cart, checkout',
270
+ tags: ['ecommerce', 'shop', 'cart', 'products'],
271
+ stack: ['Next.js 14', 'Tailwind CSS', 'Zustand'],
272
+ features: [
273
+ 'Homepage with featured products',
274
+ 'Product listing with filters',
275
+ 'Product detail page',
276
+ 'Shopping cart (slide-out)',
277
+ 'Checkout flow',
278
+ 'Responsive design'
279
+ ],
280
+ preview: 'https://templates.vibecode.dev/ecommerce-store.png',
281
+ prompt: `Create an e-commerce store:
282
+
283
+ Pages:
284
+ 1. Homepage:
285
+ - Hero banner with sale/promo
286
+ - Featured products grid
287
+ - Category cards
288
+ - Newsletter signup
289
+
290
+ 2. Products Page (/products):
291
+ - Sidebar filters (category, price range, color)
292
+ - Product grid with hover effects
293
+ - Sort dropdown (price, newest, popular)
294
+ - Pagination
295
+
296
+ 3. Product Detail (/products/[id]):
297
+ - Image gallery with thumbnails
298
+ - Product info (name, price, description)
299
+ - Size/variant selector
300
+ - Add to cart button
301
+ - Related products
302
+
303
+ 4. Cart (slide-out panel):
304
+ - Product list with quantity controls
305
+ - Remove item button
306
+ - Subtotal calculation
307
+ - Checkout button
308
+
309
+ 5. Checkout (/checkout):
310
+ - Multi-step: Shipping > Payment > Review
311
+ - Form validation
312
+ - Order summary sidebar
313
+
314
+ State Management: Zustand for cart
315
+ Tech: Next.js 14 App Router, Tailwind CSS, Zustand`,
316
+ variables: {
317
+ storeName: { type: 'string', default: 'My Store', description: 'Store name' },
318
+ currency: { type: 'string', default: 'USD', description: 'Currency code' }
319
+ }
320
+ },
321
+
322
+ // ═══════════════════════════════════════════════════════════════════════════
323
+ // BLOGS
324
+ // ═══════════════════════════════════════════════════════════════════════════
325
+
326
+ 'blog-minimal': {
327
+ id: 'blog-minimal',
328
+ name: 'Minimal Blog',
329
+ category: 'blog',
330
+ description: 'Clean, fast blog with MDX support',
331
+ tags: ['blog', 'minimal', 'mdx', 'content'],
332
+ stack: ['Next.js 14', 'Tailwind CSS', 'MDX'],
333
+ features: [
334
+ 'Homepage with post list',
335
+ 'Post page with MDX support',
336
+ 'Categories and tags',
337
+ 'Search functionality',
338
+ 'RSS feed',
339
+ 'SEO optimized'
340
+ ],
341
+ preview: 'https://templates.vibecode.dev/blog-minimal.png',
342
+ prompt: `Create a minimal blog:
343
+
344
+ Pages:
345
+ 1. Homepage (/):
346
+ - Header with logo and nav
347
+ - Featured post (large)
348
+ - Recent posts list with excerpts
349
+ - Sidebar with categories and about
350
+
351
+ 2. Post Page (/posts/[slug]):
352
+ - Post header (title, date, author, read time)
353
+ - MDX content with typography styles
354
+ - Share buttons
355
+ - Author bio
356
+ - Related posts
357
+
358
+ 3. Category Page (/category/[slug]):
359
+ - Category title and description
360
+ - Posts in that category
361
+
362
+ 4. About Page (/about):
363
+ - Author info and photo
364
+ - Social links
365
+
366
+ Features:
367
+ - MDX support for rich content
368
+ - Code syntax highlighting
369
+ - Table of contents
370
+ - SEO meta tags and OpenGraph
371
+ - RSS feed (/feed.xml)
372
+ - Sitemap
373
+
374
+ Design: Clean typography, lots of whitespace, easy to read
375
+ Tech: Next.js 14 App Router, Tailwind CSS, next-mdx-remote or @next/mdx`,
376
+ variables: {
377
+ blogName: { type: 'string', default: 'My Blog', description: 'Blog name' },
378
+ postsPerPage: { type: 'number', default: 10, description: 'Posts per page' }
379
+ }
380
+ },
381
+
382
+ // ═══════════════════════════════════════════════════════════════════════════
383
+ // PORTFOLIOS
384
+ // ═══════════════════════════════════════════════════════════════════════════
385
+
386
+ 'portfolio-developer': {
387
+ id: 'portfolio-developer',
388
+ name: 'Developer Portfolio',
389
+ category: 'portfolio',
390
+ description: 'Modern developer portfolio with projects, skills, contact',
391
+ tags: ['portfolio', 'developer', 'personal', 'resume'],
392
+ stack: ['Next.js 14', 'Tailwind CSS', 'Framer Motion'],
393
+ features: [
394
+ 'Hero with introduction',
395
+ 'About section',
396
+ 'Skills/Tech stack display',
397
+ 'Projects showcase',
398
+ 'Experience timeline',
399
+ 'Contact form'
400
+ ],
401
+ preview: 'https://templates.vibecode.dev/portfolio-developer.png',
402
+ prompt: `Create a developer portfolio:
403
+
404
+ Sections:
405
+ 1. Hero:
406
+ - Name and title
407
+ - Short tagline
408
+ - Social links (GitHub, LinkedIn, Twitter)
409
+ - CTA button (Contact me)
410
+
411
+ 2. About:
412
+ - Photo
413
+ - Bio paragraph
414
+ - Download resume button
415
+
416
+ 3. Skills:
417
+ - Tech stack grid with icons
418
+ - Skill categories (Frontend, Backend, Tools)
419
+ - Proficiency indicators or tags
420
+
421
+ 4. Projects:
422
+ - Grid of 4-6 projects
423
+ - Each: Image, title, description, tech tags
424
+ - Links to live demo and GitHub
425
+
426
+ 5. Experience:
427
+ - Timeline layout
428
+ - Job title, company, dates
429
+ - Brief description
430
+
431
+ 6. Contact:
432
+ - Contact form (name, email, message)
433
+ - Or direct email link
434
+ - Social links
435
+
436
+ Animations:
437
+ - Scroll-triggered fade-ins
438
+ - Hover effects on project cards
439
+ - Smooth scroll navigation
440
+
441
+ Tech: Next.js 14 App Router, Tailwind CSS, Framer Motion`,
442
+ variables: {
443
+ name: { type: 'string', default: 'John Doe', description: 'Your name' },
444
+ title: { type: 'string', default: 'Full Stack Developer', description: 'Your title' }
445
+ }
446
+ },
447
+
448
+ 'portfolio-creative': {
449
+ id: 'portfolio-creative',
450
+ name: 'Creative Portfolio',
451
+ category: 'portfolio',
452
+ description: 'Visual portfolio for designers and creatives',
453
+ tags: ['portfolio', 'creative', 'designer', 'visual'],
454
+ stack: ['Next.js 14', 'Tailwind CSS', 'Framer Motion'],
455
+ features: [
456
+ 'Full-screen project showcases',
457
+ 'Image galleries',
458
+ 'Smooth transitions',
459
+ 'Minimal navigation',
460
+ 'Case study pages'
461
+ ],
462
+ preview: 'https://templates.vibecode.dev/portfolio-creative.png',
463
+ prompt: `Create a creative portfolio for designers:
464
+
465
+ Design Philosophy:
466
+ - Let the work speak for itself
467
+ - Minimal UI, maximum focus on visuals
468
+ - Smooth, cinematic transitions
469
+
470
+ Pages:
471
+ 1. Homepage:
472
+ - Full-screen project grid or list
473
+ - Hover effects reveal project info
474
+ - Minimal header with name and nav
475
+
476
+ 2. Project Page (/work/[slug]):
477
+ - Full-width hero image
478
+ - Project details (client, role, year)
479
+ - Image gallery with lightbox
480
+ - Description and process
481
+ - Next/Previous project navigation
482
+
483
+ 3. About:
484
+ - Large photo
485
+ - Bio
486
+ - Services offered
487
+ - Contact info
488
+
489
+ Features:
490
+ - Page transitions (fade or slide)
491
+ - Cursor effects (optional)
492
+ - Image lazy loading
493
+ - Smooth scroll
494
+
495
+ Tech: Next.js 14 App Router, Tailwind CSS, Framer Motion`,
496
+ variables: {
497
+ name: { type: 'string', default: 'Jane Smith', description: 'Your name' },
498
+ specialty: { type: 'string', default: 'UI/UX Designer', description: 'Your specialty' }
499
+ }
500
+ },
501
+
502
+ // ═══════════════════════════════════════════════════════════════════════════
503
+ // APPS
504
+ // ═══════════════════════════════════════════════════════════════════════════
505
+
506
+ 'app-todo': {
507
+ id: 'app-todo',
508
+ name: 'Todo App',
509
+ category: 'app',
510
+ description: 'Feature-rich todo app with categories and due dates',
511
+ tags: ['app', 'todo', 'productivity'],
512
+ stack: ['Next.js 14', 'Tailwind CSS', 'Zustand', 'date-fns'],
513
+ features: [
514
+ 'Add/Edit/Delete todos',
515
+ 'Categories/Projects',
516
+ 'Due dates with calendar',
517
+ 'Priority levels',
518
+ 'Search & Filter',
519
+ 'Local storage persistence'
520
+ ],
521
+ preview: 'https://templates.vibecode.dev/app-todo.png',
522
+ prompt: `Create a todo application:
523
+
524
+ Layout:
525
+ - Sidebar: Projects/Categories list, Add project button
526
+ - Main: Todo list with input at top
527
+
528
+ Features:
529
+ 1. Todo CRUD:
530
+ - Add todo with title
531
+ - Edit inline
532
+ - Delete with confirmation
533
+ - Mark complete with checkbox
534
+
535
+ 2. Organization:
536
+ - Projects/Categories (Inbox, Personal, Work, etc)
537
+ - Due date picker
538
+ - Priority (Low, Medium, High)
539
+ - Tags
540
+
541
+ 3. Filters:
542
+ - All / Today / Upcoming / Completed
543
+ - By project
544
+ - By priority
545
+ - Search by text
546
+
547
+ 4. UI:
548
+ - Clean, minimal design
549
+ - Keyboard shortcuts (Enter to add, etc)
550
+ - Drag and drop reorder (optional)
551
+
552
+ State: Zustand with localStorage persistence
553
+ Tech: Next.js 14 App Router, Tailwind CSS, Zustand, date-fns`,
554
+ variables: {
555
+ appName: { type: 'string', default: 'TaskFlow', description: 'App name' }
556
+ }
557
+ },
558
+
559
+ 'app-chat': {
560
+ id: 'app-chat',
561
+ name: 'Chat Interface',
562
+ category: 'app',
563
+ description: 'Real-time chat UI with modern design',
564
+ tags: ['app', 'chat', 'messaging', 'ui'],
565
+ stack: ['Next.js 14', 'Tailwind CSS'],
566
+ features: [
567
+ 'Chat list sidebar',
568
+ 'Message thread view',
569
+ 'Message input with emoji',
570
+ 'User avatars',
571
+ 'Typing indicator',
572
+ 'Message timestamps'
573
+ ],
574
+ preview: 'https://templates.vibecode.dev/app-chat.png',
575
+ prompt: `Create a chat interface (UI only with mock data):
576
+
577
+ Layout:
578
+ - Sidebar: Chat/conversation list
579
+ - Main: Active chat messages
580
+ - Optional: User details panel
581
+
582
+ Sidebar:
583
+ - Search conversations
584
+ - Chat list items: Avatar, name, last message preview, time, unread badge
585
+
586
+ Messages Area:
587
+ - Header: User name, status, actions (call, info)
588
+ - Messages: Bubbles (sent vs received styling), timestamps, read receipts
589
+ - Input: Text field, emoji button, attachment button, send
590
+
591
+ Features:
592
+ - Typing indicator animation
593
+ - Online/offline status dots
594
+ - Message grouping by time
595
+ - Unread message indicators
596
+ - Responsive (mobile shows one panel at a time)
597
+
598
+ Mock Data: Include sample conversations and messages
599
+ Tech: Next.js 14 App Router, Tailwind CSS`,
600
+ variables: {}
601
+ },
602
+
603
+ 'app-notes': {
604
+ id: 'app-notes',
605
+ name: 'Notes App',
606
+ category: 'app',
607
+ description: 'Notion-like notes app with rich text editor',
608
+ tags: ['app', 'notes', 'editor', 'productivity'],
609
+ stack: ['Next.js 14', 'Tailwind CSS', 'Tiptap'],
610
+ features: [
611
+ 'Rich text editor',
612
+ 'Folder organization',
613
+ 'Search notes',
614
+ 'Markdown support',
615
+ 'Local storage'
616
+ ],
617
+ preview: 'https://templates.vibecode.dev/app-notes.png',
618
+ prompt: `Create a notes application similar to Notion:
619
+
620
+ Layout:
621
+ - Sidebar: Folders/pages tree
622
+ - Main: Note editor
623
+
624
+ Features:
625
+ 1. Organization:
626
+ - Create folders
627
+ - Create pages within folders
628
+ - Drag to reorder
629
+ - Favorites section
630
+
631
+ 2. Editor:
632
+ - Rich text (bold, italic, headings, lists)
633
+ - Code blocks
634
+ - Images
635
+ - Checkboxes
636
+ - Dividers
637
+
638
+ 3. Other:
639
+ - Search across all notes
640
+ - Autosave
641
+ - Last edited timestamp
642
+ - Dark/Light mode
643
+
644
+ Tech: Next.js 14 App Router, Tailwind CSS, Tiptap editor
645
+ State: Local storage persistence`,
646
+ variables: {
647
+ appName: { type: 'string', default: 'Notes', description: 'App name' }
648
+ }
649
+ }
650
+ };
651
+
652
+ /**
653
+ * Get templates by category
654
+ */
655
+ export function getTemplatesByCategory(category) {
656
+ return Object.values(TEMPLATES).filter(t => t.category === category);
657
+ }
658
+
659
+ /**
660
+ * Get all categories with counts
661
+ */
662
+ export function getCategories() {
663
+ const categoryMap = new Map();
664
+
665
+ for (const template of Object.values(TEMPLATES)) {
666
+ const existing = categoryMap.get(template.category) || 0;
667
+ categoryMap.set(template.category, existing + 1);
668
+ }
669
+
670
+ return Array.from(categoryMap.entries()).map(([id, count]) => ({
671
+ id,
672
+ name: id.charAt(0).toUpperCase() + id.slice(1),
673
+ count
674
+ }));
675
+ }
676
+
677
+ /**
678
+ * Search templates by query
679
+ */
680
+ export function searchTemplates(query) {
681
+ const q = query.toLowerCase();
682
+ return Object.values(TEMPLATES).filter(t =>
683
+ t.name.toLowerCase().includes(q) ||
684
+ t.description.toLowerCase().includes(q) ||
685
+ t.tags.some(tag => tag.toLowerCase().includes(q)) ||
686
+ t.category.toLowerCase().includes(q)
687
+ );
688
+ }
689
+
690
+ /**
691
+ * Get template by ID
692
+ */
693
+ export function getTemplate(id) {
694
+ return TEMPLATES[id] || null;
695
+ }
696
+
697
+ /**
698
+ * Get category icon
699
+ */
700
+ export function getCategoryIcon(category) {
701
+ const icons = {
702
+ landing: '🌐',
703
+ dashboard: '📊',
704
+ ecommerce: '🛒',
705
+ blog: '📝',
706
+ portfolio: '💼',
707
+ app: '📱'
708
+ };
709
+ return icons[category] || '📦';
710
+ }
711
+
712
+ /**
713
+ * Get all template IDs
714
+ */
715
+ export function getTemplateIds() {
716
+ return Object.keys(TEMPLATES);
717
+ }
718
+
719
+ /**
720
+ * Validate template ID
721
+ */
722
+ export function isValidTemplate(id) {
723
+ return id in TEMPLATES;
724
+ }