Oreo mascot
Oreo
made by humans, with humans

Contribute to Oreo. Bring snacks.

OreoOS is open: code, hardware, prompts, assets, the lot. Pick a lane — or invent one. We merge fast and credit loudly.

App structure

Every app on the badge lives in apps/<name>/. The launcher loads main.py and reads an App class off it — but main.py is now a thin re-export shim. Real code lives under src/ so logic, rendering, and persistence each get their own file. Easier to read, easier to test on a laptop.

apps/snake/
├── manifest.json     name, author, icon, version
├── main.py           thin shim: from .src.app import App
├── __init__.py       (empty, makes it a package)
└── src/
    ├── __init__.py
    ├── app.py        App class — lifecycle hooks only
    ├── game.py       pure game logic + constants
    ├── render.py     drawing functions
    └── highscore.py  persistent best-score I/O

See the full app guide for lifecycle hooks, manifest fields, drawing APIs, and a walkthrough of the snake reference app.

The full contributing guide

view raw →

Mirrored verbatim from the repo's CONTRIBUTING.md. Edits to the source on GitHub re-deploy here automatically.