snowbase-templates-installer 1.0.1
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 +70 -0
- package/bin/cli.js +140 -0
- package/landing-pages/ai-saas-template/.orchids/orchids.json +8 -0
- package/landing-pages/ai-saas-template/README.md +36 -0
- package/landing-pages/ai-saas-template/bun.lock +2062 -0
- package/landing-pages/ai-saas-template/components.json +22 -0
- package/landing-pages/ai-saas-template/eslint.config.mjs +33 -0
- package/landing-pages/ai-saas-template/next.config.ts +24 -0
- package/landing-pages/ai-saas-template/package-lock.json +11708 -0
- package/landing-pages/ai-saas-template/package.json +114 -0
- package/landing-pages/ai-saas-template/postcss.config.mjs +7 -0
- package/landing-pages/ai-saas-template/public/file.svg +1 -0
- package/landing-pages/ai-saas-template/public/globe.svg +1 -0
- package/landing-pages/ai-saas-template/public/next.svg +1 -0
- package/landing-pages/ai-saas-template/public/vercel.svg +1 -0
- package/landing-pages/ai-saas-template/public/window.svg +1 -0
- package/landing-pages/ai-saas-template/src/app/favicon.ico +0 -0
- package/landing-pages/ai-saas-template/src/app/global-error.tsx +5 -0
- package/landing-pages/ai-saas-template/src/app/globals.css +172 -0
- package/landing-pages/ai-saas-template/src/app/layout.tsx +42 -0
- package/landing-pages/ai-saas-template/src/app/page.tsx +23 -0
- package/landing-pages/ai-saas-template/src/components/ErrorReporter.tsx +136 -0
- package/landing-pages/ai-saas-template/src/components/sections/cta.tsx +62 -0
- package/landing-pages/ai-saas-template/src/components/sections/features-grid.tsx +205 -0
- package/landing-pages/ai-saas-template/src/components/sections/footer.tsx +111 -0
- package/landing-pages/ai-saas-template/src/components/sections/hero.tsx +92 -0
- package/landing-pages/ai-saas-template/src/components/sections/logos.tsx +69 -0
- package/landing-pages/ai-saas-template/src/components/sections/navbar.tsx +83 -0
- package/landing-pages/ai-saas-template/src/components/sections/testimonials-header.tsx +41 -0
- package/landing-pages/ai-saas-template/src/components/sections/value-props.tsx +97 -0
- package/landing-pages/ai-saas-template/src/components/ui/accordion.tsx +66 -0
- package/landing-pages/ai-saas-template/src/components/ui/alert-dialog.tsx +157 -0
- package/landing-pages/ai-saas-template/src/components/ui/alert.tsx +66 -0
- package/landing-pages/ai-saas-template/src/components/ui/aspect-ratio.tsx +11 -0
- package/landing-pages/ai-saas-template/src/components/ui/avatar.tsx +53 -0
- package/landing-pages/ai-saas-template/src/components/ui/badge.tsx +46 -0
- package/landing-pages/ai-saas-template/src/components/ui/breadcrumb.tsx +109 -0
- package/landing-pages/ai-saas-template/src/components/ui/button-group.tsx +83 -0
- package/landing-pages/ai-saas-template/src/components/ui/button.tsx +59 -0
- package/landing-pages/ai-saas-template/src/components/ui/calendar.tsx +213 -0
- package/landing-pages/ai-saas-template/src/components/ui/card.tsx +92 -0
- package/landing-pages/ai-saas-template/src/components/ui/carousel.tsx +241 -0
- package/landing-pages/ai-saas-template/src/components/ui/chart.tsx +353 -0
- package/landing-pages/ai-saas-template/src/components/ui/checkbox.tsx +32 -0
- package/landing-pages/ai-saas-template/src/components/ui/collapsible.tsx +33 -0
- package/landing-pages/ai-saas-template/src/components/ui/command.tsx +184 -0
- package/landing-pages/ai-saas-template/src/components/ui/context-menu.tsx +252 -0
- package/landing-pages/ai-saas-template/src/components/ui/dialog.tsx +143 -0
- package/landing-pages/ai-saas-template/src/components/ui/drawer.tsx +135 -0
- package/landing-pages/ai-saas-template/src/components/ui/dropdown-menu.tsx +257 -0
- package/landing-pages/ai-saas-template/src/components/ui/empty.tsx +104 -0
- package/landing-pages/ai-saas-template/src/components/ui/field.tsx +248 -0
- package/landing-pages/ai-saas-template/src/components/ui/form.tsx +167 -0
- package/landing-pages/ai-saas-template/src/components/ui/hover-card.tsx +44 -0
- package/landing-pages/ai-saas-template/src/components/ui/input-group.tsx +170 -0
- package/landing-pages/ai-saas-template/src/components/ui/input-otp.tsx +77 -0
- package/landing-pages/ai-saas-template/src/components/ui/input.tsx +21 -0
- package/landing-pages/ai-saas-template/src/components/ui/item.tsx +193 -0
- package/landing-pages/ai-saas-template/src/components/ui/kbd.tsx +28 -0
- package/landing-pages/ai-saas-template/src/components/ui/label.tsx +24 -0
- package/landing-pages/ai-saas-template/src/components/ui/menubar.tsx +276 -0
- package/landing-pages/ai-saas-template/src/components/ui/navigation-menu.tsx +168 -0
- package/landing-pages/ai-saas-template/src/components/ui/pagination.tsx +127 -0
- package/landing-pages/ai-saas-template/src/components/ui/popover.tsx +48 -0
- package/landing-pages/ai-saas-template/src/components/ui/progress.tsx +31 -0
- package/landing-pages/ai-saas-template/src/components/ui/radio-group.tsx +45 -0
- package/landing-pages/ai-saas-template/src/components/ui/resizable.tsx +56 -0
- package/landing-pages/ai-saas-template/src/components/ui/scroll-area.tsx +58 -0
- package/landing-pages/ai-saas-template/src/components/ui/select.tsx +185 -0
- package/landing-pages/ai-saas-template/src/components/ui/separator.tsx +28 -0
- package/landing-pages/ai-saas-template/src/components/ui/sheet.tsx +139 -0
- package/landing-pages/ai-saas-template/src/components/ui/sidebar.tsx +726 -0
- package/landing-pages/ai-saas-template/src/components/ui/skeleton.tsx +13 -0
- package/landing-pages/ai-saas-template/src/components/ui/slider.tsx +63 -0
- package/landing-pages/ai-saas-template/src/components/ui/sonner.tsx +25 -0
- package/landing-pages/ai-saas-template/src/components/ui/spinner.tsx +16 -0
- package/landing-pages/ai-saas-template/src/components/ui/switch.tsx +31 -0
- package/landing-pages/ai-saas-template/src/components/ui/table.tsx +116 -0
- package/landing-pages/ai-saas-template/src/components/ui/tabs.tsx +66 -0
- package/landing-pages/ai-saas-template/src/components/ui/textarea.tsx +18 -0
- package/landing-pages/ai-saas-template/src/components/ui/toggle-group.tsx +73 -0
- package/landing-pages/ai-saas-template/src/components/ui/toggle.tsx +47 -0
- package/landing-pages/ai-saas-template/src/components/ui/tooltip.tsx +61 -0
- package/landing-pages/ai-saas-template/src/hooks/use-mobile.ts +19 -0
- package/landing-pages/ai-saas-template/src/lib/hooks/use-mobile.tsx +21 -0
- package/landing-pages/ai-saas-template/src/lib/utils.ts +6 -0
- package/landing-pages/ai-saas-template/src/visual-edits/VisualEditsMessenger.tsx +2159 -0
- package/landing-pages/ai-saas-template/src/visual-edits/component-tagger-loader.js +460 -0
- package/landing-pages/ai-saas-template/tsconfig.json +42 -0
- package/landing-pages/open-engineer-template/.orchids/orchids.json +8 -0
- package/landing-pages/open-engineer-template/README.md +36 -0
- package/landing-pages/open-engineer-template/bun.lock +2062 -0
- package/landing-pages/open-engineer-template/components.json +22 -0
- package/landing-pages/open-engineer-template/eslint.config.mjs +33 -0
- package/landing-pages/open-engineer-template/next.config.ts +24 -0
- package/landing-pages/open-engineer-template/package-lock.json +13669 -0
- package/landing-pages/open-engineer-template/package.json +114 -0
- package/landing-pages/open-engineer-template/postcss.config.mjs +7 -0
- package/landing-pages/open-engineer-template/public/file.svg +1 -0
- package/landing-pages/open-engineer-template/public/globe.svg +1 -0
- package/landing-pages/open-engineer-template/public/next.svg +1 -0
- package/landing-pages/open-engineer-template/public/vercel.svg +1 -0
- package/landing-pages/open-engineer-template/public/window.svg +1 -0
- package/landing-pages/open-engineer-template/src/app/favicon.ico +0 -0
- package/landing-pages/open-engineer-template/src/app/global-error.tsx +5 -0
- package/landing-pages/open-engineer-template/src/app/globals.css +189 -0
- package/landing-pages/open-engineer-template/src/app/layout.tsx +42 -0
- package/landing-pages/open-engineer-template/src/app/page.tsx +31 -0
- package/landing-pages/open-engineer-template/src/components/ErrorReporter.tsx +136 -0
- package/landing-pages/open-engineer-template/src/components/sections/cta-stats.tsx +71 -0
- package/landing-pages/open-engineer-template/src/components/sections/faq.tsx +188 -0
- package/landing-pages/open-engineer-template/src/components/sections/features-grid.tsx +193 -0
- package/landing-pages/open-engineer-template/src/components/sections/footer.tsx +137 -0
- package/landing-pages/open-engineer-template/src/components/sections/header.tsx +105 -0
- package/landing-pages/open-engineer-template/src/components/sections/hero.tsx +118 -0
- package/landing-pages/open-engineer-template/src/components/sections/how-it-works.tsx +123 -0
- package/landing-pages/open-engineer-template/src/components/sections/pricing.tsx +168 -0
- package/landing-pages/open-engineer-template/src/components/sections/testimonials-logos.tsx +88 -0
- package/landing-pages/open-engineer-template/src/components/sections/use-cases.tsx +141 -0
- package/landing-pages/open-engineer-template/src/components/sections/workflow-tabs.tsx +792 -0
- package/landing-pages/open-engineer-template/src/components/ui/accordion.tsx +66 -0
- package/landing-pages/open-engineer-template/src/components/ui/alert-dialog.tsx +157 -0
- package/landing-pages/open-engineer-template/src/components/ui/alert.tsx +66 -0
- package/landing-pages/open-engineer-template/src/components/ui/aspect-ratio.tsx +11 -0
- package/landing-pages/open-engineer-template/src/components/ui/avatar.tsx +53 -0
- package/landing-pages/open-engineer-template/src/components/ui/badge.tsx +46 -0
- package/landing-pages/open-engineer-template/src/components/ui/breadcrumb.tsx +109 -0
- package/landing-pages/open-engineer-template/src/components/ui/button-group.tsx +83 -0
- package/landing-pages/open-engineer-template/src/components/ui/button.tsx +59 -0
- package/landing-pages/open-engineer-template/src/components/ui/calendar.tsx +213 -0
- package/landing-pages/open-engineer-template/src/components/ui/card.tsx +92 -0
- package/landing-pages/open-engineer-template/src/components/ui/carousel.tsx +241 -0
- package/landing-pages/open-engineer-template/src/components/ui/chart.tsx +353 -0
- package/landing-pages/open-engineer-template/src/components/ui/checkbox.tsx +32 -0
- package/landing-pages/open-engineer-template/src/components/ui/collapsible.tsx +33 -0
- package/landing-pages/open-engineer-template/src/components/ui/command.tsx +184 -0
- package/landing-pages/open-engineer-template/src/components/ui/context-menu.tsx +252 -0
- package/landing-pages/open-engineer-template/src/components/ui/dialog.tsx +143 -0
- package/landing-pages/open-engineer-template/src/components/ui/drawer.tsx +135 -0
- package/landing-pages/open-engineer-template/src/components/ui/dropdown-menu.tsx +257 -0
- package/landing-pages/open-engineer-template/src/components/ui/empty.tsx +104 -0
- package/landing-pages/open-engineer-template/src/components/ui/field.tsx +248 -0
- package/landing-pages/open-engineer-template/src/components/ui/form.tsx +167 -0
- package/landing-pages/open-engineer-template/src/components/ui/hover-card.tsx +44 -0
- package/landing-pages/open-engineer-template/src/components/ui/input-group.tsx +170 -0
- package/landing-pages/open-engineer-template/src/components/ui/input-otp.tsx +77 -0
- package/landing-pages/open-engineer-template/src/components/ui/input.tsx +21 -0
- package/landing-pages/open-engineer-template/src/components/ui/item.tsx +193 -0
- package/landing-pages/open-engineer-template/src/components/ui/kbd.tsx +28 -0
- package/landing-pages/open-engineer-template/src/components/ui/label.tsx +24 -0
- package/landing-pages/open-engineer-template/src/components/ui/menubar.tsx +276 -0
- package/landing-pages/open-engineer-template/src/components/ui/navigation-menu.tsx +168 -0
- package/landing-pages/open-engineer-template/src/components/ui/pagination.tsx +127 -0
- package/landing-pages/open-engineer-template/src/components/ui/popover.tsx +48 -0
- package/landing-pages/open-engineer-template/src/components/ui/progress.tsx +31 -0
- package/landing-pages/open-engineer-template/src/components/ui/radio-group.tsx +45 -0
- package/landing-pages/open-engineer-template/src/components/ui/resizable.tsx +56 -0
- package/landing-pages/open-engineer-template/src/components/ui/scroll-area.tsx +58 -0
- package/landing-pages/open-engineer-template/src/components/ui/select.tsx +185 -0
- package/landing-pages/open-engineer-template/src/components/ui/separator.tsx +28 -0
- package/landing-pages/open-engineer-template/src/components/ui/sheet.tsx +139 -0
- package/landing-pages/open-engineer-template/src/components/ui/sidebar.tsx +726 -0
- package/landing-pages/open-engineer-template/src/components/ui/skeleton.tsx +13 -0
- package/landing-pages/open-engineer-template/src/components/ui/slider.tsx +63 -0
- package/landing-pages/open-engineer-template/src/components/ui/sonner.tsx +25 -0
- package/landing-pages/open-engineer-template/src/components/ui/spinner.tsx +16 -0
- package/landing-pages/open-engineer-template/src/components/ui/switch.tsx +31 -0
- package/landing-pages/open-engineer-template/src/components/ui/table.tsx +116 -0
- package/landing-pages/open-engineer-template/src/components/ui/tabs.tsx +66 -0
- package/landing-pages/open-engineer-template/src/components/ui/textarea.tsx +18 -0
- package/landing-pages/open-engineer-template/src/components/ui/toggle-group.tsx +73 -0
- package/landing-pages/open-engineer-template/src/components/ui/toggle.tsx +47 -0
- package/landing-pages/open-engineer-template/src/components/ui/tooltip.tsx +61 -0
- package/landing-pages/open-engineer-template/src/hooks/use-mobile.ts +19 -0
- package/landing-pages/open-engineer-template/src/lib/hooks/use-mobile.tsx +21 -0
- package/landing-pages/open-engineer-template/src/lib/utils.ts +6 -0
- package/landing-pages/open-engineer-template/src/visual-edits/VisualEditsMessenger.tsx +2159 -0
- package/landing-pages/open-engineer-template/src/visual-edits/component-tagger-loader.js +460 -0
- package/landing-pages/open-engineer-template/tsconfig.json +42 -0
- package/package.json +36 -0
- package/templates.json +22 -0
package/README.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Landing Page Installer
|
|
2
|
+
|
|
3
|
+
A CLI tool to browse and install beautiful landing page templates directly into your projects.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- š Browse available landing page templates
|
|
8
|
+
- š View live preview links
|
|
9
|
+
- š„ Install templates with a single command
|
|
10
|
+
- šØ Multiple template categories (SaaS, Portfolio, etc.)
|
|
11
|
+
- ā” Fast local installation
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install -g landing-page-installer
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
Run the CLI:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
landing-page
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Available Templates
|
|
28
|
+
|
|
29
|
+
### 1. AI SaaS Template
|
|
30
|
+
- **Preview**: https://ai-saas-template-preview.vercel.app
|
|
31
|
+
- **Description**: Modern landing page for AI-powered SaaS products
|
|
32
|
+
- **Technologies**: HTML, CSS, JavaScript, Tailwind CSS
|
|
33
|
+
- **Tags**: saas, ai, tech, modern
|
|
34
|
+
|
|
35
|
+
### 2. Open Engineer Landing Page
|
|
36
|
+
- **Preview**: https://open-engineer-landing-page.vercel.app/
|
|
37
|
+
- **Description**: Professional landing page for engineering portfolios
|
|
38
|
+
- **Technologies**: HTML, CSS, JavaScript
|
|
39
|
+
- **Tags**: portfolio, engineering, professional, technical
|
|
40
|
+
|
|
41
|
+
## Development
|
|
42
|
+
|
|
43
|
+
### Adding New Templates
|
|
44
|
+
|
|
45
|
+
1. Create a new folder in `landing-pages/`
|
|
46
|
+
2. Add your template files to that folder
|
|
47
|
+
3. Update `templates.json` with the new template info
|
|
48
|
+
|
|
49
|
+
Example template structure:
|
|
50
|
+
```
|
|
51
|
+
landing-pages/
|
|
52
|
+
āāā your-template/
|
|
53
|
+
ā āāā index.html
|
|
54
|
+
ā āāā style.css
|
|
55
|
+
ā āāā assets/
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Local Development
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Install dependencies
|
|
62
|
+
npm install
|
|
63
|
+
|
|
64
|
+
# Run the CLI locally
|
|
65
|
+
npm start
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## License
|
|
69
|
+
|
|
70
|
+
MIT
|
package/bin/cli.js
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const inquirer = require('inquirer');
|
|
4
|
+
const fs = require('fs-extra');
|
|
5
|
+
const path = require('path');
|
|
6
|
+
const chalk = require('chalk');
|
|
7
|
+
const ora = require('ora');
|
|
8
|
+
|
|
9
|
+
const templates = require('../templates.json');
|
|
10
|
+
|
|
11
|
+
async function showMainMenu() {
|
|
12
|
+
console.log(chalk.blue.bold('\nš Landing Page Installer\n'));
|
|
13
|
+
|
|
14
|
+
const { action } = await inquirer.prompt([
|
|
15
|
+
{
|
|
16
|
+
type: 'list',
|
|
17
|
+
name: 'action',
|
|
18
|
+
message: 'What would you like to do?',
|
|
19
|
+
choices: [
|
|
20
|
+
{ name: 'š Browse landing pages', value: 'browse' },
|
|
21
|
+
{ name: 'š„ Install a landing page', value: 'install' },
|
|
22
|
+
{ name: 'š View preview links', value: 'previews' },
|
|
23
|
+
{ name: 'ā Exit', value: 'exit' }
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
]);
|
|
27
|
+
|
|
28
|
+
switch (action) {
|
|
29
|
+
case 'browse':
|
|
30
|
+
await browseTemplates();
|
|
31
|
+
break;
|
|
32
|
+
case 'install':
|
|
33
|
+
await installTemplate();
|
|
34
|
+
break;
|
|
35
|
+
case 'previews':
|
|
36
|
+
await showPreviews();
|
|
37
|
+
break;
|
|
38
|
+
case 'exit':
|
|
39
|
+
console.log(chalk.green('Goodbye! š'));
|
|
40
|
+
process.exit(0);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
async function browseTemplates() {
|
|
45
|
+
console.log(chalk.cyan('\nš Available Landing Pages:\n'));
|
|
46
|
+
|
|
47
|
+
templates.templates.forEach((template, index) => {
|
|
48
|
+
console.log(chalk.yellow(`${index + 1}. ${template.name}`));
|
|
49
|
+
console.log(` ${template.description}`);
|
|
50
|
+
console.log(` Tags: ${template.tags.join(', ')}`);
|
|
51
|
+
console.log(` Technologies: ${template.technologies.join(', ')}`);
|
|
52
|
+
console.log('');
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
await showMainMenu();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async function showPreviews() {
|
|
59
|
+
console.log(chalk.cyan('\nš Preview Links:\n'));
|
|
60
|
+
|
|
61
|
+
templates.templates.forEach((template, index) => {
|
|
62
|
+
console.log(chalk.yellow(`${index + 1}. ${template.name}`));
|
|
63
|
+
console.log(` Preview: ${chalk.blue(template.preview)}`);
|
|
64
|
+
console.log('');
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
await showMainMenu();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
async function installTemplate() {
|
|
71
|
+
const { selectedTemplate } = await inquirer.prompt([
|
|
72
|
+
{
|
|
73
|
+
type: 'list',
|
|
74
|
+
name: 'selectedTemplate',
|
|
75
|
+
message: 'Select a landing page to install:',
|
|
76
|
+
choices: templates.templates.map(t => ({
|
|
77
|
+
name: `${t.name} - ${t.description}`,
|
|
78
|
+
value: t.id
|
|
79
|
+
}))
|
|
80
|
+
}
|
|
81
|
+
]);
|
|
82
|
+
|
|
83
|
+
const template = templates.templates.find(t => t.id === selectedTemplate);
|
|
84
|
+
|
|
85
|
+
const { projectName } = await inquirer.prompt([
|
|
86
|
+
{
|
|
87
|
+
type: 'input',
|
|
88
|
+
name: 'projectName',
|
|
89
|
+
message: 'Enter your project name:',
|
|
90
|
+
default: template.id
|
|
91
|
+
}
|
|
92
|
+
]);
|
|
93
|
+
|
|
94
|
+
const { confirm } = await inquirer.prompt([
|
|
95
|
+
{
|
|
96
|
+
type: 'confirm',
|
|
97
|
+
name: 'confirm',
|
|
98
|
+
message: `Install "${template.name}" to ./${projectName}?`,
|
|
99
|
+
default: true
|
|
100
|
+
}
|
|
101
|
+
]);
|
|
102
|
+
|
|
103
|
+
if (confirm) {
|
|
104
|
+
await copyTemplate(template, projectName);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
await showMainMenu();
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
async function copyTemplate(template, projectName) {
|
|
111
|
+
const spinner = ora('Installing landing page...').start();
|
|
112
|
+
|
|
113
|
+
try {
|
|
114
|
+
const sourceDir = path.join(__dirname, '../landing-pages', template.folder);
|
|
115
|
+
const targetDir = path.join(process.cwd(), projectName);
|
|
116
|
+
|
|
117
|
+
// Check if template folder exists
|
|
118
|
+
if (!await fs.pathExists(sourceDir)) {
|
|
119
|
+
spinner.fail(`Template folder not found: ${template.folder}`);
|
|
120
|
+
console.log(chalk.red(`Please add the template files to: landing-pages/${template.folder}`));
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
await fs.copy(sourceDir, targetDir);
|
|
125
|
+
|
|
126
|
+
spinner.succeed(`Successfully installed "${template.name}" to ./${projectName}`);
|
|
127
|
+
console.log(chalk.green('\n⨠Installation complete!'));
|
|
128
|
+
console.log(chalk.cyan(`\nNext steps:`));
|
|
129
|
+
console.log(` cd ${projectName}`);
|
|
130
|
+
console.log(` # Open index.html in your browser`);
|
|
131
|
+
console.log(` # Or start a local server: python -m http.server 8000`);
|
|
132
|
+
|
|
133
|
+
} catch (error) {
|
|
134
|
+
spinner.fail('Installation failed');
|
|
135
|
+
console.error(chalk.red('Error:', error.message));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Start the CLI
|
|
140
|
+
showMainMenu().catch(console.error);
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
|
|
2
|
+
|
|
3
|
+
## Getting Started
|
|
4
|
+
|
|
5
|
+
First, run the development server:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm run dev
|
|
9
|
+
# or
|
|
10
|
+
yarn dev
|
|
11
|
+
# or
|
|
12
|
+
pnpm dev
|
|
13
|
+
# or
|
|
14
|
+
bun dev
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
|
18
|
+
|
|
19
|
+
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
|
|
20
|
+
|
|
21
|
+
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
|
|
22
|
+
|
|
23
|
+
## Learn More
|
|
24
|
+
|
|
25
|
+
To learn more about Next.js, take a look at the following resources:
|
|
26
|
+
|
|
27
|
+
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
|
|
28
|
+
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
|
|
29
|
+
|
|
30
|
+
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
|
|
31
|
+
|
|
32
|
+
## Deploy on Vercel
|
|
33
|
+
|
|
34
|
+
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
|
|
35
|
+
|
|
36
|
+
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
|