53 lines
1.2 KiB
Markdown
53 lines
1.2 KiB
Markdown
# sortof
|
|
|
|
Project Zomboid mod load-order sorter for dedicated servers. Paste workshop
|
|
IDs or a collection URL; get back the `WorkshopItems=`, `Mods=`, and `Map=`
|
|
lines for `servertest.ini`.
|
|
|
|
## Stack
|
|
|
|
- FastAPI + asyncpg, Python 3.12.
|
|
- Postgres 16 (Docker).
|
|
- DepotDownloader for fetching `mod.info` / `map.info` from each cached
|
|
workshop item.
|
|
- Vanilla JSX + index.html, no build step (Babel-standalone in-browser).
|
|
|
|
## Setup
|
|
|
|
```bash
|
|
docker compose up -d sortof_db
|
|
|
|
python3.12 -m venv api/.venv
|
|
api/.venv/bin/pip install -r api/requirements.txt
|
|
|
|
python3.12 -m venv worker/.venv
|
|
worker/.venv/bin/pip install -r worker/requirements.txt
|
|
```
|
|
|
|
`.env` next to `docker-compose.yml`:
|
|
|
|
```
|
|
POSTGRES_USER=sortof
|
|
POSTGRES_PASSWORD=<random>
|
|
POSTGRES_DB=sortof
|
|
SORTOF_CORS_ORIGINS=http://127.0.0.1:8801
|
|
```
|
|
|
|
Set `DD_PATH` to the DepotDownloader binary, then:
|
|
|
|
```bash
|
|
api/.venv/bin/uvicorn app:app --host 127.0.0.1 --port 8801
|
|
worker/.venv/bin/python drain.py
|
|
```
|
|
|
|
## Layout
|
|
|
|
```
|
|
api/ FastAPI service, sort engine, response adapters
|
|
worker/ drain worker (DepotDownloader + mod.info parser)
|
|
frontend/ index.html + JSX
|
|
init/ Postgres bootstrap migrations (run on first boot)
|
|
data/ checked-in JSON config (e.g., pz_versions.json)
|
|
docs/ specs, plans
|
|
```
|