Build a Rails Blog

Build Junction Almanac with Rails, PostgreSQL, ERB, Pico.css, secure session authentication, profiles, owned post CRUD, search, password reset, and Fly.io deployment.

  • Difficulty Intermediate
  • Parts 12
  • Stack Ruby, Rails 7.1, ERB, Pico.css, PostgreSQL, Active Storage, has_secure_password

How this project works

Junction Almanac is an original teaching blog built as twelve complete Rails snapshots. Clone the repository once and run any numbered folder without replaying every earlier lesson.

The course uses Rails conventions without hiding authentication behind Devise. You will see has_secure_password, a small session controller, an explicit current-user object, server-side ownership checks, and expiring one-use reset tokens.

Snapshots 4–12 seed ada@example.com and grace@example.com with password123. PostgreSQL runs from the root Compose file on host port 5434, while unique database names keep the snapshots independent.

The final app packages the same code in a multi-stage Docker image and deploys to Fly.io on internal port 3000. Environment variables provide the database URL, application host, and Rails secret.

Open GitHub repo →

Parts in order

Work through the parts in sequence. Each lesson explains the ideas, then points you to a runnable GitHub snapshot.