+Expand the full workspace tree.
+
+
+```text
+myproject/
+├── pubspec.yaml # Workspace root: one `dart pub get` resolves all packages
+├── AGENTS.md # Instructions for AI agents working in the project
+├── .github/ # CI workflows: analyze, format, and test
+├── .vscode/ # Attach-to-server debug configs and a serverpod start task
+├── .agents/ # Agent skills, plus MCP configs for the editors you picked
+├── myproject_server/ # Your server
+│ ├── bin/main.dart # Entry point, calls run() in lib/server.dart
+│ ├── lib/server.dart # The run() function: creates and starts the server
+│ ├── lib/src/greetings/ # Example feature: a model file and an endpoint
+│ ├── lib/src/auth/ # Endpoints for the scaffolded email sign-in
+│ ├── lib/src/web/ # Routes and widgets for the web server
+│ ├── lib/src/generated/ # Generated server code (do not edit)
+│ ├── config/ # Run-mode configs, passwords, generator.yaml
+│ ├── migrations/ # Database migrations
+│ ├── web/ # Static files and pages the web server serves
+│ ├── test/integration/ # Endpoint tests and generated test tools
+│ └── docker-compose.yaml # Container alternative for the database, plus the test database
+├── myproject_client/ # Generated client package
+│ └── lib/src/protocol/ # Generated calls and models (do not edit)
+└── myproject_flutter/ # Your Flutter app
+ ├── lib/main.dart # App code: creates the global Client
+ ├── lib/screens/ # Scaffolded sign-in and greetings screens
+ ├── lib/driver.dart # Entry point serverpod start uses to launch the app
+ └── assets/config.json # The server URL the app reads at startup
+```
+
+The exact set depends on your create-time choices: the auth endpoints and sign-in screen come with authentication, the web pieces with the web server option, and the agent and MCP files with the editors you picked.
+
+
+
+
+## How the packages relate
+
+The Flutter app depends on the client package, and the client is how the app reaches the server: it holds a typed method for every endpoint you write. Neither the server nor the client depends on the other; instead, the server's `config/generator.yaml` points at the client package (`client_package_path`), and code generation writes the client's contents directly.
+
+The workspace is a Dart pub workspace: each package declares `resolution: workspace`, and a single `dart pub get` at the project root resolves all three.
+
+## Where your code lives, and what is generated
+
+You write two kinds of source files on the server, and both can live anywhere under the server's `lib/`:
+
+- **Model files** (`.spy.yaml`) define your serializable classes and database tables. The template keeps them next to the code that uses them, such as `lib/src/greetings/greeting.spy.yaml`. See [Working with models](../data-and-the-database/models).
+- **Endpoints** are Dart classes extending `Endpoint`, such as `lib/src/greetings/greeting_endpoint.dart`. Each public method becomes a callable client method: `GreetingEndpoint.hello` is called as `client.greeting.hello(...)`. See [Working with endpoints](../endpoints-and-apis).
+
+The scaffolded project follows the same pattern beyond the greeting example: `lib/src/auth/` holds the endpoints behind the default email sign-in, and `lib/src/web/` holds the routes the web server serves.
+
+From those, `serverpod generate` produces the bridge between server and app:
+
+- On the server, `lib/src/generated/` gets the endpoint dispatch code, the protocol description, and a Dart class per model.
+- In the client package, `lib/src/protocol/` gets the `Client` class with its typed endpoint methods, plus the same model classes for the app's side.
+- In `test/integration/test_tools/`, the generated [test tools](../testing/get-started).
+
+Generated code is overwritten on every run, so never edit it; the scaffolded analyzer config excludes it for that reason. While [`serverpod start`](./running-your-server) runs, generation happens automatically when you save; outside a session, run `serverpod generate` yourself.
+
+## The server entry point
+
+The server starts in `bin/main.dart`, which only calls the `run` function in `lib/server.dart`. That function creates the server, wires it to your generated code, registers everything that is not an endpoint, and starts it:
+
+```dart
+void run(List