# Code (/docs/code)

---
title: Code
description: Your schema says what the data is. These pages cover what you write beside it, the endpoints, background work and shared objects that a table cannot describe on its own.
kind: guide
package: questpie
---

Everything here is a file in a directory the generator reads, same as a
collection. You write the file, the generator finds it, and it arrives typed on
the app object.

| Page                            | What you write                                                  |
| ------------------------------- | --------------------------------------------------------------- |
| [Routes](/docs/code/routes)     | HTTP endpoints of your own, beyond the five a collection gets.  |
| [Services](/docs/code/services) | Shared objects injected into handlers. An SDK client, a cache.  |
| [Jobs](/docs/code/jobs)         | Work that runs off the request path.                            |
| [Emails](/docs/code/emails)     | Typed templates, rendered with the app's own context.           |
| [Modules](/docs/code/modules)   | A bundle of collections, routes and jobs you can share or ship. |
| [Codegen](/docs/code/codegen)   | What the generator reads, what it writes, and how to extend it. |

## Where the line falls

**[Schema](/docs/schema) is what you declare.** A collection, its fields, the
rules around them.

**Code is what you write.** A route body, a job handler, a service class.

**[Infrastructure](/docs/infrastructure) is what you configure.** Storage, queue,
search. You pick an adapter rather than writing one, and you can swap it.
