Skip to content
Back to skills

Decision Frameworks

ASecurity

Guides non-technical users through technology choices with opinionated defaults. Recommends one option for Builder-tier users, presents comparisons for Engineer-tier users. Covers databases, hosting, payments, auth, email, and build-vs-buy decisions.

  • 7 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added May 27, 2026
developmentpythongosqlreactnextjsnodeawstestinggitapi

Works with

  • api

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add Vimalk0703/shipworthy --skill decision-frameworks --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Decision Frameworks?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Decision Frameworks
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vimalk0703-decision-frameworks/badge)](https://www.skillsdirectory.com/skills/vimalk0703-decision-frameworks)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: decision-frameworks
description: Guides non-technical users through technology choices with opinionated defaults. Recommends one option for Builder-tier users, presents comparisons for Engineer-tier users. Covers databases, hosting, payments, auth, email, and build-vs-buy decisions.
invoke_when: Use when choosing a database, hosting provider, payment processor, auth solution, email service, or any technology component, including build-vs-buy decisions.
---

# Decision Frameworks

## Core Principle

**If it's not your competitive advantage, buy it.**

Your app's value is what it does differently. Authentication, email delivery, payment processing, hosting infrastructure — none of these are what makes your product special. Use proven services for these and spend your time on what matters.

## How This Skill Works by Tier

- **Builder-tier:** You get ONE recommendation with a brief "why." No comparison tables, no tradeoff analysis. The recommendation is the one that gets you shipping fastest with the least regret.
- **Engineer-tier:** You get a comparison with tradeoffs so you can make an informed choice. The recommendation is still highlighted, but alternatives are presented with honest pros and cons.

---

## Database

### Recommendation: Supabase

**Builder-tier response:** "Use Supabase. It gives you a Postgres database, authentication, and real-time subscriptions in one service. Free tier is generous. You'll set it up in 10 minutes."

**Why Supabase is the default:**
- Real Postgres database (not a proprietary format — your data is portable)
- Auth built in (one less service to manage)
- Real-time subscriptions included
- Row-level security for fine-grained permissions
- Generous free tier (500MB database, 50K monthly active users on auth)
- Dashboard for viewing and editing data without writing queries

### Engineer-Tier Comparison

| Factor | Supabase | Firebase | PlanetScale | Raw Postgres |
|--------|----------|----------|-------------|-------------|
| **Database type** | Postgres (relational) | Firestore (document/NoSQL) | MySQL (relational) | Postgres (relational) |
| **Auth included** | Yes | Yes | No | No |
| **Real-time** | Yes | Yes | No | Requires setup |
| **Free tier** | 500MB, 2 projects | Spark plan (generous) | 5GB, 1B row reads/mo | Self-host only |
| **Vendor lock-in** | Low (standard Postgres) | High (proprietary) | Medium (MySQL-compatible) | None |
| **Complexity** | Low | Low-Medium | Low | High |
| **Best for** | Most projects | Mobile-first apps, Google ecosystem | High-scale MySQL workloads | Full control needed |
| **Avoid when** | Need NoSQL document model | Need relational data, complex queries | Need built-in auth | Want managed service |

**When to NOT use Supabase:**
- You're deep in the Google/Firebase ecosystem already
- You specifically need a document database (rare for most apps)
- You need MySQL specifically (PlanetScale)
- You have regulatory requirements that mandate self-hosted databases

---

## Hosting

### Recommendation: Vercel (for Next.js), Railway (for anything else)

**Builder-tier response:** "If you're using Next.js, deploy on Vercel — it's made by the same team. Push your code to GitHub, connect Vercel, and you're live. For anything else (Python, Node backends, etc.), use Railway — same idea, works with everything."

**Why Vercel is the default for Next.js:**
- Made by the creators of Next.js (best possible integration)
- Git push to deploy (no configuration needed)
- Automatic preview deployments for every branch
- Edge functions and serverless built in
- Free tier handles most early-stage projects
- Custom domains with automatic HTTPS

### Engineer-Tier Comparison

| Factor | Vercel | Netlify | Railway | AWS |
|--------|--------|---------|---------|-----|
| **Best for** | Next.js, React | Static sites, Jamstack | Full-stack, backends | Everything (at a cost) |
| **Deploy method** | Git push | Git push | Git push | Many options, all complex |
| **Free tier** | 100GB bandwidth | 100GB bandwidth | $5/mo credit | 12-month free tier (limited) |
| **Serverless** | Built-in | Built-in (Functions) | Not serverless (containers) | Lambda (complex setup) |
| **Custom domains** | Easy + auto HTTPS | Easy + auto HTTPS | Easy + auto HTTPS | Route 53 (complex) |
| **Backend support** | API routes, serverless | Functions only | Full containers | Everything |
| **Complexity** | Low | Low | Low-Medium | High |
| **Scaling cost** | Can spike unexpectedly | Predictable | Predictable | Pay-per-use (complex billing) |
| **Avoid when** | Not using React/Next.js | Need persistent backend | Need edge computing | Want simplicity |

**When to NOT use Vercel:**
- You're not using Next.js or React (use Railway or Netlify instead)
- You need a persistent backend process (WebSocket server, cron jobs) — use Railway
- You need full infrastructure control — use AWS (but really consider if you do)
- Budget-sensitive and traffic is unpredictable — Vercel can surprise you on cost

---

## Payments

### Recommendation: Stripe Checkout

**Builder-tier response:** "Use Stripe Checkout. It handles the entire payment flow — card forms, validation, receipts, subscriptions — all hosted by Stripe so you don't touch sensitive payment data. You'll be taking payments in an afternoon."

**Why Stripe Checkout is the default:**
- Pre-built payment UI (no need to design card forms)
- PCI compliance handled for you (critical — you don't want to handle card data)
- Subscriptions, one-time payments, usage-based billing all supported
- 40+ payment methods (cards, Apple Pay, Google Pay, bank transfers)
- Excellent documentation and developer experience
- Test mode for development (no real charges)

### Engineer-Tier Comparison

| Factor | Stripe Checkout | Lemon Squeezy | Paddle |
|--------|----------------|---------------|--------|
| **Fee** | 2.9% + 30c (US) | 5% + 50c | 5% + 50c |
| **Merchant of Record** | You | Lemon Squeezy | Paddle |
| **Sales tax handling** | You manage (or use Stripe Tax) | Included | Included |
| **Global tax compliance** | Add-on (Stripe Tax) | Built-in | Built-in |
| **Best for** | SaaS, e-commerce, marketplaces | Digital products, SaaS | SaaS, digital products |
| **Subscription management** | Yes (Billing) | Yes | Yes |
| **Setup complexity** | Low-Medium | Low | Low |
| **Payout** | 2-day rolling | Monthly | Monthly |

**Merchant of Record explained (plain language):** When Stripe processes a payment, YOU are the seller — you handle refund disputes, tax collection, and legal compliance in every country. When Lemon Squeezy or Paddle process a payment, THEY are the seller — they handle taxes and compliance for you, but take a bigger cut and pay you monthly. If you sell globally and don't want to deal with VAT/GST in 40 countries, Lemon Squeezy or Paddle earn their higher fee.

**When to NOT use Stripe:**
- You sell digital products globally and don't want to handle international tax compliance — use Lemon Squeezy or Paddle
- Your primary market is outside the US/EU and Stripe isn't available — check Paddle's country support
- You want the absolute simplest setup for a digital product — Lemon Squeezy is slightly simpler

---

## Authentication

### Recommendation: Built-In (Supabase Auth if using Supabase, NextAuth if using Next.js without Supabase)

**Builder-tier response:** "If you're using Supabase, use Supabase Auth — it's already there, no extra setup. If you're using Next.js without Supabase, use NextAuth. Both give you email/password and social logins with minimal configuration."

**Why built-in auth is the default:**
- No additional service to manage or pay for
- Already integrated with your stack
- Handles the common cases (email/password, Google, GitHub sign-in)
- Free at the scale most projects need

### Engineer-Tier Comparison

| Factor | Supabase Auth | NextAuth (Auth.js) | Clerk | Auth0 |
|--------|--------------|-------------------|-------|-------|
| **Cost** | Free (included with Supabase) | Free (open source) | Free up to 10K MAU | Free up to 7.5K MAU |
| **Social logins** | Google, GitHub, Apple, etc. | 60+ providers | Google, GitHub, Apple, etc. | 60+ providers |
| **Email/password** | Yes | Yes (with adapter) | Yes | Yes |
| **MFA** | Yes | Manual implementation | Yes | Yes |
| **Pre-built UI** | Basic | None (you build it) | Beautiful, drop-in | Universal Login (hosted) |
| **User management dashboard** | Yes (in Supabase) | No | Yes (excellent) | Yes |
| **Complexity** | Low | Medium | Low | Medium-High |
| **Best for** | Supabase projects | Next.js, full control | Beautiful UI, fast setup | Enterprise requirements |
| **Avoid when** | Not using Supabase | Want pre-built UI | Budget-sensitive at scale | Want simplicity |

**When to NOT use built-in auth:**
- You need a beautiful, pre-built sign-in UI with minimal effort — use Clerk
- You have enterprise requirements (SAML, SSO, compliance) — use Auth0
- You need advanced user management features — use Clerk or Auth0

---

## Email

### Recommendation: Resend

**Builder-tier response:** "Use Resend for sending emails (welcome emails, password resets, notifications). It's simple, reliable, and the free tier covers most early-stage needs. You'll have it working in 15 minutes."

**Why Resend is the default:**
- Simple API (one function call to send an email)
- React Email integration (write emails as React components)
- Free tier: 3,000 emails/month, 100/day
- Excellent developer experience
- Built-in email verification and deliverability
- Modern dashboard with delivery tracking

### Engineer-Tier Comparison

| Factor | Resend | SendGrid | AWS SES |
|--------|--------|----------|---------|
| **Free tier** | 3K/month | 100/day (forever free) | 62K/month (if sent from EC2) |
| **Cost after free** | $20/mo for 50K | $19.95/mo for 50K | $0.10 per 1K emails |
| **DX (developer experience)** | Excellent | Good | Functional |
| **React Email support** | Native | No | No |
| **Setup complexity** | Very low | Low | Medium |
| **Deliverability** | High | High | High (requires setup) |
| **Dashboard** | Modern, clean | Feature-rich | Basic |
| **Best for** | Most projects | High volume, marketing | Very high volume, cost-sensitive |
| **Avoid when** | Sending 1M+/month | Want modern DX | Want simplicity |

**When to NOT use Resend:**
- You're sending 100K+ emails/month and cost matters — use AWS SES
- You need advanced marketing features (A/B testing, automation) — use SendGrid
- You're already deep in the AWS ecosystem — use SES

---

## Build vs Buy Framework

When deciding whether to build something yourself or use a service:

### Buy It (Use a Service) When:
- It's not your competitive advantage (auth, payments, email, hosting)
- The problem is well-solved by existing services
- Security is critical (payments, auth) — battle-tested services have security teams you don't
- You need it to work NOW, not after weeks of building
- The service has a free tier that covers your current needs

### Build It When:
- It IS your competitive advantage (the core thing that makes your product unique)
- No existing service fits your specific requirements
- You need full control over the user experience and no service offers enough customization
- The build is small and well-understood (a utility function, not an infrastructure component)
- Vendor lock-in is a real concern for your specific situation

### The Litmus Test
Ask: "If this component breaks at 3 AM, do I want to fix it myself or do I want someone else's on-call team to fix it?"

If the answer is "someone else" — buy it.

### Common Mistakes
- Building auth from scratch "for learning" in a production app (use a service, learn on a side project)
- Building a custom CMS when WordPress or a headless CMS would work
- Building an email sending system instead of using Resend/SendGrid
- Building a deployment pipeline instead of using Vercel/Railway
- Building analytics instead of using Plausible/PostHog

**The time you spend building commodity infrastructure is time you're NOT spending on what makes your product special.**

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.