Starting the dev servers

docker compose up, the API, web, admin — running everything together.

6 mineasy

Time to start everything. By the end of this lesson, Postgres, the API, the web app, and the admin panel will all be running together and you'll have URLs to open in your browser.

We'll use Docker Compose to boot infra (Postgres, Redis, MinIO, Mailhog). If you've never used containers or compose files, the Docker primer is a 10-minute read that makes the rest of this lesson click.

1. Start the infrastructure

Terminal
$cd my-first-grit
$docker compose up -d

Brings up Postgres (5432), Redis (6379), MinIO (9000 + 9001), and Mailhog (1025 + 8025) in the background. Wait ~5 seconds for them to be ready.

If you don't have Docker installed, install Docker Desktop first. Grit's dev loop assumes docker compose works. Production deploys don't need Docker — but development does.

2. Install JS deps

Terminal
$pnpm install

Installs everything for web, admin, and the shared package — all in one pnpm workspace.

3. Migrate + seed

Terminal
$grit migrate # creates the DB tables
$grit seed # inserts the admin user + sample data

The seed creates an admin@example.com user with password admin123. We'll log in with that in the next lesson.

4. Start the dev servers

Terminal
$grit start

One command, three apps:

✓ API :8080 apps/api
✓ Web :3000 apps/web
✓ Admin :3001 apps/admin

Hot reload is on for all three. Edit a file, the page reloads.

Quick check

You forgot to run `grit migrate` before `grit start`. What happens?

Try it

Run the full boot sequence on your machine. When all four steps have run successfully, paste the grit start output into notes.md.

What's next

Everything's running. Next lesson — open the URLs, log into the admin panel, and click around so you understand what each surface looks like.

Spot a typo? Have an idea?

Help us improve this lesson. One click opens a GitHub issue with the lesson URL pre-filled — suggest clearer wording, report a bug, or request more depth. The course keeps improving thanks to learners like you.

Suggest an improvement on GitHub