M0: Projektgerüst für Hercules Pyloaded
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>
This commit is contained in:
Hofei90
2026-09-25 11:50:40 +02:00
commit ec4b6c0b2f
36 changed files with 1410 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
# Hercules Pyloaded – Hinweise für Claude
Python-Neubau des PHP-Browsergames Hercules. Die Altversionen liegen unverändert daneben
(`../v001-warpman`, `../v002-hercules-reload`, `../v003-hercules-rereload`) und dienen nur als
Quelle für Spielideen und Balancing-Werte; Code wird nicht übernommen.
Konzept: https://claude.ai/code/artifact/745bf02e-46d7-4087-9f78-d941c55997f1 (Claude Doc,
mit den Docs-Werkzeugen lesen). Vor größeren Änderungen an Spielregeln dort nachsehen.
## Befehle
uv ist nicht im PATH, daher immer `python -m uv run …`:
- Tests: `python -m uv run pytest`
- Lint/Format: `python -m uv run ruff check` / `python -m uv run ruff format`
- Typen: `python -m uv run mypy`
- Server: `python -m uv run python manage.py runserver`
## Architekturregeln
- `src/engine/` ist reines Python ohne Django-Import, `mypy --strict`, jede Formel hat Tests.
- Views rufen Services auf; Services laden Daten, rufen die Engine, schreiben in einer Transaktion.
- Erweiterbarkeit ist eine harte Anforderung: neue Rohstoffe, Gebäude, Forschungen, Rumpfe und
Bauteile nur über Daten (`data/*.yaml`), nie über neue Spalten oder Code. Keine Spalte pro
Rohstoff oder Gebäude; Verweise nur über stabile Text-Schlüssel (`titan`, `zentrale`).
- Wirkungen von Gebäuden und Forschung laufen über das Effekt-System; neuer Code nur für eine
neue Effekt-Art.
- Wachstum exponentiell, Parameter pro Eintrag in den Stammdaten.
- Zeitgesteuertes über die Event-Queue (`run_worker`); Rohstoffe werden beim Lesen hochgerechnet.
- Einstellungen nur über Umgebungsvariablen (`src/config/settings.py`, `.env.example`).
## Sprache
Oberfläche, Kommentare, Docstrings und Commit-Nachrichten auf Deutsch. Code-Bezeichner
(Klassen, Funktionen, Variablen) auf Englisch.
## Repository
Gitea: https://git.pertl-ing.de/ (privat). Push nur nach Freigabe durch den User.