
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
create-solostack
Advanced tools
The complete SaaS boilerplate for indie hackers - Next.js 15 with auth, payments, database, and email
The complete SaaS boilerplate for indie hackers
Generate a production-ready Next.js 15 SaaS application with authentication, payments, database, and email - all pre-configured and working out of the box.
Built with ❤️ by Danish Akhtar
| Feature | Description |
|---|---|
| 🚀 Quick Setup | Get a full SaaS up and running in minutes, not weeks |
| 🔐 Authentication | NextAuth.js with email/password and OAuth (Google, GitHub) |
| 💳 Payments | Stripe integration for subscriptions and one-time payments |
| 📧 Emails | Resend for transactional emails with React Email templates |
| 🗄️ Database | Prisma + PostgreSQL with pre-built models |
| 🎨 UI Components | shadcn/ui components with Tailwind CSS |
| 📱 Responsive | Mobile-first design out of the box |
| 🔒 Type-Safe | Full TypeScript support |
graph TD
User[User / Browser] -->|HTTPS| CDN[CDN / Edge]
CDN -->|Request| App[Next.js 15 App]
subgraph "Application Layer"
App -->|Auth| Auth[NextAuth.js]
App -->|API| Routes[API Routes]
App -->|Pages| UI[shadcn/ui Components]
end
subgraph "Data Layer"
Routes -->|Query| Prisma[Prisma ORM]
Prisma -->|SQL| DB[(PostgreSQL)]
end
subgraph "External Services"
Auth -->|OAuth| Providers[Google / GitHub]
Routes -->|Payments| Stripe[Stripe API]
Routes -->|Emails| Resend[Resend API]
Stripe -->|Webhooks| Routes
end
sequenceDiagram
participant U as User
participant A as App
participant S as Stripe
participant D as Database
participant E as Resend
U->>A: Sign Up
A->>S: Create Customer
S-->>A: Customer ID
A->>D: Create User (with Stripe ID)
A->>E: Send Verification Email
E-->>U: Email Delivered
U->>A: Upgrade to Pro
A->>S: Create Checkout Session
S-->>U: Redirect to Checkout
U->>S: Complete Payment
S->>A: Webhook (checkout.completed)
A->>D: Update Subscription Status
A-->>U: Access Granted
Get started in seconds with one command:
npx create-solostack my-saas-app
Alternative package managers:
# pnpm
pnpm create solostack my-saas-app
# yarn
yarn create solostack my-saas-app
Run the CLI and follow the interactive prompts:
npx create-solostack my-app
The CLI will guide you through:
my-saas-app/
├── prisma/
│ ├── schema.prisma # Database schema
│ └── seed.ts # Seed script
├── src/
│ ├── app/
│ │ ├── (auth)/
│ │ │ ├── login/ # Login page
│ │ │ └── signup/ # Signup page
│ │ ├── api/
│ │ │ ├── auth/ # NextAuth routes
│ │ │ ├── stripe/ # Stripe routes
│ │ │ └── webhooks/ # Webhook handlers
│ │ ├── dashboard/ # Protected dashboard
│ │ │ ├── billing/ # Subscription management
│ │ │ └── settings/ # User settings
│ │ ├── globals.css
│ │ ├── layout.tsx
│ │ └── page.tsx
│ ├── components/ # React components
│ └── lib/
│ ├── auth.ts # NextAuth configuration
│ ├── db.ts # Prisma client
│ ├── stripe.ts # Stripe client
│ └── email/ # Email templates
├── .env.example
├── middleware.ts # Route protection
├── next.config.js
├── package.json
├── tailwind.config.ts
└── tsconfig.json
/api/auth/[...nextauth] - NextAuth.js routes/api/auth/signup - User registration/api/stripe/checkout - Create checkout session/api/stripe/portal - Customer portal/api/webhooks/stripe - Stripe webhooks/api/user/update - Update user profile/ - Landing page/login - Login page/signup - Signup page/dashboard - User dashboard (protected)/dashboard/billing - Subscription management (protected)/dashboard/settings - User settings (protected)After generating your project:
cd my-saas-app
npm install
cp .env.example .env
Add your environment variables:
DATABASE_URL="postgresql://..."
NEXTAUTH_SECRET="..." # Generate with: openssl rand -base64 32
NEXTAUTH_URL="http://localhost:3000"
STRIPE_SECRET_KEY="sk_test_..."
STRIPE_WEBHOOK_SECRET="whsec_..."
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="pk_test_..."
RESEND_API_KEY="re_..."
npm run db:push
npm run db:seed
npm run dev
npm run dev - Start development servernpm run build - Build for productionnpm run start - Start production servernpm run lint - Run ESLintnpm run db:push - Push schema to databasenpm run db:seed - Seed databasenpm run db:studio - Open Prisma Studiohttps://yourdomain.com/api/webhooks/stripe.env.env.envnpm run db:push to create tablesnpm run db:seed to add sample dataFor Google OAuth:
.envFor GitHub OAuth:
.env| Category | Technology |
|---|---|
| Framework | Next.js 15 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS |
| UI Components | shadcn/ui + Radix UI |
| Database | PostgreSQL + Prisma |
| Authentication | NextAuth.js 5 |
| Payments | Stripe |
| Resend + React Email | |
| Form Handling | React Hook Form + Zod |
MIT © Danish Akhtar
Built with ❤️ for indie hackers and solo founders
Made by Danish Akhtar • GitHub • Version 1.3.3
FAQs
The complete SaaS boilerplate for indie hackers - Next.js 15 with auth, payments, database, and email
We found that create-solostack demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.