All checks were successful
Deploy Development / deploy (push) Successful in 34s
Test Suite / pytest-backend (push) Successful in 25s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 7s
Test Suite / playwright-tests (push) Successful in 23s
- Introduced a centralized media archive (`/media`) with lifecycle management, including soft delete and recovery options. - Enhanced media upload functionality to support multiple files and automatic type inference. - Updated documentation to reflect the new media architecture and inline media linking specifications. - Version bump to 0.8.59 to accommodate changes in media handling and database schema. Co-authored-by: Cursor <cursoragent@cursor.com>
119 lines
2.7 KiB
Markdown
119 lines
2.7 KiB
Markdown
# Shinkan Jinkendo (真観)
|
||
|
||
**Trainer- und Vereinsplattform für Kampfsport-Trainingsplanung**
|
||
|
||
Teil der Jinkendo-App-Familie (人拳道)
|
||
|
||
## Was ist Shinkan?
|
||
|
||
Shinkan ist eine moderne Web- und Mobile-App für Kampfsport-Trainer und Vereine. Im Fokus stehen:
|
||
|
||
- **Übungsverwaltung:** Zentrale Übungsbibliothek mit Suche und Filter
|
||
- **Trainingsplanung:** Effiziente Planung für Gruppen und Termine
|
||
- **Kataloge:** Fähigkeiten und Trainingsmethoden strukturiert verwalten
|
||
- **Standardisierung:** Vereinsstandards und wiederverwendbare Vorlagen
|
||
- **Freigabe:** Gesteuerte Veröffentlichung von Inhalten
|
||
- **Medien:** Zentrale **Medienbibliothek** (`/media`), Archiv mit Lifecycle/Papierkorb, Verknüpfung in Übungen — Norm: `.claude/docs/technical/MEDIA_ASSETS_AND_ARCHIVE_SPEC.md` · Einstieg: `docs/HANDOVER.md`
|
||
|
||
## Nicht in Shinkan
|
||
|
||
- Kein persönliches Sportler-Tracking (dafür: Mitai Jinkendo)
|
||
- Kein Gürtel-Tracking im MVP
|
||
- Keine individuellen Technik-Fortschritte im MVP
|
||
|
||
## Tech-Stack
|
||
|
||
- **Frontend:** React 18 + Vite + PWA
|
||
- **Backend:** FastAPI (Python 3.12)
|
||
- **Datenbank:** PostgreSQL 16
|
||
- **Container:** Docker + Docker Compose
|
||
- **Auth:** Token-basiert + bcrypt
|
||
|
||
## Installation (Lokal)
|
||
|
||
### Voraussetzungen
|
||
- Node 20+
|
||
- Python 3.12+
|
||
- PostgreSQL 16
|
||
- Docker + Docker Compose
|
||
|
||
### Setup
|
||
|
||
```bash
|
||
# Repository clonen
|
||
git clone http://192.168.2.144:3000/Lars/shinkan-jinkendo.git
|
||
cd shinkan-jinkendo
|
||
|
||
# Environment-Variablen
|
||
cp .env.example .env
|
||
# .env anpassen!
|
||
|
||
# Backend
|
||
cd backend
|
||
python -m venv venv
|
||
source venv/bin/activate # Windows: venv\Scripts\activate
|
||
pip install -r requirements.txt
|
||
|
||
# Frontend
|
||
cd ../frontend
|
||
npm install
|
||
|
||
# Datenbank
|
||
docker compose up -d postgres
|
||
|
||
# Migrations (automatisch beim Start)
|
||
cd ../backend
|
||
python main.py
|
||
```
|
||
|
||
### Development
|
||
|
||
```bash
|
||
# Backend (Terminal 1)
|
||
cd backend
|
||
source venv/bin/activate
|
||
uvicorn main:app --reload --port 8098
|
||
|
||
# Frontend (Terminal 2)
|
||
cd frontend
|
||
npm run dev
|
||
```
|
||
|
||
Frontend: http://localhost:3098
|
||
Backend: http://localhost:8098
|
||
|
||
### Docker (Empfohlen)
|
||
|
||
```bash
|
||
# Development
|
||
docker compose -f docker-compose.dev-env.yml up --build
|
||
|
||
# Production
|
||
docker compose up --build
|
||
```
|
||
|
||
## Deployment
|
||
|
||
**Production:** https://shinkan.jinkendo.de
|
||
**Development:** https://dev.shinkan.jinkendo.de
|
||
|
||
Auto-Deploy via Gitea Actions:
|
||
- `develop` → Dev-Umgebung
|
||
- `main` → Prod-Umgebung
|
||
|
||
## Dokumentation
|
||
|
||
- **Setup:** `.claude/docs/working/SHINKAN_PROJECT_SETUP.md`
|
||
- **Anforderungen:** `.claude/docs/functional/SHINKAN_REQUIREMENTS.md`
|
||
- **Architektur:** `.claude/rules/ARCHITECTURE.md`
|
||
|
||
## Lizenz
|
||
|
||
Proprietary – Lars Stommer
|
||
|
||
## Kontakt
|
||
|
||
- **Entwickler:** Lars Stommer
|
||
- **E-Mail:** stommer@gmail.com
|
||
- **Gitea:** http://192.168.2.144:3000/Lars/shinkan-jinkendo
|