Skip to content

unitystation/central-command

Repository files navigation

Central Command

Docker Image Version (latest by date) Codacy Badge

The all-in-one backend application for Unitystation

Features

  • Account management and user validation.
  • Server list management.
  • In-game persistence.
  • Works cross-fork!
  • Modular architecture.

Development guide

Environment setup

Copy example.env to .env and customize it. You can then start development by either using docker or running the project locally.

Setting up python to run the project locally

You will need python 3.11+

Extra steps if don't want to install poetry globally for some reason

Install venv (only first time or after updating sytem python version)

python -m venv .venv

Activate venv on Linux

. .venv/bin/activate

Activate venv on Windows

.venv\Scripts\activate

Dependency installation

Install poetry to manage dependencies and update pip

pip install -U pip poetry

Install dev dependencies

poetry install

Start the server

from the src folder run

python manage.py runserver

pre-commit

pre-commit is a git hook which runs every time you make a commit to catch linting and formatting errors early.

pre-commit install

Hint: if the world is on fire, production servers down, clown at your doorstep and you don't have time to make linters happy, add -n to git commit command (CI will still be mad though).

Setting up Docker

Docker (with help of compose) lets you launch entire project including database locally without installing anything.

1- To get started with docker, install it from here and (optionally) install docker engine.

2- Launch project by running docker compose -f dev-compose.yml up --build.

Try it out

After everything is done, you can access the web UI at http://localhost:8000/. Here you will see the automatic documentation for the API and you can test out the API end points.

Some other useful links:

You can also use Bruno (a Postman alternative) to test out the API. The Bruno project is included in the repository and you can find it in the 'api-collection' folder in the root of the repository.