• Free

24 Hour MVP

  • Course
  • 97 Lessons

Stop making excuses - learn to build v1 of your SaaS app in a day with Ruby on Rails.

About Your Instructor

I'm Ryan, a 3-time startup founder and partner at Fork Equity. I've spent years helping people acquire small companies, become better marketers, and now: learn to code.

To evaluate my programming chops, check out these 5 live streams where I build SaaS apps (from scratch) in 7-12 hours.

What is this course about?

Learn to bang out a SaaS prototype in 24 hours, from someone who's done it many times.

---
There are no "secrets to building quickly." Here's my exact process to building anything in a day:

  1. Wireframe - remove surprises and scope creep
  2. Data modeling - prevent technical debt
  3. Frontend - use a proven design system
  4. Backend - write the minimum code to accomplish each feature

Whenever I start a new project, this sequence ensures I waste as little time as possible on my hunt for The Truth. What's "The Truth?" Finding out if people care about what you built, or not.

What we’ll build in 24 Hour MVP
Powerpoint presentations and theoretical lectures are for losers. At Founder/Hacker we learn by doing.

In this course we'll build three Rails apps with varying complexity. We'll start with the simplest commands --  running “rails new” -- and by the end you'll be installing gems, integrating APIs, deploying to your own dot-com domains with working Stripe subscription payments, and even building admin panel with user impersonation and fancy charts.

Each app will explore the core steps I described above (Wireframe, Data modeling, Frontend, Backend) with increasing level of detail. And by popular request, code will be available in “freeze time” at the end of every lecture, so you never miss a beat.

Prerequisites
This course will not teach you to code from scratch. To maximize value from 24 Hour MVP, first enroll in our Fundamentals course, which will take you 20-30 hours to complete and make you proficient in Ruby.

Curriculum

Welcome

What to expect
Setting up your environment
Confirming your environment works

Overview of a SaaS application

SaaS Web Application Architecture
Preview
My proven process to build quickly
Terminology (CRUD, DRY, MVC, and many more)

Accessing our applications

[Action Required] GitHub invitations

App #1 - Anonymous Suggestion Box

Turn written feedback into anonymous, public Tweets for all to see.
What we're building
Preview
Naming our app
Creating a fresh Rails app
Wireframe - Single Page CRUD App
Data modeling - Creating a database
[Bonus] Version control with Git
Data modeling - Inserting database tables
[Bonus] Connecting git with GitHub
Frontend - Creating pages
Frontend - Implementing UI with Tailwind
Backend - Creating database records
Backend - Creating a Twitter App
Backend - Using the Twitter API
Backend - Integrating Twitter in our application
Backend - Connecting to the Frontend
Backend - Improving our Twitter service
[Bonus] Javascript listeners to improve UX
Backend/Frontend - Validations to prevent bad data
[Challenge] Saving and exposing Tweet URLs
[Solution] Saving the Tweet ID and URL
[Solution] Show Tweet URL on Home Page
Expansion ideas (how to earn back your course tuition)
Preparing to release our application

Deploying applications to a server

My simple process for turning source code into a production web app on a custom domain.
Overview
Domain setup and DNS
Provisioning a server
Deploying to a server
Debugging our deployment
Connecting our server to a domain
[Bonus] Accessing the production database

App #2 - Stakeholder Update Network

Private platform where founders can share monthly updates with other founders.
What we're building
Preview
Wireframe - Part 1
Wireframe - Part 2
Data modeling - Defining tables and attributes
Creating a Rails app from a template
Data modeling - Writing and running migrations
Data modeling - Adding associations to Models
Data modeling - Changing table names
Frontend - Landing page and Tailwind config
Frontend - Using partials and building an application form
Frontend - Admin panel and namespaced routes
Frontend - Dashboard and RESTful routing
Frontend - Finishing touches
Backend - Whitelisting form parameters
Backend - Whitelisting form "radio" inputs
Backend - Admin panel and private controller methods
Backend - Building transactional mailers
Backend - Creating user logins
Backend - Magic login links
Backend - Onboarding and forced user login
Backend - Dashboard and database seeding
Backend - Model scopes and subscriber form
Backend - Handling rich text
Backend - Update endpoint and DRY controllers
Backend - Digest mailer and better seeds
Backend - Viewing updates and DigestService batching
Backend - Getting started with Stripe
Backend - Implementing Stripe Checkout
Backend - Final cleanup
Backend - Enforcing free plan rules
Backend - Production mailers
Backend - Cron jobs and tasks
Backend - Deploying to production
Backend - Intro to delayed jobs
Setting up cron jobs in production

App #3 - Embeddable JavaScript Widget

Single line of code, embeddable on any website, that lets website visitors send you text messages without exposing your phone number.
What we're building
Preview
Wireframe - Interface + Widget UX
Data modeling - Sketching table names and relationships
Data modeling - Creating our app and generating migrations
Frontend - Widget CRUD
Frontend - Popup message form
[Bonus] JavaScript 101
[Bonus] JavaScript + DOM
Frontend - Creating an embeddable JS snippet
Frontend - Making our snippet embeddable on other websites
Frontend - Sending form data with fetch()
Frontend - Widget UX improvements
Frontend - Dynamic widget styling
Frontend - Messages view
Frontend - Landing page and live preview editor
Frontend - More challenges and cleanup
Backend - Widget avatar storage on AWS S3
Backend - Message CSV export
Backend - Async requests without JavaScript
Backend - Text Message API
Backend - User email notifications
Backend - Final cleanup and billing strategies
Backend - Predeploy challenges
Backend - Deploying with the Heroku CLI
[Bonus] Future lecture ideas