Files
decomp.me/docs/CONTRIBUTING.md
2025-12-09 09:34:39 +00:00

143 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Contributing
## Directory structure
```
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)
```
## Setup
We use [Docker](https://docker.com) for both development and production environments — its the simplest way to get everything up and running. See [DOCKER.md](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.
### Prerequisites
Dependencies:
- Python >=3.10 (Production uses 3.12)
- Node.js >=14 <=24 (Production uses 24)
- [Yarn](https://yarnpkg.com/getting-started/install)
- [uv](https://docs.astral.sh/uv/getting-started/installation/)
---
Create a file to hold environment variables:
```shell
touch .env.local
```
### Backend
```shell
cd backend
```
* Install Python dependencies with [uv](https://docs.astral.sh/uv/getting-started/installation/)
```shell
uv sync
```
- Install compilers
```shell
uv run python compilers/download.py
```
- Install libraries
```shell
uv run python libraries/download.py
```
- Set up the database
```shell
uv run python manage.py migrate
```
- Start the API server
```shell
uv run python manage.py runserver
```
---
### Frontend
```shell
cd frontend
```
- Install dependencies
```shell
yarn
```
- Start the development webserver
```shell
yarn dev
```
- Access the site via [http://localhost:8080](http://localhost:8080)
### Optional steps
- [Configure vscode for development](VSCODE.md)
- [Configure wine for Windows compiler on Linux](WINE.md)
- [Set up GitHub authentication](GITHUB.md)
- [Install nsjail to run the compiler sandbox](SANDBOX.md)
- [Configure an nginx reverse proxy](NGINX.md)
- Download [wibo](https://github.com/decompals/WiBo/releases/latest) and add it to your system path (for running Windows compilers from Linux)
## Notes
### Updating the database
If you modify any database models (`models.py`), you'll need to run the following to update the database:
```shell
uv run python manage.py makemigrations
uv run python manage.py migrate
```
### Running tests
To ensure everything is working properly, you can run the unit tests in the backend folder.
```shell
uv run python manage.py test
```
### Frontend styling
We use Tailwind CSS with Radix UI colors. Each color is on a scale from 1 to 12 (inclusive), each with [a well-defined meaning](https://www.radix-ui.com/docs/colors/palette-composition/understanding-the-scale).
## Linting
- Check frontend
```shell
cd frontend
yarn lint
```
- Autofix frontend
```shell
cd frontend
yarn lint --fix
```
- Check backend
```shell
cd backend
uv run mypy
uv run ruff check .
uv run ruff format .
```