ec4b6c0b2f
CI / checks (push) Successful in 1m43s
- Django 6.0 mit Einstellungen aus Umgebungsvariablen (SQLite lokal, PostgreSQL im Betrieb) - Pakete engine (reine Spielregeln) und game (Startseite, Health-Check, Worker-Platzhalter) - uv mit Lockfile, ruff, mypy (strict für engine), pytest mit Smoke-Tests - pre-commit-Hooks und vorbereiteter Gitea-Actions-Workflow - Dockerfile und docker-compose (web, worker, db) - README, CLAUDE.md, MIT-Lizenz Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
68 lines
2.0 KiB
Markdown
68 lines
2.0 KiB
Markdown
# Hercules Pyloaded
|
||
|
||
Weltraum-Browsergame, vierte Fassung von Hercules: nach dem Original von Warpman, Hercules Reloaded
|
||
und Hercules Rereload jetzt als Neubau in Python mit Django und HTMX.
|
||
|
||
Das Konzept (Spielregeln, Architektur, Fahrplan) liegt als Dokument vor:
|
||
[Hercules Pyloaded – Konzept](https://claude.ai/code/artifact/745bf02e-46d7-4087-9f78-d941c55997f1).
|
||
|
||
## Voraussetzungen
|
||
|
||
- Python 3.12 oder neuer (entwickelt mit 3.14)
|
||
- [uv](https://docs.astral.sh/uv/) für Abhängigkeiten und Umgebung
|
||
- Git
|
||
- Docker nur für den Betrieb mit PostgreSQL (optional)
|
||
|
||
uv wurde hier per `pip install --user uv` installiert und wird daher als `python -m uv` aufgerufen.
|
||
Wer den Ordner `%APPDATA%\Python\Python314\Scripts` in den PATH aufnimmt, kann `uv` direkt nutzen.
|
||
|
||
## Einrichtung
|
||
|
||
```bash
|
||
python -m uv sync
|
||
python -m uv run pre-commit install
|
||
python -m uv run python manage.py migrate
|
||
python -m uv run python manage.py createsuperuser
|
||
python -m uv run python manage.py runserver
|
||
```
|
||
|
||
Danach läuft das Spiel unter http://127.0.0.1:8000/ und der Admin unter http://127.0.0.1:8000/admin/.
|
||
Ohne weitere Einstellungen wird SQLite im Projektordner verwendet.
|
||
|
||
## Prüfungen
|
||
|
||
```bash
|
||
python -m uv run ruff format
|
||
python -m uv run ruff check
|
||
python -m uv run mypy
|
||
python -m uv run pytest
|
||
```
|
||
|
||
pre-commit führt alle vier vor jedem Commit aus. Der Workflow in `.gitea/workflows/ci.yml` macht
|
||
dasselbe auf dem Gitea-Server, sobald dort ein Runner für das Repository registriert ist.
|
||
|
||
## Betrieb mit Docker
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
docker compose up -d --build
|
||
```
|
||
|
||
Startet `web` (Django + gunicorn), `worker` (Ereignis-Queue) und `db` (PostgreSQL 17).
|
||
|
||
## Projektstruktur
|
||
|
||
```
|
||
src/
|
||
config/ Django-Einstellungen und URLs
|
||
engine/ reine Spielregeln: Formeln, Kampf, Bahnen (ohne Django, voll typisiert)
|
||
game/ Django-App: Modelle, Services, Views, Templates, Worker
|
||
data/ Stammdaten (YAML) – maßgebliche Quelle für das Balancing
|
||
templates/ gemeinsame Templates
|
||
tests/ pytest
|
||
```
|
||
|
||
## Lizenz
|
||
|
||
MIT, siehe [LICENSE](LICENSE).
|