The Solo Developer Tech Stack
Your tech stack can make or break your side hustle. The right choices save months. The wrong ones waste your limited hours on problems that don’t matter.
This lesson gives you opinionated recommendations optimized for one thing: getting to paying customers as fast as possible.
The Stack Selection Principles
Principle 1: Boring Is Beautiful
Trendy tech is for funded startups with engineers to spare. You need reliable, well-documented, battle-tested tools.
Principle 2: Integrated > Best-in-Class
A platform that handles 5 things at 80% quality beats 5 specialized tools at 95% quality each. Integration overhead kills solo developers.
Principle 3: Fewer Decisions, Faster Progress
Every technology decision is time spent not building. Pick a stack and commit.
Principle 4: Optimize for Time-to-Revenue
You need paying customers, not perfect architecture. Choose tools that get you there fastest.
The Recommended Stacks
Stack 1: The Modern Standard (Recommended)
flowchart TD
A[Next.js] --> B[React Frontend]
A --> C[API Routes Backend]
C --> D[Supabase]
D --> E[PostgreSQL Database]
D --> F[Authentication]
D --> G[Real-time Subscriptions]
H[Vercel] --> A
I[Stripe] --> C
Components:
| Layer | Choice | Why |
|---|---|---|
| Framework | Next.js | Full-stack, great DX, massive community |
| Database | Supabase | PostgreSQL + Auth + Realtime in one |
| Hosting | Vercel | Deploy in seconds, scales automatically |
| Payments | Stripe | Industry standard, excellent docs |
| Resend | Simple, reliable, great API | |
| CSS | Tailwind | Fast styling, consistent results |
Best for: Developers comfortable with React/TypeScript
Total monthly cost (starting): ~$0-20
Stack 2: The Full-Stack Framework
Components:
| Layer | Choice | Why |
|---|---|---|
| Framework | Laravel or Rails | Batteries included, fast development |
| Database | MySQL/PostgreSQL | Included in framework |
| Hosting | Railway or Render | Simple deployment, good free tier |
| Payments | Stripe | Same as above |
| Background Jobs | Built-in | Laravel Queues or Active Job |
Best for: Developers who prefer traditional MVC, PHP/Ruby background
Total monthly cost (starting): ~$5-25
Stack 3: The No-Code Path
Components:
| Layer | Choice | Why |
|---|---|---|
| Builder | Bubble | Most capable no-code platform |
| Database | Built-in | Comes with Bubble |
| Auth | Built-in | Comes with Bubble |
| Payments | Stripe plugin | Easy integration |
| Hosting | Built-in | Comes with Bubble |
Best for: Non-technical founders, extremely simple products
Total monthly cost: ~$30-70
Warning: No-code works for validation but may limit you later. Plan for eventual rebuild if successful.
Deep Dive: The Modern Standard Stack
Next.js: Your Foundation
Why Next.js:
- Full-stack (frontend + backend in one)
- File-based routing (simple mental model)
- API routes (no separate backend needed)
- Server components (fast loading)
- Massive ecosystem
- Deploys to Vercel in one click
Project structure:
app/
├── page.tsx # Homepage
├── login/
│ └── page.tsx # Login page
├── dashboard/
│ └── page.tsx # Main app page
├── api/
│ ├── webhook/
│ │ └── route.ts # Stripe webhooks
│ └── [your-api]/
│ └── route.ts # Your API endpoints
└── layout.tsx # Root layout
Supabase: Your Backend
Why Supabase:
- PostgreSQL database (real database, not toy)
- Built-in authentication (email, OAuth, magic links)
- Row-level security (secure by default)
- Real-time subscriptions (if you need them)
- Auto-generated APIs
- Generous free tier
What Supabase handles:
✅ Database (PostgreSQL)
✅ User authentication
✅ User management
✅ API generation
✅ File storage
✅ Real-time updates
Setup time: ~30 minutes to full auth system
Stripe: Your Revenue
Why Stripe:
- Industry standard for SaaS billing
- Handles subscriptions, one-time, usage-based
- Customer portal (customers manage their own billing)
- Webhooks for subscription events
- Tax handling (Stripe Tax)
- Invoicing included
Essential Stripe features to use:
- Checkout (hosted payment pages—don’t build your own)
- Customer Portal (self-service billing management)
- Webhooks (sync subscription status)
- Pricing table (embed on your site)
Billing models supported:
- Monthly/annual subscriptions
- Usage-based pricing
- One-time purchases
- Credits/prepaid
Vercel: Your Infrastructure
Why Vercel:
- Zero-config deployment
- Automatic HTTPS
- Global CDN
- Preview deployments for branches
- Built for Next.js
Deployment workflow:
git push → Automatic deploy → Live in ~60 seconds
Cost: Free tier handles most side projects. $20/month if you need more.
Supporting Tools
CSS: Tailwind
- Utility classes = fast styling
- No CSS file management
- Consistent design system
- Works great with component libraries
UI Components: shadcn/ui
- Copy-paste components (not npm dependency)
- Built on Radix (accessible)
- Styled with Tailwind
- Customize everything
Email: Resend
- Simple API
- React email templates
- Deliverability handled
- Generous free tier (100 emails/day)
Error Tracking: Sentry
- Know when things break
- Free tier sufficient for side projects
- Easy Next.js integration
Setting Up Your Stack
Day 1: Foundation
# Create Next.js project
npx create-next-app@latest my-saas --typescript --tailwind --app
# Install essentials
npm install @supabase/supabase-js stripe @stripe/stripe-js
Day 2: Database & Auth
- Create Supabase project (5 minutes)
- Set up database schema
- Configure authentication providers
- Connect to Next.js
Day 3: Payments
- Create Stripe account
- Set up products/prices
- Implement Checkout integration
- Configure webhooks
- Build pricing page
Day 4: Deploy
- Push to GitHub
- Connect to Vercel
- Add environment variables
- Deploy
Total setup time: 4 days to complete foundation
The Complexity Trap
Things That Seem Important But Aren’t (Yet)
Microservices: You don’t need them. Monolith is fine until you have thousands of users.
Kubernetes: Total overkill. Vercel/Railway handle your scale.
Message queues: Use simple solutions first. Inngest or even cron jobs work fine initially.
Multiple databases: One PostgreSQL database handles more than you think.
Custom auth: Use Supabase/Auth0/Clerk. Don’t roll your own.
GraphQL: REST is fine. GraphQL adds complexity you don’t need.
When to Add Complexity
Add complexity when:
- Current solution is clearly breaking
- You have revenue to justify the time investment
- The simpler solution has been tried and failed
Not when:
- You “might need it later”
- It’s technically interesting
- Other companies use it
The Cost Reality
Starting Out (0-100 users)
| Service | Cost |
|---|---|
| Vercel | $0 (free tier) |
| Supabase | $0 (free tier) |
| Stripe | 2.9% + $0.30 per transaction |
| Domain | $12/year |
| Total | ~$1/month + Stripe fees |
Growing (100-1000 users)
| Service | Cost |
|---|---|
| Vercel Pro | $20/month |
| Supabase Pro | $25/month |
| Email (Resend) | $20/month |
| Error tracking | $0 (free tier) |
| Total | ~$65/month |
Scaling (1000+ users)
You’ll have revenue. Scale costs appropriately.
Practice Exercise
Set up your development environment:
-
Create accounts:
- GitHub (if not already)
- Vercel
- Supabase
- Stripe (test mode)
-
Initialize project:
- Create Next.js app with TypeScript and Tailwind
- Push to GitHub
- Deploy to Vercel
-
Connect services:
- Link Supabase to your project
- Set up Stripe test environment
- Configure environment variables
-
Verify:
- App loads on Vercel URL
- Can query Supabase from app
- Stripe dashboard shows test mode
Time needed: 2-4 hours for complete setup
Key Takeaways
- Boring, integrated tools beat trendy, specialized ones
- Next.js + Supabase + Stripe + Vercel is the recommended stack
- Start with free tiers—they handle more than you think
- Avoid premature complexity (microservices, K8s, custom auth)
- Full setup takes ~4 days, not months
- Choose tools that minimize decisions, not maximize options
Next: How to price your SaaS for profit.