Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Build an example app

Start with a small HTTP app, then give it persistent notes, a background export worker, and private object storage. Choose one language; each path is self-contained.

TutorialWhat you buildBuilder
Node.js and ExpressExpress web app and Node workerheroku-nodejs
Ruby on RailsRails API app and Ruby workerheroku-ruby
Python and FlaskFlask with Gunicorn and a Python workerheroku-python
GoStandard-library HTTP server and Go workerheroku-go
Rust and AxumAxum web app and Rust workerpaketo-rust
Static HTMLNGINX site with a public bucket assetpaketo-web-servers

Every server-side path follows the same sequence:

  1. Create and deploy a hello app.
  2. Store notes in PostgreSQL.
  3. Queue exports in Redis and process them in a separate worker.
  4. Store exports in a private S3-compatible bucket.
  5. Optionally replace PostgreSQL with MariaDB or MongoDB.

PostgreSQL, MariaDB, and MongoDB are alternative primary stores; Redis is the queue. You do not need all three primary databases for an app. The static path uses browser-safe public assets; it has no server process that can use database credentials.

Each chapter provides dashboard and CLI paths. Choose one path for each step; do not create the same resource twice. Both paths push source with Git. The prerequisites describe access, tooling, and availability checks. Local services let you try the same source on your computer.

These are learning apps without user accounts. Anyone with the app URL can read and create notes and request downloads, even though the backing bucket is private. Use sample text only. Add authentication, authorization, rate limits, and export retention before adapting the code to real users. Queued jobs and export status depend on Redis; notes remain in the primary database if Redis data is lost, and exports can be regenerated.

When you finish, follow Take an Example to Production. It connects the learning checkpoints to app design, migrations, availability, and recovery guidance.