create-solostack 1.3.2 → 1.3.3

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 CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  **The complete SaaS boilerplate for indie hackers**
6
6
 
7
- [![Version](https://img.shields.io/badge/version-1.3.1-blue.svg)](https://github.com/danish296/create-solostack)
7
+ [![Version](https://img.shields.io/badge/version-1.3.3-orange.svg)](https://github.com/danish296/create-solostack)
8
8
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
9
9
  [![Node](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg)](https://nodejs.org/)
10
10
 
@@ -334,6 +334,6 @@ MIT © Danish Akhtar
334
334
 
335
335
  **Built with ❤️ for indie hackers and solo founders**
336
336
 
337
- Made by [Danish Akhtar](https://github.com/danish296) • [GitHub](https://github.com/danish296/create-solostack) • Version 1.3.1
337
+ Made by [Danish Akhtar](https://github.com/danish296) • [GitHub](https://github.com/danish296/create-solostack) • Version 1.3.3
338
338
 
339
339
  </div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-solostack",
3
- "version": "1.3.2",
3
+ "version": "1.3.3",
4
4
  "description": "The complete SaaS boilerplate for indie hackers - Next.js 15 with auth, payments, database, and email",
5
5
  "type": "module",
6
6
  "bin": {
package/src/index.js CHANGED
@@ -28,23 +28,32 @@ import {
28
28
  * Main CLI function - orchestrates the entire project generation
29
29
  */
30
30
  export async function main() {
31
- // Display enhanced banner
32
- console.log(chalk.cyan(`
33
- ╔═══════════════════════════════════════════════════════════╗
34
- ║ ║
35
- ║ ███████╗ ██████╗ ██╗ ██████╗ ███████╗████████╗ ║
36
- ║ ██╔════╝██╔═══██╗██║ ██╔═══██╗██╔════╝╚══██╔══╝ ║
37
- ║ ███████╗██║ ██║██║ ██║ ██║███████╗ ██║ ║
38
- ╚════██║██║ ██║██║ ██║ ██║╚════██║ ██║
39
- ███████║╚██████╔╝███████╗╚██████╔╝███████║ ██║
40
- ╚══════╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝ ╚═╝
41
-
42
- The complete SaaS boilerplate for indie hackers
43
-
44
- ╚═══════════════════════════════════════════════════════════╝
31
+ // Display enhanced banner with orange theme
32
+ const orange = chalk.hex('#FF8C00');
33
+ const orangeBright = chalk.hex('#FFA500');
34
+ const orangeDim = chalk.hex('#FF7F00');
35
+
36
+ console.log(orange(`
37
+ ╔════════════════════════════════════════════════════════════════╗
38
+
39
+ ███████ ██████ ██ ██████
40
+ ██ ██ ██ ██ ██ ██
41
+ ║ ███████ ██ ██ ██ ██ ██
42
+ ██ ██ ██ ██ ██ ██
43
+ ███████ ██████ ███████ ██████
44
+ ║ ║
45
+ ║ ███████ ████████ █████ ██████ ██ ██ ║
46
+ ║ ██ ██ ██ ██ ██ ██ ██ ║
47
+ ║ ███████ ██ ███████ ██ █████ ║
48
+ ║ ██ ██ ██ ██ ██ ██ ██ ║
49
+ ║ ███████ ██ ██ ██ ██████ ██ ██ ║
50
+ ║ ║
51
+ ║ The complete SaaS boilerplate for indie hackers ║
52
+ ║ ║
53
+ ╚════════════════════════════════════════════════════════════════╝
45
54
  `));
46
55
 
47
- console.log(chalk.gray(` Version ${chalk.cyan('1.3.1')} • Built by ${chalk.cyan('Danish Akhtar')} • ${chalk.blue('github.com/danish296')}\n`));
56
+ console.log(chalk.gray(` Version ${orangeBright('1.3.3')} • Built by ${orangeBright('Danish Akhtar')} • ${orangeBright('github.com/danish296')}\n`));
48
57
 
49
58
  // Parse command line arguments
50
59
  program
@@ -6,32 +6,33 @@ import chalk from 'chalk';
6
6
  * @param {string} projectPath - Absolute path to the project
7
7
  */
8
8
  export function printSuccess(projectName, projectPath) {
9
- console.log(chalk.green.bold('\n╔═══════════════════════════════════════════════════════════╗'));
10
- console.log(chalk.green.bold('║ ║'));
11
- console.log(chalk.green.bold('║ ✅ Success! Your SaaS boilerplate is ready! ║'));
12
- console.log(chalk.green.bold('║ ║'));
13
- console.log(chalk.green.bold('╚═══════════════════════════════════════════════════════════╝\n'));
14
-
15
- console.log(chalk.cyan.bold('📁 Project Location:'));
9
+ const orange = chalk.hex('#FF8C00');
10
+ const orangeBold = chalk.hex('#FF8C00').bold;
11
+ console.log(orangeBold('\n╔═══════════════════════════════════════════════════════════╗'));
12
+ console.log(orangeBold('║ ║'));
13
+ console.log(orangeBold('║ ✅ Success! Your SaaS boilerplate is ready! ║'));
14
+ console.log(orangeBold('║ ║'));
15
+ console.log(orangeBold('╚═══════════════════════════════════════════════════════════╝\n'));
16
+ console.log(orangeBold('📁 Project Location:'));
16
17
  console.log(chalk.white(` ${chalk.gray('→')} ${projectPath}\n`));
17
18
 
18
- console.log(chalk.cyan.bold('🚀 Quick Start:\n'));
19
- console.log(chalk.white(` ${chalk.gray('$')} ${chalk.yellow(`cd ${projectName}`)}`));
20
- console.log(chalk.white(` ${chalk.gray('$')} ${chalk.yellow('cp .env.example .env')}`));
19
+ console.log(orangeBold('🚀 Quick Start:\n'));
20
+ console.log(chalk.white(` ${chalk.gray('$')} ${orange(`cd ${projectName}`)}`));
21
+ console.log(chalk.white(` ${chalk.gray('$')} ${orange('cp .env.example .env')}`));
21
22
  console.log(chalk.white(` ${chalk.gray('#')} ${chalk.gray('Add your environment variables to .env')}\n`));
22
23
 
23
- console.log(chalk.cyan.bold('🗄️ Database Setup:\n'));
24
- console.log(chalk.white(` ${chalk.gray('$')} ${chalk.yellow('npm run db:push')} ${chalk.gray('# Push schema to database')}`));
25
- console.log(chalk.white(` ${chalk.gray('$')} ${chalk.yellow('npm run db:seed')} ${chalk.gray('# Seed with sample data')}\n`));
24
+ console.log(orangeBold('🗄️ Database Setup:\n'));
25
+ console.log(chalk.white(` ${chalk.gray('$')} ${orange('npm run db:push')} ${chalk.gray('# Push schema to database')}`));
26
+ console.log(chalk.white(` ${chalk.gray('$')} ${orange('npm run db:seed')} ${chalk.gray('# Seed with sample data')}\n`));
26
27
 
27
- console.log(chalk.cyan.bold('⚡ Start Development:\n'));
28
- console.log(chalk.white(` ${chalk.gray('$')} ${chalk.yellow('npm run dev')}\n`));
28
+ console.log(orangeBold('⚡ Start Development:\n'));
29
+ console.log(chalk.white(` ${chalk.gray('$')} ${orange('npm run dev')}\n`));
29
30
 
30
- console.log(chalk.cyan.bold('📚 Documentation & Resources:\n'));
31
- console.log(chalk.white(` ${chalk.gray('•')} NextAuth: ${chalk.blue('https://next-auth.js.org')}`));
32
- console.log(chalk.white(` ${chalk.gray('•')} Prisma: ${chalk.blue('https://prisma.io')}`));
33
- console.log(chalk.white(` ${chalk.gray('•')} Stripe: ${chalk.blue('https://stripe.com/docs')}`));
34
- console.log(chalk.white(` ${chalk.gray('•')} Resend: ${chalk.blue('https://resend.com/docs')}\n`));
31
+ console.log(orangeBold('📚 Documentation & Resources:\n'));
32
+ console.log(chalk.white(` ${chalk.gray('•')} NextAuth: ${orange('https://next-auth.js.org')}`));
33
+ console.log(chalk.white(` ${chalk.gray('•')} Prisma: ${orange('https://prisma.io')}`));
34
+ console.log(chalk.white(` ${chalk.gray('•')} Stripe: ${orange('https://stripe.com/docs')}`));
35
+ console.log(chalk.white(` ${chalk.gray('•')} Resend: ${orange('https://resend.com/docs')}\n`));
35
36
 
36
37
  console.log(chalk.yellow.bold('⚠️ Important Reminders:\n'));
37
38
  console.log(chalk.white(` ${chalk.gray('•')} Set up a PostgreSQL database (Neon, Supabase, etc.)`));
@@ -39,7 +40,7 @@ export function printSuccess(projectName, projectPath) {
39
40
  console.log(chalk.white(` ${chalk.gray('•')} Configure OAuth providers (optional)\n`));
40
41
 
41
42
  console.log(chalk.magenta.bold('💡 Happy building! 🚀\n'));
42
- console.log(chalk.gray(` Built with ❤️ by ${chalk.cyan('Danish Akhtar')} • ${chalk.blue('github.com/danish296')}\n`));
43
+ console.log(chalk.gray(` Built with ❤️ by ${orange('Danish Akhtar')} • ${orange('github.com/danish296')}\n`));
43
44
  }
44
45
 
45
46
  /**
@@ -72,13 +73,15 @@ export function printInfo(message) {
72
73
  * @param {string} projectPath - Absolute path to the project
73
74
  */
74
75
  export function printProSuccess(projectName, projectPath) {
75
- console.log(chalk.green.bold('\n╔═══════════════════════════════════════════════════════════╗'));
76
- console.log(chalk.green.bold('║ ║'));
77
- console.log(chalk.green.bold('║ 💎 Your Pro SaaS is ready! 🎉 ║'));
78
- console.log(chalk.green.bold('║ ║'));
79
- console.log(chalk.green.bold('╚═══════════════════════════════════════════════════════════╝\n'));
80
-
81
- console.log(chalk.cyan.bold('💎 Pro Features Included:\n'));
76
+ const orange = chalk.hex('#FF8C00');
77
+ const orangeBold = chalk.hex('#FF8C00').bold;
78
+ console.log(orangeBold('\n╔═══════════════════════════════════════════════════════════╗'));
79
+ console.log(orangeBold('║ ║'));
80
+ console.log(orangeBold('║ 💎 Your Pro SaaS is ready! 🎉 ║'));
81
+ console.log(orangeBold('║ ║'));
82
+ console.log(orangeBold('╚═══════════════════════════════════════════════════════════╝\n'));
83
+
84
+ console.log(orangeBold('💎 Pro Features Included:\n'));
82
85
  console.log(chalk.white(` ${chalk.green('✓')} OAuth (Google & GitHub)`));
83
86
  console.log(chalk.white(` ${chalk.green('✓')} Advanced Stripe (subscriptions, webhooks)`));
84
87
  console.log(chalk.white(` ${chalk.green('✓')} Admin panel`));
@@ -87,19 +90,19 @@ export function printProSuccess(projectName, projectPath) {
87
90
  console.log(chalk.white(` ${chalk.green('✓')} Full database schema\n`));
88
91
 
89
92
  console.log(chalk.yellow.bold('📝 Next Steps:\n'));
90
- console.log(chalk.white(` ${chalk.gray('1.')} ${chalk.yellow(`cd ${projectName}`)}`));
91
- console.log(chalk.white(` ${chalk.gray('2.')} ${chalk.yellow('cp .env.example .env')}`));
93
+ console.log(chalk.white(` ${chalk.gray('1.')} ${orange(`cd ${projectName}`)}`));
94
+ console.log(chalk.white(` ${chalk.gray('2.')} ${orange('cp .env.example .env')}`));
92
95
  console.log(chalk.white(` ${chalk.gray('3.')} Add your API keys to .env`));
93
- console.log(chalk.white(` ${chalk.gray('4.')} ${chalk.yellow('npx prisma db push')}`));
94
- console.log(chalk.white(` ${chalk.gray('5.')} ${chalk.yellow('npm run dev')}\n`));
96
+ console.log(chalk.white(` ${chalk.gray('4.')} ${orange('npx prisma db push')}`));
97
+ console.log(chalk.white(` ${chalk.gray('5.')} ${orange('npm run dev')}\n`));
95
98
 
96
- console.log(chalk.cyan.bold('🔧 Setup Verification:\n'));
97
- console.log(chalk.white(` ${chalk.gray('→')} Visit ${chalk.blue('http://localhost:3000/setup')} to verify all integrations\n`));
99
+ console.log(orangeBold('🔧 Setup Verification:\n'));
100
+ console.log(chalk.white(` ${chalk.gray('→')} Visit ${orange('http://localhost:3000/setup')} to verify all integrations\n`));
98
101
 
99
- console.log(chalk.cyan.bold('👤 Admin Access:\n'));
100
- console.log(chalk.white(` ${chalk.gray('→')} Visit ${chalk.blue('http://localhost:3000/admin')} (requires admin role)\n`));
102
+ console.log(orangeBold('👤 Admin Access:\n'));
103
+ console.log(chalk.white(` ${chalk.gray('→')} Visit ${orange('http://localhost:3000/admin')} (requires admin role)\n`));
101
104
 
102
- console.log(chalk.gray(' Need help? Join our Discord: ') + chalk.blue('https://discord.gg/solostack'));
103
- console.log(chalk.gray(' Documentation: ') + chalk.blue('https://solostack.dev/docs'));
104
- console.log(chalk.gray(`\n Built with ❤️ by ${chalk.cyan('Danish Akhtar')} • ${chalk.blue('github.com/danish296')}\n`));
105
+ console.log(chalk.gray(' Need help? Join our Discord: ') + orange('https://discord.gg/solostack'));
106
+ console.log(chalk.gray(' Documentation: ') + orange('https://solostack.dev/docs'));
107
+ console.log(chalk.gray(`\n Built with ❤️ by ${orange('Danish Akhtar')} • ${orange('github.com/danish296')}\n`));
105
108
  }