---
title: "Learn"
description: "Build one service from an empty folder, one working step at a time."
canonical_url: "https://docs.galleon.thec1oud.uk/docs/learn"
markdown_url: "https://docs.galleon.thec1oud.uk/docs/learn.md"
last_updated: "2018-10-20"
x_farming_labs_generated_preamble: true
---

# Learn
URL: /docs/learn
LLM index: /llms.txt
Description: Build one service from an empty folder, one working step at a time.

# Learn

Learn builds one service, a small bookmarks API, in order. Each chapter adds one idea and ends at a checkpoint you can run and test.

| Chapter | You add |
|---|---|
| [1. Your first service](/docs/learn/first-service) | Two operations over HTTP, validation, errors, and a test |
| [2. Configuration and modules](/docs/learn/configuration) | A config section, environment overrides, and dependency injection |
| [3. A database](/docs/learn/database) | PostgreSQL, transactions, and tests against a real database |
| [4. Migrations](/docs/learn/migrations) | A schema the service applies itself, in development and in production |

Every sample on these pages is compiled and tested in Galleon's CI, so the code works as shown.

<Callout>
Later chapters will cover authorization, running several nodes, and read replicas. They aren't written yet.
</Callout>

## Sitemap

See the full [sitemap](/sitemap.md) for all pages.
Docs-scoped sitemap: [/docs/sitemap.md](/docs/sitemap.md).
Well-known sitemap: [/.well-known/sitemap.md](/.well-known/sitemap.md).
