# Develop with Wandelbots NOVA

> Write robot programs with the Python SDK, prototype and visualize motions, and package your work as deployable apps on a NOVA instance or in your local development environment.

All robot control logic on Wandelbots NOVA is written in Python using the
[Wandelbots NOVA Python SDK](https://github.com/wandelbotsgmbh/wandelbots-nova) and the `@nova.program` decorator.
TypeScript is available for building custom web UIs on top of your programs.

Video: [/video/programming/python-sdk\_robot-agnostic.webm](/video/programming/python-sdk_robot-agnostic.webm)

## Choose your development environment

Wandelbots NOVA supports two development environments.
This is the most important choice in this section. Every page states which environment it assumes.

[Develop on the NOVA instance](/developer/quickstart)

Develop directly on your [NOVA cloud instance](/nova-cloud/cloud-instances) with zero setup:
install Visual Studio Code from the app store and write, run, and visualize robot programs in the browser.
This is the fastest way to start and the recommended entry point.

[Set up local development](/developer/local-development)

Develop in your own IDE on your own machine, with the full power of your computer,
your company network, and offline work. All you need to get started is the NOVA CLI
and Visual Studio Code.

## What you'll build

### Robot programs

Python functions decorated with `@nova.program` that plan and execute robot motions.
You [declare](/developer/declare-program) programs with the Python SDK, prototype them with
[Rerun visualization](/developer/visualization) and [Jupyter notebooks](/developer/jupyter),
and hand them to operators through the [Program Operator](/developer/run-program).

### Custom apps

Containerized web applications deployed to your NOVA instance:

- **Deployed as Docker containers**: Each app runs a web server and is reachable under `/cell/<your-app-name>`.
- **A tile on the home screen**: NOVA adds your app to the instance home screen. Opening the tile launches its UI in the browser.
- **Any tech stack**: As long as your Docker image meets the platform requirements, you choose the technology.
- **Configured via YAML manifest**: You declare what the app needs (image, resources, storage, environment variables) and NOVA handles deployment, networking, and UI integration.

You build apps in [Python](/developer/custom-apps/python) or [TypeScript](/developer/custom-apps/typescript),
[integrate devices](/developer/custom-apps/integrate-devices) like cameras and grippers,
and [publish to the app store](/developer/custom-apps/publish-to-app-store) so other instances can install your work.

## Your journey

1. [Write and run your first program on the NOVA instance](/developer/quickstart)
2. [Declare programs](/developer/declare-program) with the `@nova.program` decorator and [run them with the Program Operator](/developer/run-program)
3. Prototype with [Rerun visualization](/developer/visualization) and [Jupyter notebooks](/developer/jupyter)
4. [Set up local development](/developer/local-development) with the NOVA CLI and Visual Studio Code
5. Build an app with [Python](/developer/custom-apps/python) or [TypeScript](/developer/custom-apps/typescript)
6. [Deploy your app](/developer/custom-apps/deploy-app) to the NOVA instance with Docker and a container registry
7. [Integrate devices](/developer/custom-apps/integrate-devices) and [publish to the app store](/developer/custom-apps/publish-to-app-store)
