116 lines
2.8 KiB
Markdown
116 lines
2.8 KiB
Markdown
# FarmCal
|
|
|
|
FarmCal ist eine schlanke Web-App zur Ingame-Planung fuer Farming Simulator:
|
|
- Felder verwalten (Feldnummer + optionaler Name)
|
|
- Aussaat- und Ernteplanung pro Feld
|
|
- Ingame-Zeitmodell mit konfigurierbaren `Tagen pro Monat`
|
|
- Tagesansicht mit konkreten Aufgaben (Aussaat/Ernte)
|
|
|
|
Die App ist fuer Desktop und Smartphone ausgelegt (responsive UI) und nutzt MariaDB.
|
|
|
|
## Tech-Stack
|
|
|
|
- Backend: Go (net/http + html/template)
|
|
- Datenbank: MariaDB (auch externe DB im Netzwerk)
|
|
- Deployment: Docker (ein Container fuer die App)
|
|
|
|
## Voraussetzungen
|
|
|
|
- MariaDB erreichbar im Netzwerk
|
|
- Datenbank und Benutzer vorhanden, z. B.:
|
|
- DB: `farmcal`
|
|
- User: `farmcal`
|
|
- Rechte auf `farmcal.*`
|
|
|
|
## Konfiguration
|
|
|
|
1. `.env.example` nach `.env` kopieren
|
|
2. `DB_DSN` auf deine Netzwerk-MariaDB anpassen
|
|
|
|
Beispiel:
|
|
|
|
```env
|
|
APP_PORT=8080
|
|
DB_DSN=farmcal:SEHR_SICHERES_PASSWORT@tcp(192.168.1.40:3306)/farmcal?parseTime=true
|
|
```
|
|
|
|
Optional fuer Matrix-Chat (nur Anzeige):
|
|
|
|
```env
|
|
MATRIX_HOMESERVER_URL=https://matrix.example.com
|
|
MATRIX_ACCESS_TOKEN=YOUR_MATRIX_ACCESS_TOKEN
|
|
MATRIX_ROOM_ID=!abcdefg12345:example.com
|
|
MATRIX_LIMIT=25
|
|
MATRIX_ENABLE_CRYPTO=1
|
|
MATRIX_PICKLE_KEY=LONG_RANDOM_SECRET
|
|
MATRIX_CRYPTO_STORE_PATH=/tmp/farmcal-matrix-crypto.db
|
|
MATRIX_TIMEZONE=Europe/Berlin
|
|
```
|
|
|
|
- `MATRIX_ACCESS_TOKEN` sollte ein User-Token mit Leserechten fuer den Raum sein.
|
|
- Wenn Matrix-Variablen fehlen, bleibt das Feature deaktiviert.
|
|
- Fuer E2EE-Entschluesselung muss der Matrix-User im Raum sein und Schluessel fuer diesen Client verfuegbar haben.
|
|
|
|
## Start mit Docker Compose
|
|
|
|
```bash
|
|
docker compose --env-file .env up -d --build
|
|
```
|
|
|
|
Danach ist FarmCal unter `http://<host>:8080` erreichbar.
|
|
|
|
## Als Image bauen und verteilen
|
|
|
|
Image lokal bauen:
|
|
|
|
```bash
|
|
docker build -t farmcal:latest .
|
|
```
|
|
|
|
Tag fuer Registry:
|
|
|
|
```bash
|
|
docker tag farmcal:latest <deine-registry>/<dein-user>/farmcal:latest
|
|
```
|
|
|
|
Push:
|
|
|
|
```bash
|
|
docker push <deine-registry>/<dein-user>/farmcal:latest
|
|
```
|
|
|
|
## Datenmodell
|
|
|
|
- `settings`: globale Spielparameter (`days_per_month`)
|
|
- `fields`: Feldliste
|
|
- `crops`: Feldfruechte + Aussaatfenster + Wachstumsdauer
|
|
- `plans`: geplanter Anbau je Feld mit berechnetem Erntetermin
|
|
|
|
Beim ersten Start werden Tabellen automatisch erstellt und Standardfruechte vorgeladen.
|
|
|
|
## Lokale Entwicklung (ohne Docker)
|
|
|
|
```bash
|
|
set DB_DSN=farmcal:PASS@tcp(127.0.0.1:3306)/farmcal?parseTime=true
|
|
go run ./cmd/server
|
|
```
|
|
|
|
## Neues Gitea-Repo anbinden
|
|
|
|
```bash
|
|
git init
|
|
git add .
|
|
git commit -m "Initial FarmCal MVP"
|
|
git branch -M main
|
|
git remote add origin <DEIN_GITEA_REPO_URL>
|
|
git push -u origin main
|
|
```
|
|
|
|
## Nächste sinnvolle Ausbaustufen
|
|
|
|
- Bearbeiten/Loeschen von Feldern und Plaenen
|
|
- Kalenderansicht fuer mehrere Monate
|
|
- Mehrspieler-/Benutzerverwaltung
|
|
- Import/Export fuer bestehende Tabellen
|
|
- Matrix: Nachrichten aus FarmCal senden (write support)
|