# App tutorials

Each tutorial in this section builds one small but complete Viam app end-to-end, from empty project directory to a program you can run against your own machine. The tutorials assume your project is already scaffolded, see [App scaffolding](https://docs.viam.com/build-apps/setup/overview/) for the prerequisite setup.

## Pick a tutorial

| Tutorial | Language | Shape | Scope | What it builds |
| --- | --- | --- | --- | --- |
| [Single-machine dashboard](https://docs.viam.com/build-apps/app-tutorials/tutorial-dashboard/) | TypeScript (browser) | Web UI | One machine | Camera feed, live sensor reading, motor start/stop button, connection status. Introduces the core client pattern: connect, fetch resources by name, call component APIs. |
| [Multi-machine fleet dashboard](https://docs.viam.com/build-apps/app-tutorials/tutorial-fleet/) | TypeScript (browser) | Web UI | Organization fleet | Lists every machine in your org and shows aggregated sensor readings from each. Introduces cloud-scoped API keys and MQL aggregation over captured data. |
| [Flutter app with widgets](https://docs.viam.com/build-apps/app-tutorials/tutorial-flutter-app/) | Flutter (iOS, Android, desktop) | Mobile/desktop UI | One machine | Camera, sensor, and motor control using the prebuilt Flutter widgets (`ViamCameraStreamView`, `ViamSensorWidget`, `ViamMotorWidget`). Introduces the widget-based approach for Flutter apps. |
| [Python monitoring service](https://docs.viam.com/build-apps/app-tutorials/tutorial-monitoring-service/) | Python | Headless service | One machine | Non-UI process that polls a sensor on a schedule and drives a motor based on the reading. Introduces the headless-service pattern and clean shutdown. |

## Before you start

Every tutorial assumes you have a scaffolded project for the target language and a reachable machine. If you haven’t set up a project yet, work through [App scaffolding](https://docs.viam.com/build-apps/setup/overview/) first, it covers project creation, SDK installation, credentials, and a connection verification step that every tutorial builds on.
