Files
techno-todo/README.md
T

62 lines
2.0 KiB
Markdown

# ⚡ TECHNO-TODO
90s-Terminal/Cyberpunk-Style Todo-App. Bewusst als **Proof-of-Concept** gebaut, um den
kompletten Selbsthosting-Workflow zu testen:
**Gitea (Git) → Dokploy (PaaS) → Docker Swarm → Traefik → Live im LAN**
## Tech-Stack
- **Runtime:** Node.js 22 (Alpine)
- **Framework:** Express 4
- **Datenbank:** SQLite via `better-sqlite3` (bewusst statt PostgreSQL — siehe unten)
- **Templating:** EJS
- **Style:** 90s CRT/Neon-Look (grüne Scanlines, pinker Glow, monospace)
## Warum SQLite statt PostgreSQL?
Die erste Version nutzte PostgreSQL über Dokploy's Datenbank-Provisioning. Dabei traten
zwei Probleme auf:
1. **DB-Service wurde nie gestartet** — der `techno-db` Docker-Service existierte nicht,
die App crashte mit `ECONNREFUSED` / `ENOTFOUND`.
2. Der Dokploy-Deploy-Worker hatte zusätzlich einen **abgelaufenen API-Key** und die
Services waren **out-of-sync** (manuell umbenannt).
Für den POC wurde daher auf SQLite umgestellt — **keine externe DB nötig**, die App ist
in sich abgeschlossen. Für eine Produktiv-App mit echter Datenbank siehe
[`docs/DEPLOYMENT.md`](docs/DEPLOYMENT.md).
## Schnellstart (lokal)
```bash
npm install
npm start
# → http://localhost:3000
```
## Schnellstart (Docker)
```bash
docker build -t techno-todo .
docker run -p 3000:3000 techno-todo
```
## Dokumentation
| Datei | Inhalt |
|-------|--------|
| [`docs/DEPLOYMENT.md`](docs/DEPLOYMENT.md) | **Komplette Dokploy-Deployment-Anleitung** — nativer Weg (UI/API) + was tatsächlich gemacht wurde |
| [`docs/AUTODEPLOY.md`](docs/AUTODEPLOY.md) | **Auto-Deploy-Pipeline** — Gitea-Push → automatischer Build + Deploy |
| [`docs/TROUBLESHOOTING.md`](docs/TROUBLESHOOTING.md) | Alle Fehler, die beim POC aufgetreten sind, und ihre Lösungen |
| [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) | Netzwerk-Topologie und Infrastruktur-Übersicht |
## Live-URL
```
http://techno-todo.192.168.0.184.sslip.io/
```
(Erreichbar aus dem Heimnetz `192.168.0.x`. Die öffentliche IP `152.53.197.186` routet
aktuell nicht zu Dokploy — siehe `docs/ARCHITECTURE.md`.)