frontend/
public/ ; Static files
src/ ; React/Typescript sourcecode
backend/
compilers/ ; Compiler binaries and configuration
coreapp/ ; API Django app
migrations/ ; Database migrations (generated by Django)
decompme/ ; Main Django app
libraries/ ; Library headers
.env ; Default configuration
.env.local ; Local configuration overrides (not checked-in)
We use Docker for both development and production environments — it’s the simplest way to get everything up and running. See DOCKER.md for detailed setup instructions.
We officially support running decomp.me on Linux (we use Ubuntu 24.04 LTS) on the amd64 architecture. Running decomp.me natively on Windows or macOS is not supported and may result in unpredictable behavior or missing functionality. The instructions below assume you are using a Linux system on x86_64 hardware.
Dependencies:
Create a file to hold environment variables:
touch .env.localcd backend- Install Python dependencies with uv
uv sync- Install compilers
uv run python compilers/download.py- Install libraries
uv run python libraries/download.py- Set up the database
uv run python manage.py migrate- Start the API server
uv run python manage.py runservercd frontend- Install dependencies
yarn- Start the development webserver
yarn dev- Access the site via http://localhost:8080
- Configure vscode for development
- Configure wine for Windows compiler on Linux
- Set up GitHub authentication
- Install nsjail to run the compiler sandbox
- Configure an nginx reverse proxy
- Download wibo and add it to your system path (for running Windows compilers from Linux)
If you modify any database models (models.py), you'll need to run the following to update the database:
uv run python manage.py makemigrations
uv run python manage.py migrateTo ensure everything is working properly, you can run the unit tests in the backend folder.
uv run python manage.py testWe use Tailwind CSS with Radix UI colors. Each color is on a scale from 1 to 12 (inclusive), each with a well-defined meaning.
- Check frontend
cd frontend
yarn lint- Autofix frontend
cd frontend
yarn lint --fix- Check backend
cd backend
uv run mypy
uv run ruff check .
uv run ruff format .