Go to file
Lars 01ed5509f8
Some checks failed
Deploy Development / deploy (push) Successful in 36s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 6s
Test Suite / playwright-tests (push) Failing after 1m54s
feat: Exercises v2.0 + Migrations 014/016/017 (Clean-Room Rebuild)
BREAKING CHANGES:
- exercises.py komplett neu gebaut (kein Legacy-Code)
- Legacy-Felder entfernt: age_groups, focus_area, secondary_areas, training_character
- Nur M:N Relations, keine JSONB-Kataloge

Migrations:
- Migration 014: Variant Progression + Search Vector + Legacy DROP
  - exercise_variants: progression_level, sequence_order, prerequisite_variant_id
  - exercises: search_vector (tsvector für Volltext-Suche)
  - DROP age_groups, focus_area, secondary_areas, training_character
  - Helper: update_timestamp() Funktion für Triggers
- Migration 016: Saved Exercise Searches
  - saved_exercise_searches (profile_id, name, filters JSONB)
- Migration 017: Exercise Blocks + Template Blocks
  - exercise_blocks (name, description, goal, is_template)
  - exercise_block_items (exercise_id, variant_id, sequence_order, is_placeholder, placeholder_criteria)

Backend (exercises.py v2.0):
- GET /exercises: Volltext-Suche via tsvector, M:N Joins
- GET /exercises/{id}: enrich_exercise_detail() mit allen M:N Relations
- POST /exercises: M:N Relations (focus_areas_multi, training_styles_multi, target_groups_multi, age_groups, skills)
- PUT /exercises: Partial Update + M:N Relations
- DELETE /exercises: Cascade-Check für exercise_block_items

Architecture:
- Issue #53 konform: Import = Feld-Zuordnung, keine fachliche Interpretation
- Helper: enrich_exercise_detail() für vollständige Objekte
- Helper: assign_exercise_relations() für M:N Management (DELETE+INSERT Pattern)

Docs:
- SMW_IMPORTER_GAP_ANALYSIS.md: Vollständige Gap-Analyse + Umsetzungsplan

Version: 0.7.0
Module: exercises 2.0.0
Schema: 20260424002
2026-04-24 15:04:27 +02:00
.claude feat: Exercises v2.0 + Migrations 014/016/017 (Clean-Room Rebuild) 2026-04-24 15:04:27 +02:00
.gitea/workflows fix: Install Playwright with system dependencies 2026-04-22 17:14:48 +02:00
backend feat: Exercises v2.0 + Migrations 014/016/017 (Clean-Room Rebuild) 2026-04-24 15:04:27 +02:00
frontend refactor: split AdminHierarchyPage into modular components 2026-04-24 09:08:12 +02:00
test-results feat: Refactor target groups to M:N relationship and update related endpoints 2026-04-23 09:27:13 +02:00
tests feat: Add comprehensive test suite with Playwright 2026-04-22 16:33:03 +02:00
.env.example feat: Add MediaWiki import functionality with tracking and mapping 2026-04-24 14:41:52 +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 fix: Use Chromium instead of Chrome for Playwright tests 2026-04-22 22:09:17 +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