Every choice the course makes, in one place. For each job: the tool we default to and why, then the alternatives and the moment you'd switch to one.
What should you build the app itself on?
Puts your frontend and backend in one framework and deploys to Vercel with almost no setup.
Alternatives
- React · Pick it when your app is mostly interactive screens and you don't need built-in server features yet (a pure front-end app, built with Vite).
- Vite · Pick it as the build tool under a pure React front-end app (a SPA) when you don't need built-in server features yet.
- Astro · Pick it when your app is content-heavy, like a blog, docs, or a marketing site, and speed and search ranking matter more than rich interactivity.
- SvelteKit · Pick it (or Nuxt) when you or your AI builder prefer that ecosystem; they're the same frontend-and-backend-together idea on a different underlying tool.
- React Router · Pick it when you want a frontend-and-backend framework like Next.js but prefer its React Router approach (it absorbed the framework that used to be called Remix).
- Nuxt · Pick it when you want a frontend-and-backend framework like Next.js but built on Vue.
What should run the kitchen, the backend that does the real work?
Next.js API routes: your backend lives in the same project as your frontend, in the same language, and deploys to Vercel with zero extra setup. The right default for a first app, and honestly for most apps.
Alternatives
- Node.js · Pick a dedicated Node.js backend (built with Express, Fastify, or NestJS) when your backend grows big enough to deserve its own home, a separate part of the team owns it, or it should keep running even when the frontend doesn't.
- Python · Pick it (with FastAPI, Django, or Flask) when your app does serious AI work beyond simple calls, crunches real data, or needs a library that only truly exists in the Python world.
- Go · Pick it when raw performance and traffic are the whole game, like a service millions of people hammer at once, or when running cheaply at huge scale genuinely matters to the bill.
How should you make the app look the way you want?
Short, descriptive style words make styling fast, work great when you describe what you want to an AI builder, and keep the look consistent.
Alternatives
- shadcn/ui · Pick it when you want polished, ready-made pieces (buttons, forms, dialogs) you drop in; it actually sits on top of Tailwind.
- Material UI · Pick it when you want a complete component library with a mature, established look out of the box.
- Chakra UI · Pick it when you want ready-made components with a friendly, accessible default style.
- Bootstrap · Pick it when you want a familiar, batteries-included look and don't need a custom style.
Where should the live app run so the world can reach it?
Built for Next.js, auto-deploys from GitHub, and has a generous free tier.
Alternatives
- Netlify · Pick it when you prefer its workflow or its add-ons; it's very similar to Vercel with simple Git-based deploys.
- Cloudflare Pages · Pick it when you want Cloudflare's fast global network and pricing (running Next.js there needs the OpenNext adapter, and Cloudflare now points new projects at its Workers platform).
- Railway · Pick it (or Render or Fly.io) when you outgrow the serverless model or want your app, database, and background jobs in one place.
- Render · Pick it when you want a host that can run always-on servers and databases, not just front-ends.
- Fly.io · Pick it when you want your app running as always-on servers close to your users, with your database and background jobs on the same host.
How should users sign in, and how do you protect pages?
Hands you pre-built sign-in components, makes protecting pages dead simple with one middleware file, and has a generous free tier.
Alternatives
- Auth0 · Pick it when you need advanced enterprise features or strict compliance; it's the long-time enterprise standard with every login method.
- Supabase · Pick it (Supabase Auth) when you're already using Supabase or want one company for both identity and data.
- Auth.js · Pick it (formerly NextAuth) when you want to own the whole setup, open-source, with no per-user fee.
- Better Auth · Pick it when you want login you run yourself with full control and no usage-based pricing.
Who may see, change, or delete a record, and how does the app know who they are?
Default Invited people with a role on each record
The owner invites named people, they sign in, and each record knows who may read, comment or edit it. Anyone who can write is known to the app, so a leaked link cannot act as somebody else and the owner can revoke a person rather than a link.
Alternatives
- Only the owner · Pick it when nobody but the person who created a record ever needs to see it. The simplest model, and the right one until sharing is actually asked for.
- Anyone with the link can view · Pick it for read-only sharing of things that are not sensitive. It stops being enough the moment the other person can write anything, because the app cannot tell who wrote it or take access away from one person.
- Teams or organizations with roles · Pick it when groups of people share many records with different responsibilities (admin, member, billing) and people join and leave. Heavier to build; do not start here for a two-person case.
Where should you store all the app's data?
The least setup of anything out there: sign up, click once, paste a connection string, done. SQL Postgres, the strong default for data with clear relationships.
Alternatives
- Supabase · Pick it when you want one dashboard for your whole backend (Postgres with auth and file storage bundled in).
- PlanetScale · Pick it when you expect millions of rows and heavy traffic; it's built to stay fast even with enormous tables.
- MongoDB · Pick it when your data is unpredictable and every record can look different (NoSQL, flexible JSON-style documents).
- Firebase Firestore · Pick it when you need data that updates live across devices, like a chat or a shared board (Google's real-time NoSQL).
Where should uploaded files like photos live?
Dead simple, part of the same Vercel platform you're already deploying to, and serves files through a fast CDN automatically.
Alternatives
- Cloudflare R2 · Pick it when you serve lots of large files and want to avoid bandwidth (egress) bills; it doesn't charge when files are downloaded.
- Amazon S3 · Pick it when you're already on AWS or need its huge ecosystem of integrations; it's the original, most widely supported file storage.
- Supabase Storage · Pick it when you want storage bundled with the rest of your Supabase backend.
- UploadThing · Pick it when you want a turnkey upload widget that wires uploads up with the least work.
- Files on the server's own disk · Pick it when the app runs on exactly one machine whose disk persists and is backed up, and files are served to people near it. The simplest answer, and the right one until any of that stops being true.
How should you handle showing the app in multiple languages?
A translation library made for Next.js that handles language routing and your message files cleanly once you have lots of text to translate.
Alternatives
- react-i18next · Pick it when you're outside Next.js or want the most battle-tested option; it's the most popular React translation library.
- FormatJS · Pick it (FormatJS / react-intl) when a real translation workflow matters, with strong support for plurals and dates.
- Lingui · Pick it when you want a standards-based library built for handing text to professional translators.
How should you run slow work later instead of making the user wait?
An HTTP-based message service with no server to run and a free tier: you send it a request, it calls your URL back. Exactly what a serverless Next.js app needs.
Alternatives
- RabbitMQ · Pick it when you run your own servers and want a mature, full-featured, very flexible queue.
- Apache Kafka · Pick it when you're moving huge volumes of events or feeding analytics, not just running a few background jobs.
- Amazon SQS · Pick it (or Google Cloud Tasks) when you're already on AWS or Google and want a managed queue with no server to run.
- Google Cloud Tasks · Pick it when you're already on Google Cloud and want a managed queue with no server to run, like QStash but tied to Google.
- Inngest · Pick it (or Trigger.dev) when your background work gets complex and you want retries, scheduling, and multi-step workflows handled for you.
- Trigger.dev · Pick it when your background work gets complex and you want a 'jobs as code' tool that handles retries, scheduling, and multi-step workflows for you.
- A worker loop inside the app itself · Pick it when the app is one long-lived process on a machine you control and the work can be lost on a restart without harm. The simplest thing that is honestly off the request.
- A job table in your own database · Pick it (pg-boss, graphile-worker or a hand-rolled table) when you already have Postgres and want jobs that survive a restart without adding another service.
- A Redis-backed queue · Pick it (BullMQ and friends) when you already run Redis and need retries, priorities and many workers.
How should you charge customers and handle sales tax?
A Merchant of Record built for indie builders, so it handles global sales tax and compliance for you while you're still a team of one.
Alternatives
- Polar · Pick it when you want a modern, independent Merchant of Record alternative to Creem, open source and API-first, with a developer-focused dashboard.
- Dodo Payments · Pick it when you charge by usage or credits, like tokens or API calls, instead of a flat monthly price; a new MoR aimed at AI-native builders.
- Lemon Squeezy · Pick it when you want a familiar indie Merchant of Record name, or you sell templates and ebooks alongside subscriptions (note: it's now owned by Stripe, which is folding it into Stripe's own managed-payments product).
- Paddle · Pick it when you're scaling up and want a more enterprise-grade Merchant of Record (note: it requires business approval before live payments, and it's stricter about AI products).
- Stripe · Pick it when your revenue is big enough that lower per-transaction fees outweigh bolting on a separate tax tool; you're the seller, so you handle sales tax yourself.
Can a user get their data out, and get it deleted?
Default Export and delete, self-serve
A button that hands a person everything held about them, and one that deletes the account and everything behind it, including files and copies in other services. It is what the law asks for and it is far cheaper to build early than to bolt on.
Alternatives
- Deletion by request, handled by hand · Pick it for a small app where requests are rare and one person can honour each one within the legal window, as long as the process is written down and actually reaches every place the data lives.
- Nothing yet · Only while nobody's data is real: a sketch, a demo, test accounts. It stops being an option the moment a real person signs up.
How should your app send emails like receipts and alerts?
The simplest email API of the bunch, designed to work smoothly with Next.js, with templates as components and a free tier big enough to launch on.
Alternatives
- Postmark · Pick it when getting receipts and alerts reliably into inboxes is critical; it's laser-focused on transactional email with excellent deliverability.
- SendGrid · Pick it (or Mailgun) when you need both transactional and bulk or marketing email at large scale.
- Mailgun · Pick it when you need both transactional and bulk or marketing email at large scale, a long-established alternative to SendGrid.
- Amazon SES · Pick it when you send huge volumes and want the lowest cost (powerful, but with more setup).
- Loops · Pick it when you want product emails and marketing emails together in one simple place.
How do you find out something broke before your users tell you?
The course default is a pair: Sentry catches crashes with the full detail of what broke and who it affected, and Better Stack watches uptime. Together they cover both did-it-crash and is-it-reachable.
Alternatives
- Better Stack · Not really an alternative: it's the uptime half of the default pair. Run it alongside Sentry so you know the moment your site stops responding.
- Rollbar · Pick it (or Bugsnag or Highlight) when you prefer its pricing or pairing with session replay; it captures crashes with the full detail of what broke and who it affected, like Sentry does.
- Bugsnag · Pick it when you want crash reporting with the full detail of what broke and who it affected, an alternative to Sentry for catching errors.
- Highlight · Pick it when you want error catching that pairs nicely with session replay, so you can watch what the user did right before the crash.
- UptimeRobot · Pick it for a generous free tier when all you need is a simple uptime ping.
- Pingdom · Pick it when you want a well-known uptime monitor that pings your site on a schedule and alerts you the moment it stops responding.
- Checkly · Pick it when you want browser-level checks that click through your app like a real user, not just a simple ping.
- Datadog · Pick it (or New Relic or Grafana) when you outgrow separate tools and want errors, uptime, performance, and logs in a single pane of glass.
- New Relic · Pick it when you want errors, uptime, performance, and logs combined into one pricier platform, a single pane of glass.
- Grafana · Pick it when you want to combine errors, uptime, performance, and logs into a single dashboard once you outgrow separate tools.
How do you measure what users actually do in your app?
Rolls events, funnels, retention, feature flags, and session replay into a single product with a generous free tier. Fewer tools is better for a solo builder.
Alternatives
- Mixpanel · Pick it (or Amplitude) when product analytics is your main focus and you want mature, powerful funnel and retention reports.
- Amplitude · Pick it when product analytics is your main focus and you want deep, mature funnel and retention reports, much like Mixpanel.
- Plausible · Pick it (or Fathom) when you just want lightweight, privacy-friendly traffic stats with no cookie banner.
- Fathom Analytics · Pick it when you want simple, privacy-friendly website analytics: page views and where traffic came from.
- Google Analytics · Pick it (GA4) when you want the standard free option and marketing-style traffic reports.
How do you package the app so it runs the same everywhere?
Packages your whole app, with everything it needs, into one identical box that runs the same on your laptop, the server, or anyone's machine. The tool everyone knows.
Alternatives
- Podman · Pick it when you want better security defaults out of the box, or you'd rather not have a program running in the background all the time; same commands as Docker.
- Cloud Native Buildpacks · Pick it when you want a container built from your code automatically, with no recipe file to write yourself.
- Nixpacks · Pick it when you want your container built automatically from your code; many hosting platforms use it behind the scenes already.
- OrbStack · Pick it on a Mac when Docker Desktop feels slow or heavy; a lighter, faster drop-in that runs the exact same containers and commands.
How do you spread traffic across copies of your app so none gets overwhelmed?
The most widely used load balancer in the world, and it works cleanly with a stateless setup.
Alternatives
- HAProxy · Pick it when load balancing is the main job and you want maximum control over how traffic gets split; very fast and very configurable.
- Traefik · Pick it (or Caddy) when you want less manual config and automatic HTTPS certificates set up for you.
- Caddy · Pick it when you want a modern reverse proxy that configures itself and handles HTTPS automatically.
- AWS Elastic Load Balancing · Pick it (or Google Cloud Load Balancing) when you're already on a cloud and don't want to manage the balancer yourself.
- Google Cloud Load Balancing · Pick it when you're already on Google Cloud and want a managed load balancer that scales on its own with nothing for you to run.
Whose computers should you rent to run your own servers?
Its free ARM machine is hard to beat for learning, and the skill of renting computing power as building blocks is identical everywhere.
Alternatives
- Amazon Web Services · Pick it (or Google Cloud or Azure) when you need a specific managed service or your team already uses it; the big three, most services, steepest learning curve.
- Google Cloud · Pick it when you need a specific Google managed service or your team already uses it; one of the big three.
- Microsoft Azure · Pick it when you need a specific Microsoft managed service or your team already uses it; one of the big three.
- Hetzner · Pick it (or DigitalOcean or Linode) when you just want a solid plain server with predictable pricing, without the complexity of the big clouds.
- DigitalOcean · Pick it when you want a simple, developer-friendly server with predictable pricing.
- Akamai Cloud (Linode) · Pick it when you just want a solid plain server with predictable pricing, simpler than the big clouds.
- Fly.io · Pick it (or Railway or Render) when you want cloud power that runs your container close to your users with very little setup.
- Railway · Pick it when you want a platform host that runs your container with very little setup, and your database and background jobs in the same place.
- Render · Pick it when you want a platform host that runs your container and always-on servers with very little setup.
- Coolify · Pick it (or Dokploy) when you want the VPS price but a dashboard instead of terminal commands; a self-hosted panel you install on your own server that gives it the push-to-deploy feel of Vercel.
- Dokploy · Pick it when you want a self-hosted deploy dashboard on your own server, a simpler alternative to Coolify.
How do you keep many copies of your app running across many machines?
The orchestrator the whole industry has standardized on. The course runs it on your own laptop so you feel it firsthand; most real teams use a managed version.
Alternatives
- Amazon EKS · Pick managed Kubernetes (EKS on AWS) when you truly need Kubernetes but don't want to babysit the cluster's guts; your cloud runs the hard control-plane part. This is what most real teams actually use.
- Google Kubernetes Engine · Pick it when you're on Google Cloud and want managed Kubernetes with the control plane run for you.
- Azure Kubernetes Service · Pick it when you're on Azure and want managed Kubernetes with the control plane run for you.
- OCI Kubernetes Engine · Pick it when you're on Oracle Cloud and want managed Kubernetes with the control plane run for you.
- Docker Swarm · Pick it (or Nomad) when you need to run containers across a few machines but full Kubernetes is overkill for your size; a much gentler learning curve.
- Nomad · Pick it when you want a simpler orchestrator than Kubernetes for a small fleet of machines.
- Fly.io · Pick a platform host (Fly.io, Railway, or Render) when you want the benefit of a fleet without operating one; they hide orchestration completely and just scale your containers. For most teams this is the right answer for a long, long time.
- Railway · Pick it when you want your containers scaled for you with orchestration hidden completely.
- Render · Pick it when you want your containers scaled for you with orchestration hidden completely, on a host that also runs your databases.
How do you check the app still works before you ship a change?
Free, open source, and the best end-to-end tool right now: it launches a real browser and clicks through your app like a user, and pairs nicely with the Claude Chrome extension.
Alternatives
- Cypress · Pick it when you want a polished, very popular end-to-end alternative with great docs and developer experience.
- Selenium · Pick it when you need broad language or browser support, or legacy compatibility; the original browser-automation tool.
- Vitest · Pick it (or Jest) alongside Playwright to test small pieces of logic quickly, without opening a browser.
- Jest · Pick it when you want a widely used tool to check small pieces of logic fast.
How do you automatically test, build, and deploy on every push?
Everything stays in one place next to your code, with nothing extra to connect, and it's free on the kind of repository you already have.
Alternatives
- GitLab CI/CD · Pick it when your code lives on GitLab; it runs your tests and deploys automatically in the same place.
- CircleCI · Pick it for its speed and config flexibility when you want a dedicated CI service.
- Jenkins · Pick it when you want to run your own automation server and have complex, endlessly customizable pipelines.
- Docker Hub · Pick it to store your built boxes (images) in the most widely used public registry.
- GitHub Container Registry · Pick it (GitHub Container Registry) to store your built boxes (images) right next to your code on GitHub.
- Amazon ECR · Pick it (Amazon ECR) to store your built boxes (images) when you host on AWS.
- Google Artifact Registry · Pick it to store your built boxes (images) when you host on Google Cloud.
Which AI should write and edit the actual files of your app?
Runs right on your computer and writes real files you own, it's genuinely strong at the multi-step 'go build this whole thing' work, and you direct it in plain English. The smoothest path coming from a no-code builder.
Alternatives
- Codex · Pick it when you already live in the OpenAI world or prefer their models; it's OpenAI's coding agent, the same idea as Claude Code.
- Cursor · Pick it when you like seeing every file change live in an editor; it's an AI code editor with a builder agent built in, same job, slightly different shape.
Which AI model should run inside your app for your users?
The course's default app brain (Google Gemini Flash): cheap, fast, and good enough for most app features, with a clear cheap-to-premium ladder when you need more.
Alternatives
- Anthropic (Claude) · Pick it (Anthropic's Claude) when you want a top-tier brain with its own cheap-to-premium ladder; one of the three main brains your app can call.
- OpenAI · Pick it (OpenAI's GPT) when you prefer their models or already have an account; one of the three main brains your app can call.
- OpenRouter · Pick it when you want one key and one doorway to almost every model, so you can switch between Claude, Gemini, and GPT with a single setting and always route to the cheapest model that's good enough.
- Vercel AI Gateway · Pick it when you're on Vercel and want the same one-key, many-models switching without opening another account; OpenRouter still has the wider catalog and price-comparison view.
- Groq · Pick it (or Together or Fireworks) when speed and cost matter more than having the absolute smartest model; these hosts run open models extremely fast and cheap.
- Together AI · Pick it when you want to run open models extremely fast and cheaply, like for high-volume tagging or tiny summaries.
- Fireworks AI · Pick it when you want a host that runs open models extremely fast and cheaply, an alternative to Groq or Together.
- Llama · Pick it (or Mistral or Qwen) when you have heavy, predictable volume and want to stop paying per request, or need to keep data fully in-house; open-weight models you can run yourself.
- Mistral AI · Pick it when you want an open-weight model you can download and even run on a server you control.
- Qwen · Pick it when you want an open-weight model that's free to download and can run on a server you control.
How should you track which step a long process is on?
Default A simple status field
A small set of states and rules about the allowed moves between them, stored as one status field on your data. It's a few lines of logic, it lives right next to your data, and it kills a whole class of bugs. No extra tool needed.
Alternatives
- XState · Pick it when a flow has many states and you want to see and enforce them explicitly, with a visual diagram.
- Temporal · Pick it (or Inngest) when a process spans minutes, hours, or days and must never lose its place; a durable workflow that survives crashes and picks up where it left off.
- Inngest · Pick it when a long, multi-step process must run reliably and survive crashes, picking up where it left off.
- AWS Step Functions · Pick it (or Google Workflows) when you're on that cloud and want managed, visual orchestration of steps.
- Google Cloud Workflows · Pick it when you're on Google Cloud and want a managed, visual way to wire steps together.
Where should your code's checkpoints get backed up online?
The standard, with the biggest community, and just about everything (your hosting, your automated checks, your AI builder) integrates with it out of the box. The course's deploy and CI examples all point at it.
Alternatives
- GitLab · Pick it when you want everything in one place or to host it yourself; an all-in-one DevOps platform with built-in CI/CD that you can also self-host.
- Bitbucket · Pick it when your team already lives in Atlassian tools; it pairs tightly with Jira and Trello.