Go to file
Lars 43c6abce4a
Some checks failed
Deploy Development / deploy (push) Successful in 35s
Test Suite / lint-backend (push) Successful in 1s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 26s
feat: Exercise Catalogs - Admin-verwaltbare Stammdaten (Backend)
Problem: Hard-codierte Werte (Fokusbereich, Trainingscharakter) + fehlende
Dimensionen (Stil, Fähigkeiten-Matrix) + keine Rollen-basierte Sichtbarkeit

Lösung: Dynamische Kataloge mit Admin-CRUD

Migration 007_exercise_catalogs.sql:
- focus_areas (statt hard-coded 'karate', 'selbstverteidigung', 'gewaltschutz')
- training_styles (NEU: Shotokan, Goju-Ryu, Wado-Ryu, etc. mit Hierarchie)
- training_characters (statt hard-coded 'grundlage', 'aufbau', etc.)
- skill_categories (Matrix: Kategorien → Einzelfähigkeiten)
- trainer_focus_areas (Zuordnung: Trainer → Fokusbereiche)
- exercises erweitert: training_style_id, training_character_id, focus_area_id
- skills erweitert: category_id, parent_skill_id, level, sort_order
- Seed-Daten für alle Kataloge

Backend (routers/catalogs.py):
- CRUD für focus_areas (admin only)
- CRUD für training_styles (admin only, mit parent_style_id)
- CRUD für training_characters (admin only)
- CRUD für skill_categories (admin only, mit parent_category_id)
- CRUD für trainer_focus_areas (admin: assign, trainer: read own)
- Alle mit status-Filter (active/inactive)

Backend (routers/exercises.py):
- CREATE/UPDATE erweitert um training_style_id, training_character_id, focus_area_id
- Legacy-Felder (focus_area text, training_character text) bleiben parallel

Backend (main.py):
- catalogs Router registriert

Nächster Schritt: Frontend-UI (Admin-Kataloge + Exercise-Formular-Update)
2026-04-22 22:06:11 +02:00
.claude refactor: Standardisiere Formular-Layout (Label oben, volle Breite, linksbündig) 2026-04-22 17:11:40 +02:00
.gitea/workflows fix: Install Playwright with system dependencies 2026-04-22 17:14:48 +02:00
backend feat: Exercise Catalogs - Admin-verwaltbare Stammdaten (Backend) 2026-04-22 22:06:11 +02:00
frontend refactor: Standardisiere Formular-Layout (Label oben, volle Breite, linksbündig) 2026-04-22 17:11:40 +02:00
tests feat: Add comprehensive test suite with Playwright 2026-04-22 16:33:03 +02:00
.env.example feat: Initial Shinkan setup 2026-04-21 14:26:12 +02:00
.gitignore feat: Initial Shinkan setup 2026-04-21 14:26:12 +02:00
CLAUDE.md feat: Initial Shinkan setup 2026-04-21 14:26:12 +02:00
docker-compose.dev-env.yml fix: Remove duplicate /api from VITE_API_URL 2026-04-21 16:33:18 +02:00
docker-compose.yml feat: Complete MVP setup - Docker, Frontend, Migrations, CI/CD 2026-04-21 14:36:52 +02:00
playwright.config.js feat: Add comprehensive test suite with Playwright 2026-04-22 16:33:03 +02:00
README.md feat: Initial Shinkan setup 2026-04-21 14:26:12 +02:00
test-frontend.js feat: Add Auth system with Login UI 2026-04-21 14:56:16 +02:00
test-login.js Add Playwright tests for Shinkan login page 2026-04-22 06:45:48 +02:00
test-shinkan.js Add Playwright tests for Shinkan login page 2026-04-22 06:45:48 +02:00

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

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

# 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

# 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)

# 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