Starting the dev servers
docker compose up, the API, web, admin — running everything together.
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
$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.
2. Install JS deps
$pnpm install
Installs everything for web, admin, and the shared package — all in one pnpm workspace.
3. Migrate + seed
$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
$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
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