Become the Builder
Before you Build
The concepts every tutorial assumes you already know.
Lesson 2What is an app, really?
Before you can build an app, you need a clear picture of what one actually is. This lesson gives you the mental model everything else in the curriculum builds on.
Lesson 3Where code lives and how it moves
Code doesn’t magically appear on the internet — it physically travels from your laptop to a server somewhere. This lesson demystifies that journey before you ever have to do it yourself.
Lesson 4The tools you'll live in
Every builder has the same three windows open all day. This lesson gives you a clear picture of what each one does and demystifies the scariest one of the bunch.
Lesson 5Databases aren't magic
A database is just a spreadsheet with rules — and you can open it up and look inside whenever you want. This lesson removes one of the biggest invisible black boxes in software.
Lesson 6The popular stacks and how to pick one
Rails, Laravel, Django, Next.js — you’ve probably heard the names. This lesson tells you what each one is for, how to think about choosing, and where I personally land.
Lesson 7Building with AI in the loop
Modern building is a collaboration with AI, not a handoff. This lesson lays out the worldview the rest of this curriculum is built on.
Meet Your Stack
The tools I use (and suggest you do too) for shipping real apps.
Lesson 8Why Rails?
Rails has been the ship-real-things framework for over 20 years, and it’s the backend I use to build every app. This lesson makes the case for why you should commit to it too.
Lesson 9Why Rails + Inertia + React?
React is the frontend tool the industry has standardized on, and Inertia is the bridge that lets us use it with Rails without building a separate API. This lesson explains why that combo is the heart of every app I build.
Lesson 10Why Tailwind and shadcn for styling
Tailwind is how I style every app I build, and shadcn gives me a head start on the UI components I’d otherwise rebuild every project. This lesson covers both and why they work especially well with AI.
Lesson 11The full stack picture
Now that you’ve met each piece of the stack on its own, this lesson zooms out to show how every part fits together into one coherent system.
Lesson 12Get the template running on your machine
A hands-on walkthrough of getting the Build New starter template running locally for the first time — from empty folder to a real app on localhost.
Lesson 13How auth already works
Signup, login, password reset, and a profile page for changing email and password — all built into the Build New template using the Rails 8 auth generator, extended.
Lesson 14Build your first feature with Claude Code
A hands-on build of a small tasks feature from scratch, using Claude Code in the loop the entire way. The point isn't the feature — it's learning the rhythm you'll use on every build after this.
Lesson 15Background jobs with Solid Queue
Some work shouldn't happen while your user is waiting. This lesson explains background jobs, when you need them, and why I use Solid Queue instead of the more traditional Sidekiq + Redis setup.
Lesson 16Local, staging, and production environments
Your app actually exists in three separate places at once, each with its own database and settings. This lesson explains what each environment is for and how Rails keeps them straight.
Lesson 17Managing credentials for external services
API keys and secrets should never live in your code. This lesson shows how I manage them with Rails encrypted credentials — one separate file per environment, safe to commit, easy to read at runtime.
Lesson 18Sending email with Letter Opener and Resend
Fake email locally with Letter Opener so you never accidentally spam a real user, and real email in production with Resend. Both are already wired up in the template.
Lesson 19Letting other things talk to your app
Your app shouldn't be an island. This lesson covers webhooks, APIs, and how to let external services and AI agents interact with the things you build — safely.
Build a Real App
A full spec-driven build, from idea to working app.
Lesson 20Intro
In this module kickoff, we'll start building a real, deployable bookmarking app — complete with tagging, search, AI-powered summaries, and email sharing. You'll see exactly how I approach building a real application end-to-end, using spec-driven development and the same fundamentals I rely on every day.
Lesson 21Setup the github repo
Let's get our bookmarking app project set up — from spinning up a new repo using the Build New template to getting the local dev environment running. You'll see the exact steps I take to start a real project, including how I handle the inevitable hiccups along the way.
Lesson 22Create our PRD & Milestones
Time to plan the product. We'll create a full PRD and break it into clear milestones using a custom Claude Code skill I built to guide you through the process — locking in scope, tech, data model, and a build roadmap before we write a single line of feature code.
Lesson 23Build our app's CRUD
Time to build. We'll feed our PRD's milestone one prompt into Claude Code, plan out the implementation, let it cook, and then walk through the working app — testing the CRUD, tagging, search, and dark mode features we just shipped.
Lesson 24Building an AI integration
Time to wire AI into the app. We'll build out the OpenAI integration that automatically summarizes bookmarked pages — handling API key storage, background jobs, and the inevitable real-world debugging that comes with third-party integrations.
Lesson 25Building an email sending feature
Time to ship the final feature: email sharing. Along the way, we'll level up our workflow by introducing a real branching strategy — building on a dedicated branch, opening a pull request, and merging into main, just like you'd do on a production app with real users.
Lesson 26Design refinements
Before we deploy, let's polish the app. We'll add a light/dark mode toggle, a custom logo and favicon, clean up the auth pages, and whip up a quick one-page marketing site — all through rapid-fire prompting with Claude Code.
Deploy
Get your app off your laptop and onto the internet.
- Lesson 27Coming soon
What deployment actually is
The mental model of what happens when you put an app on the internet. Your laptop and the server are different computers, and code has to travel between them.
- Lesson 28Coming soon
Set up DigitalOcean and Hatchbox
Create the two accounts you need, link them together, and spin up your first real server. Two services, two jobs, one connected pipeline.
- Lesson 29Coming soon
Deploy your staging environment
Get a working copy of your app live on the internet that only you can see. Staging is the dress rehearsal, and you’ll deploy there every single time before production.
- Lesson 30Coming soon
Deploy your production environment
Set up the real, public-facing version of your app alongside staging. Same flow, higher stakes, one clean git push to go live.
- Lesson 31Coming soon
Point a custom domain at your app
Replace the ugly default URL with a real domain you own. DNS in plain language, SSL handled for you automatically.
- Lesson 32Coming soon
See your production data with TablePlus
Connect TablePlus to your live databases so you can look at what’s really happening on staging and production. A debugging superpower you’ll use constantly.
- Lesson 33Coming soon
Monitor your production app
Keep an eye on what’s happening after your app is live. How to access production logs, watch for errors in real time, and get automatically notified when exceptions happen.
