create-shipsite 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,357 @@
1
+ #!/usr/bin/env node
2
+ import * as p from '@clack/prompts';
3
+ import { existsSync, mkdirSync, writeFileSync } from 'fs';
4
+ import { resolve, join } from 'path';
5
+ import { execSync } from 'child_process';
6
+ async function main() {
7
+ console.log();
8
+ p.intro('Create a new ShipSite project');
9
+ const projectName = (await p.text({
10
+ message: 'Project name',
11
+ placeholder: 'my-website',
12
+ validate: (value) => {
13
+ if (!value)
14
+ return 'Project name is required';
15
+ if (existsSync(resolve(value)))
16
+ return 'Directory already exists';
17
+ },
18
+ }));
19
+ if (p.isCancel(projectName)) {
20
+ p.cancel('Cancelled');
21
+ process.exit(0);
22
+ }
23
+ const primaryColor = (await p.text({
24
+ message: 'Primary color (hex)',
25
+ placeholder: '#5d5bd4',
26
+ initialValue: '#5d5bd4',
27
+ }));
28
+ if (p.isCancel(primaryColor)) {
29
+ p.cancel('Cancelled');
30
+ process.exit(0);
31
+ }
32
+ const localesResult = (await p.multiselect({
33
+ message: 'Which languages do you need?',
34
+ options: [
35
+ { value: 'en', label: 'English', hint: 'default' },
36
+ { value: 'de', label: 'German' },
37
+ { value: 'fr', label: 'French' },
38
+ { value: 'es', label: 'Spanish' },
39
+ ],
40
+ required: true,
41
+ initialValues: ['en'],
42
+ }));
43
+ if (p.isCancel(localesResult)) {
44
+ p.cancel('Cancelled');
45
+ process.exit(0);
46
+ }
47
+ const locales = localesResult;
48
+ const defaultLocale = locales[0] || 'en';
49
+ const s = p.spinner();
50
+ s.start('Creating project...');
51
+ const projectDir = resolve(projectName);
52
+ mkdirSync(projectDir, { recursive: true });
53
+ // shipsite.json
54
+ const config = {
55
+ $schema: 'https://schema.shipsite.dev/v1.json',
56
+ name: projectName,
57
+ url: `https://${projectName}.com`,
58
+ logo: '/images/logo.svg',
59
+ favicon: '/favicon.png',
60
+ ogImage: '/images/og-image.jpg',
61
+ colors: {
62
+ primary: primaryColor,
63
+ accent: '#067647',
64
+ background: '#ffffff',
65
+ text: '#1f2a37',
66
+ },
67
+ fonts: { heading: 'Inter', body: 'Inter' },
68
+ i18n: {
69
+ defaultLocale,
70
+ locales,
71
+ localePrefix: 'as-needed',
72
+ },
73
+ navigation: {
74
+ items: [
75
+ { label: 'Features', href: '/features' },
76
+ { label: 'Pricing', href: '/pricing' },
77
+ { label: 'Blog', href: '/blog' },
78
+ ],
79
+ cta: {
80
+ label: 'Get Started',
81
+ href: `https://app.${projectName}.com/signup`,
82
+ },
83
+ },
84
+ footer: {
85
+ columns: [
86
+ {
87
+ title: 'Product',
88
+ links: [
89
+ { label: 'Features', href: '/features' },
90
+ { label: 'Pricing', href: '/pricing' },
91
+ ],
92
+ },
93
+ {
94
+ title: 'Legal',
95
+ links: [
96
+ { label: 'Privacy Policy', href: '/privacy' },
97
+ { label: 'Terms of Service', href: '/terms' },
98
+ ],
99
+ },
100
+ ],
101
+ copyright: `\u00A9 ${new Date().getFullYear()} ${projectName}`,
102
+ },
103
+ pages: [
104
+ { slug: '', type: 'landing', content: 'landing', locales },
105
+ {
106
+ slug: 'pricing',
107
+ type: 'page',
108
+ content: 'pricing',
109
+ locales: [defaultLocale],
110
+ },
111
+ {
112
+ slug: 'blog',
113
+ type: 'blog-index',
114
+ content: 'blog',
115
+ locales: [defaultLocale],
116
+ },
117
+ {
118
+ slug: 'blog/getting-started',
119
+ type: 'blog-article',
120
+ content: 'blog/getting-started',
121
+ locales: [defaultLocale],
122
+ },
123
+ {
124
+ slug: 'privacy',
125
+ type: 'legal',
126
+ content: 'privacy',
127
+ locales: [defaultLocale],
128
+ },
129
+ {
130
+ slug: 'terms',
131
+ type: 'legal',
132
+ content: 'terms',
133
+ locales: [defaultLocale],
134
+ },
135
+ ],
136
+ blog: {
137
+ authors: {
138
+ default: {
139
+ name: 'Team',
140
+ role: 'Author',
141
+ image: '/images/team.avif',
142
+ },
143
+ },
144
+ },
145
+ };
146
+ writeFileSync(join(projectDir, 'shipsite.json'), JSON.stringify(config, null, 2) + '\n');
147
+ // Content directories and files
148
+ const dirs = [
149
+ 'landing',
150
+ 'pricing',
151
+ 'blog',
152
+ 'blog/getting-started',
153
+ 'privacy',
154
+ 'terms',
155
+ ];
156
+ for (const dir of dirs) {
157
+ mkdirSync(join(projectDir, 'content', dir), { recursive: true });
158
+ }
159
+ const today = new Date().toISOString().split('T')[0];
160
+ // Landing page
161
+ writeFileSync(join(projectDir, 'content', 'landing', 'en.mdx'), `---
162
+ title: "${projectName} \u2014 Build Something Amazing"
163
+ description: "The best way to build your next great product."
164
+ ---
165
+
166
+ <Hero
167
+ title="Build Something Amazing"
168
+ description="The fastest way to launch your product. Simple, powerful, and ready to go."
169
+ primaryCta={{ label: "Get Started Free", href: "https://app.${projectName}.com/signup" }}
170
+ secondaryCta={{ label: "Learn More", href: "/features" }}
171
+ />
172
+
173
+ <Features title="Everything You Need" columns={3}>
174
+ <Feature title="Fast Setup" description="Get started in minutes, not days. Our intuitive setup process gets you up and running quickly." />
175
+ <Feature title="Powerful Features" description="All the tools you need to succeed, built right in. No plugins or extensions needed." />
176
+ <Feature title="Great Support" description="Our team is here to help you every step of the way with world-class support." />
177
+ </Features>
178
+
179
+ <BannerCTA
180
+ title="Ready to get started?"
181
+ buttonText="Start Free Trial"
182
+ buttonHref="https://app.${projectName}.com/signup"
183
+ subtext="No credit card required. Free plan available."
184
+ />
185
+
186
+ <FAQ title="Frequently Asked Questions">
187
+ <FAQItem question="Is there a free plan?">
188
+ Yes! We offer a generous free plan that includes all core features.
189
+ </FAQItem>
190
+ <FAQItem question="Can I cancel anytime?">
191
+ Absolutely. No long-term contracts or cancellation fees.
192
+ </FAQItem>
193
+ <FAQItem question="Do you offer support?">
194
+ Yes, we provide email support on all plans and priority support on paid plans.
195
+ </FAQItem>
196
+ </FAQ>
197
+ `);
198
+ // Pricing
199
+ writeFileSync(join(projectDir, 'content', 'pricing', 'en.mdx'), `---
200
+ title: "Pricing \u2014 ${projectName}"
201
+ description: "Simple, transparent pricing for teams of all sizes."
202
+ ---
203
+
204
+ <PricingSection title="Simple Pricing" description="Choose the plan that works for you.">
205
+ <PricingPlan name="Free" price="$0" description="For individuals getting started" features={["Up to 5 users", "Core features", "Community support"]} cta={{ label: "Get Started", href: "https://app.${projectName}.com/signup" }} />
206
+ <PricingPlan name="Pro" price="$29/mo" yearlyPrice="$24/mo" description="For growing teams" features={["Unlimited users", "All features", "Priority support", "Custom integrations"]} cta={{ label: "Start Free Trial", href: "https://app.${projectName}.com/signup?plan=pro" }} popular={true} />
207
+ <PricingPlan name="Enterprise" price="Custom" description="For large organizations" features={["Everything in Pro", "Dedicated support", "SLA", "Custom contracts"]} cta={{ label: "Contact Sales", href: "mailto:sales@${projectName}.com" }} />
208
+ </PricingSection>
209
+ `);
210
+ // Blog index
211
+ writeFileSync(join(projectDir, 'content', 'blog', 'en.mdx'), `---
212
+ title: "Blog \u2014 ${projectName}"
213
+ description: "Latest news, updates, and insights."
214
+ ---
215
+
216
+ <BlogIndex title="Our Blog" description="Latest news, updates, and insights from our team." />
217
+ `);
218
+ // Blog post
219
+ writeFileSync(join(projectDir, 'content', 'blog', 'getting-started', 'en.mdx'), `---
220
+ title: "Getting Started with ${projectName}"
221
+ description: "Learn how to set up and start using ${projectName} in minutes."
222
+ date: "${today}"
223
+ readingTime: 3
224
+ author: default
225
+ ---
226
+
227
+ <BlogArticle>
228
+
229
+ <BlogIntro>
230
+ Welcome to ${projectName}! In this guide, we'll walk you through everything you need to know to get started.
231
+ </BlogIntro>
232
+
233
+ ## Step 1: Create Your Account
234
+
235
+ Sign up for a free account at [app.${projectName}.com](https://app.${projectName}.com/signup). No credit card required.
236
+
237
+ ## Step 2: Configure Your Settings
238
+
239
+ Once you're in, head to Settings to customize your workspace. You can invite team members, set up integrations, and more.
240
+
241
+ ## Step 3: Start Building
242
+
243
+ You're all set! Start exploring the features and building something great.
244
+
245
+ <StartFreeNowCTA
246
+ title="Ready to get started?"
247
+ bullets={["No credit card required", "Free plan available", "Cancel anytime"]}
248
+ buttonText="Start Free"
249
+ buttonHref="https://app.${projectName}.com/signup"
250
+ />
251
+
252
+ </BlogArticle>
253
+ `);
254
+ // Privacy
255
+ writeFileSync(join(projectDir, 'content', 'privacy', 'en.mdx'), `---
256
+ title: "Privacy Policy"
257
+ description: "How we handle your data."
258
+ ---
259
+
260
+ <LegalPage title="Privacy Policy" lastUpdated="${today}">
261
+ <LegalSection title="1. Data Collection">We collect only the data necessary to provide our services.</LegalSection>
262
+ <LegalSection title="2. Data Usage">Your data is used solely to deliver and improve our services.</LegalSection>
263
+ <LegalSection title="3. Contact">For privacy-related inquiries, contact us at privacy@${projectName}.com.</LegalSection>
264
+ </LegalPage>
265
+ `);
266
+ // Terms
267
+ writeFileSync(join(projectDir, 'content', 'terms', 'en.mdx'), `---
268
+ title: "Terms of Service"
269
+ description: "Terms and conditions for using our service."
270
+ ---
271
+
272
+ <LegalPage title="Terms of Service" lastUpdated="${today}">
273
+ <LegalSection title="1. Acceptance of Terms">By using our service, you agree to these terms.</LegalSection>
274
+ <LegalSection title="2. Use of Service">You may use our service for lawful purposes only.</LegalSection>
275
+ <LegalSection title="3. Termination">We reserve the right to terminate accounts that violate these terms.</LegalSection>
276
+ </LegalPage>
277
+ `);
278
+ // Public directory
279
+ mkdirSync(join(projectDir, 'public', 'images'), { recursive: true });
280
+ writeFileSync(join(projectDir, 'public', 'images', 'logo.svg'), `<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
281
+ <rect width="32" height="32" rx="8" fill="${primaryColor}"/>
282
+ <text x="16" y="22" text-anchor="middle" fill="white" font-size="18" font-weight="bold" font-family="system-ui">${projectName.charAt(0).toUpperCase()}</text>
283
+ </svg>`);
284
+ // Custom components directory
285
+ mkdirSync(join(projectDir, 'components'), { recursive: true });
286
+ writeFileSync(join(projectDir, 'components', 'index.ts'), `// Custom components — export your components here to use them in MDX.
287
+ // ShipSite automatically merges these with the built-in components.
288
+ //
289
+ // Example:
290
+ // export { Highlight } from './Highlight';
291
+ //
292
+ // Then use in any MDX file:
293
+ // <Highlight color="blue">Important text</Highlight>
294
+ `);
295
+ // next.config.ts — always present so AI agents and developers know where to add redirects, headers, etc.
296
+ writeFileSync(join(projectDir, 'next.config.ts'), `import type { NextConfig } from 'next';
297
+
298
+ const config: NextConfig = {
299
+ // Add your custom Next.js config here.
300
+ // ShipSite merges this with its own config automatically.
301
+ //
302
+ // Examples:
303
+ // redirects: async () => [
304
+ // { source: '/old-page', destination: '/new-page', permanent: true },
305
+ // ],
306
+ // headers: async () => [
307
+ // { source: '/(.*)', headers: [{ key: 'X-Frame-Options', value: 'DENY' }] },
308
+ // ],
309
+ };
310
+
311
+ export default config;
312
+ `);
313
+ // .gitignore
314
+ writeFileSync(join(projectDir, '.gitignore'), `node_modules/
315
+ .next/
316
+ .shipsite/
317
+ .content-collections/
318
+ *.tsbuildinfo
319
+ `);
320
+ // package.json
321
+ writeFileSync(join(projectDir, 'package.json'), JSON.stringify({
322
+ name: projectName,
323
+ version: '0.1.0',
324
+ private: true,
325
+ scripts: {
326
+ dev: 'shipsite dev',
327
+ build: 'shipsite build',
328
+ validate: 'shipsite validate',
329
+ },
330
+ dependencies: {
331
+ '@shipsite.dev/cli': '^0.1.0',
332
+ '@shipsite.dev/core': '^0.1.0',
333
+ '@shipsite.dev/components': '^0.1.0',
334
+ '@radix-ui/react-accordion': '^1.2.3',
335
+ '@radix-ui/react-dialog': '^1.1.6',
336
+ '@radix-ui/react-slot': '^1.2.0',
337
+ 'class-variance-authority': '^0.7.1',
338
+ 'clsx': '^2.1.1',
339
+ 'lucide-react': '^0.475.0',
340
+ 'tailwind-merge': '^3.0.2',
341
+ 'tw-animate-css': '^1.2.5',
342
+ },
343
+ }, null, 2) + '\n');
344
+ s.stop('Project created!');
345
+ // Initialize git
346
+ try {
347
+ execSync('git init', { cwd: projectDir, stdio: 'ignore' });
348
+ p.log.success('Initialized git repository');
349
+ }
350
+ catch {
351
+ // Git not available
352
+ }
353
+ p.note([`cd ${projectName}`, 'npm install', 'npx shipsite dev'].join('\n'), 'Next steps');
354
+ p.outro('Happy shipping!');
355
+ }
356
+ main().catch(console.error);
357
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "create-shipsite",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "bin": {
6
+ "create-shipsite": "./dist/index.js"
7
+ },
8
+ "files": [
9
+ "dist/"
10
+ ],
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "clean": "rm -rf dist"
14
+ },
15
+ "dependencies": {
16
+ "@clack/prompts": "^0.10.0"
17
+ },
18
+ "devDependencies": {
19
+ "typescript": "^5.8.3",
20
+ "@types/node": "^20"
21
+ }
22
+ }