Files

180 lines
4.4 KiB
Markdown
Raw Permalink Normal View History

# HMS Licht & Ton Homepage & Verwaltungssystem
Die offizielle Website und Verwaltungsplattform für HMS Licht & Ton (Hammerschmidt u. Mössle GbR) aus Leipheim/Ellzee. Professionelle Veranstaltungstechnik Vermietung, Verkauf, Personal und Transport von Tontechnik und Lichttechnik.
---
## Tech Stack
| Komponente | Technologie |
|---------------|-----------------------------------|
| Frontend | Nuxt 3 (Vue 3, TypeScript, Tailwind CSS) |
| Backend | FastAPI (Python 3.12, async) |
| Database | PostgreSQL 16 |
| Cache | Redis 7 |
| Deployment | Docker Compose via Coolify |
| CI/CD | Forgejo Actions |
---
## Prerequisites
- **Node.js** 20+
- **Python** 3.12+
- **Docker** & Docker Compose
- **Git**
---
## Setup
### 1. Repository klonen
```bash
git clone https://forgejo.media-on.de/Leopoldadmin/hms-licht-ton.git
cd hms-licht-ton
```
### 2. Environment konfigurieren
```bash
cp .env.example .env
# .env mit echten Werten ausfüllen (API-Token, Secrets, SMTP, etc.)
```
### 3. Anwendung starten (Docker)
```bash
docker compose up -d
```
Die Anwendung ist danach erreichbar unter:
- **Frontend:** http://localhost:3000
- **Backend API:** http://localhost:8000
- **API Docs (Swagger):** http://localhost:8000/docs
---
## Development
### Frontend (Nuxt 3)
```bash
cd frontend
npm ci
npm run dev # Dev-Server auf http://localhost:3000
npm test # Unit Tests (Vitest)
npx playwright test # E2E Tests
npm run build # Production Build
npm run typecheck # TypeScript Type Check
npm run lint # ESLint
```
### Backend (FastAPI)
```bash
cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
pytest -v # Tests ausführen
```
Weitere Build- und Test-Befehle siehe [AGENTS.md](AGENTS.md).
---
## Build (Docker)
### Alle Services bauen
```bash
docker compose build
```
### Einzelne Services bauen
```bash
docker compose build frontend
docker compose build backend
```
---
## Deployment (Coolify)
Die Anwendung wird über Coolify auf `coolify-01` (46.225.91.159) deployt.
1. In Coolify ein neues Projekt "HMS Licht & Ton" anlegen.
2. Als Source das Forgejo-Repository `Leopoldadmin/hms-licht-ton` auswählen.
3. Als Deployment-Methode "Docker Compose" wählen und `docker-compose.yml` referenzieren.
4. Environment-Variablen in Coolify setzen (entsprechend `.env.example`).
5. Domain für Frontend konfigurieren (z.B. `hms.media-on.de` → Port 3000).
6. Backend-Port (8000) nur intern暴露en oder über Traefik mit eigener Subdomain.
7. Deploy auslösen. Coolify baut die Images und startet alle Services.
### Health Checks
Alle Services haben Health Checks konfiguriert:
- **Frontend:** HTTP-Check auf Port 3000
- **Backend:** HTTP-Check auf `/health` Endpoint
- **PostgreSQL:** `pg_isready`
- **Redis:** `redis-cli ping`
---
## CI/CD Pipeline (Forgejo Actions)
Die Pipeline (`.forgejo/workflows/ci.yml`) läuft bei jedem Push und PR auf `main`:
1. **frontend-test:** `npm ci``npm test``npm run build`
2. **backend-test:** `pip install``pytest -v`
3. **docker-build:** Baut Frontend- und Backend-Docker-Images, validiert `docker-compose.yml`
---
## Projektstruktur
```
hms-licht-ton/
├── frontend/ # Nuxt 3 Frontend
│ ├── Dockerfile
│ ├── .dockerignore
│ ├── package.json
│ ├── nuxt.config.ts
│ ├── pages/
│ ├── components/
│ ├── composables/
│ ├── stores/
│ └── tests/
├── backend/ # FastAPI Backend
│ ├── Dockerfile
│ ├── .dockerignore
│ ├── requirements.txt
│ ├── app/
│ │ ├── main.py
│ │ ├── config.py
│ │ ├── database.py
│ │ ├── auth.py
│ │ ├── cache.py
│ │ ├── routers/
│ │ └── schemas/
│ └── tests/
├── docs/ # Projektdokumentation
├── .forgejo/
│ └── workflows/
│ └── ci.yml # CI/CD Pipeline
├── docker-compose.yml # 4 Services: frontend, backend, postgres, redis
├── .env.example # Environment-Vorlage
├── .gitignore
├── AGENTS.md # Build & Test Guide
└── README.md
```
---
## License
© Hammerschmidt u. Mössle GbR. Alle Rechte vorbehalten.