505a8e5e38
feat: Skills & Methods catalog complete
...
Deploy Development / deploy (push) Successful in 34s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 14s
Backend:
- Created routers/skills.py with full CRUD
- Skills: list (with category filter), get, create, update, delete
- Methods: list (with category filter), get, create, update, delete
- Default: only show active items
- Read access: all authenticated users
- Write access: admin only
- Registered skills router in main.py
Frontend:
- Complete SkillsPage with 2 tabs (Fähigkeiten, Trainingsmethoden)
- Browse by category with cards layout
- Admin CRUD forms (importance rating for skills, duration/group size for methods)
- Mobile-responsive grid layout
- Updated api.js with all skill/method functions
- Added /skills route to App.jsx
Migration already exists: 003_catalogs.sql (skills, training_methods + seed data)
Next: Training Planning (core feature)
2026-04-22 16:50:31 +02:00
8e027e02bb
feat: Clubs & Organization Management complete
...
Deploy Development / deploy (push) Successful in 35s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 14s
Backend:
- Created routers/clubs.py with full CRUD
- Clubs: list, get, create, update, delete (admin only)
- Divisions: list, create, update, delete (admin only)
- Training Groups: list, get, create, update, delete (admin/trainer)
- Registered clubs router in main.py
- Permission checks: admin for clubs/divisions, trainer for groups
Frontend:
- Complete ClubsPage with 3 tabs (Vereine, Sparten, Gruppen)
- Role-based UI (admin sees all actions, trainer can manage groups)
- Full CRUD forms with modals
- Mobile-responsive card layouts
- Updated api.js with all club/division/group functions
Migration already exists: 002_organization.sql (clubs, divisions, training_groups)
Next: Skills & Methods display (read-only)
2026-04-22 16:48:02 +02:00
8c7cf91cef
feat: Exercise CRUD complete
...
Deploy Development / deploy (push) Successful in 36s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 12s
Test Suite / playwright-tests (push) Failing after 14s
Backend:
- Registered exercises router in main.py
- Migration 005 already created (exercises, exercise_skills, exercise_variants, exercise_media)
- Full CRUD endpoints with visibility logic
Frontend:
- Complete ExercisesPage with list/create/edit/delete
- Filter controls (focus_area, visibility, status)
- Modal form with all fields
- Skills multi-select
- Mobile-responsive card layout
Next: Clubs Management
2026-04-22 16:44:32 +02:00
de53ba3f66
fix: Add lucide-react dependency for navigation icons
...
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 54s
CRITICAL FIX: Build was failing because lucide-react was not in package.json
- Added lucide-react ^0.344.0 to dependencies
- Required for appNav.js and DesktopSidebar.jsx icon imports
- Build should now succeed
Apologies for missing this in initial design foundation commit!
2026-04-22 16:40:05 +02:00
c44bbefc5e
feat: Add comprehensive test suite with Playwright
...
Deploy Development / deploy (push) Failing after 35s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Failing after 1m7s
Test Suite / playwright-tests (push) Has been skipped
Test Suite:
- playwright.config.js: Config for dev environment (http://192.168.2.49:3098 )
- tests/dev-smoke-test.spec.js: 8 tests covering:
* Login functionality
* Dashboard loading
* Navigation to Exercises/Clubs
* Desktop-Sidebar visibility (≥1024px)
* Bottom-Nav visibility (Mobile)
* Session persistence after reload
* Console error checking
Gitea CI/CD:
- .gitea/workflows/test.yml: Automated testing after deploy
* Backend syntax check
* Frontend build test
* Playwright E2E tests
* Screenshot upload on failure
Test Coverage:
- Auth flow (login, session persistence)
- Responsive navigation (mobile + desktop)
- Page navigation (dashboard, exercises, clubs)
- Error detection (console errors)
Next: Run tests locally, then implement Exercise CRUD
2026-04-22 16:33:03 +02:00
46a90ae910
feat: Complete design foundation with responsive navigation
...
Deploy Development / deploy (push) Failing after 26s
Design System:
- app.css already exists with full design tokens, dark mode, responsive breakpoints
- CSS variables for colors, spacing, typography
- Mobile-first layout with safe-area support (iOS notch)
Navigation System:
- config/appNav.js: Single source of truth for navigation items
- Bottom-Nav for mobile (<1024px) with horizontal scrolling
- DesktopSidebar for desktop (≥1024px) with fixed left sidebar
- Role-based navigation (isAdmin adds Admin link)
App.jsx Restructure:
- Responsive layout: Bottom-Nav (mobile) + DesktopSidebar (desktop)
- Protected/Public routes with loading states
- Logout handler with confirmation
PWA Setup:
- viewport-fit=cover for notch support
- apple-mobile-web-app meta tags
- Icon links prepared (icons pending)
Architecture:
- Follows Mitai design patterns
- Responsive breakpoint at 1024px
- Single source of truth for navigation config
Next: Icons, Exercise CRUD, Clubs/Groups Management
2026-04-22 16:25:36 +02:00
edb33b8fc3
fix: Use api.js in AuthContext for session persistence
...
Deploy Development / deploy (push) Successful in 43s
- AuthContext was using fetch() directly with relative URLs
- Relative URLs went to nginx port (3098) instead of backend (8098)
- Now uses api.getCurrentProfile() which has correct API_URL
- Session persistence should work after browser refresh
2026-04-22 15:56:20 +02:00
356ab18ec0
fix: Add /profiles/me endpoint for session persistence
...
Deploy Development / deploy (push) Successful in 39s
- AuthContext checks /profiles/me on mount to restore session
- Without this endpoint, users had to re-login on every refresh
- Returns current user's profile based on auth token
Issue: Session persistence broken
2026-04-22 15:46:40 +02:00
b1142070e9
docs: Add comprehensive session handover document
Deploy Development / deploy (push) Successful in 35s
2026-04-22 15:09:07 +02:00
08326bdcc6
fix: Remove Mitai-specific columns from session query
Deploy Development / deploy (push) Successful in 33s
2026-04-22 06:56:57 +02:00
c4b1b54f61
feat: Add navigation and basic pages structure
Deploy Development / deploy (push) Successful in 34s
2026-04-22 06:48:18 +02:00
3b2c3605fd
Add Playwright tests for Shinkan login page
...
Deploy Development / deploy (push) Successful in 47s
- Created test-login.js to automate testing of the Shinkan login page, including waiting for deployment, capturing page title, heading, and counting elements (buttons, forms, inputs).
- Implemented functionality to log button texts and input placeholders, and take a full-page screenshot.
- Created test-shinkan.js to streamline the login page testing process, removing the deployment wait and adding a preview of the page content.
2026-04-22 06:45:48 +02:00
33032ac6c2
fix: Change created to created_at in sessions INSERT
Deploy Development / deploy (push) Successful in 32s
2026-04-21 21:18:09 +02:00
88677ea29f
fix: Add missing auth columns to profiles table
Deploy Development / deploy (push) Successful in 43s
2026-04-21 21:07:52 +02:00
9cd85266f6
fix: Remove duplicate /api from VITE_API_URL
Deploy Development / deploy (push) Successful in 37s
2026-04-21 16:33:18 +02:00
e4d052f182
fix: Add nginx SPA routing config
Deploy Development / deploy (push) Successful in 33s
2026-04-21 16:30:11 +02:00
b1c5999f6e
fix: Use Pi IP instead of localhost
Deploy Development / deploy (push) Successful in 32s
2026-04-21 16:24:43 +02:00
495cebd915
fix: Configure localhost URLs for dev environment
Deploy Development / deploy (push) Successful in 32s
2026-04-21 16:17:40 +02:00
9feead99ac
fix: Remove double prefix in router registration
Deploy Development / deploy (push) Successful in 41s
2026-04-21 16:12:25 +02:00
da634d813c
fix: Add ProfileCreate and ProfileUpdate models
Deploy Development / deploy (push) Successful in 41s
2026-04-21 16:05:42 +02:00
e1397277a7
fix: Add missing password reset models to models.py
Deploy Development / deploy (push) Successful in 41s
2026-04-21 16:04:22 +02:00
efc2a11a76
feat: Add Auth system with Login UI
...
Deploy Development / deploy (push) Successful in 39s
Backend:
- Auth router (login, register, logout)
- Profiles router (get current profile)
- Registered in main.py
Frontend:
- LoginPage with login/register tabs
- Dashboard with welcome screen
- Simplified AuthContext for Shinkan
- Protected routes in App.jsx
- Public routes redirect when logged in
Ready for testing!
version: 0.1.0
2026-04-21 14:56:16 +02:00
fd5efa8662
feat: Add automatic migrations system
...
Deploy Development / deploy (push) Successful in 36s
- New run_migrations.py script
- Runs all SQL files in migrations/ on startup
- Tracks executed migrations in schema_migrations table
- Retries database connection (30 attempts)
- Separate Shinkan DB (shinkan_dev / shinkan)
This ensures a clean separation from Mitai database.
2026-04-21 14:49:28 +02:00
91e665c960
fix: Use direct deployment instead of SSH action
...
Deploy Development / deploy (push) Successful in 34s
- Runner runs on same server (192.168.2.49)
- No SSH secrets needed
- Same pattern as Mitai deployment
- Health check on port 8098 (dev) / 8003 (prod)
2026-04-21 14:41:29 +02:00
b2bc8590c4
feat: Complete MVP setup - Docker, Frontend, Migrations, CI/CD
...
Deploy Development / deploy (push) Failing after 4s
Docker & Deployment:
- docker-compose.yml (Prod: Port 3003/8003)
- docker-compose.dev-env.yml (Dev: Port 3098/8098)
- Backend Dockerfile (Python 3.12-slim)
- Frontend Dockerfile (Node 20 + Nginx)
- Gitea Actions (deploy-dev.yml, deploy-prod.yml)
Frontend:
- React 18 + Vite setup
- package.json, vite.config.js, index.html
- App.jsx (minimal with version display)
- api.js (complete API client)
- app.css + AuthContext from Mitai
- main.jsx entry point
Backend Migrations:
- 001_auth_membership.sql (Auth + Features + Tier Limits)
- 002_organization.sql (Clubs, Divisions, Training Groups)
- 003_catalogs.sql (Skills + Methods with sample data)
Documentation:
- .claude/rules/ (ARCHITECTURE, CODING_RULES, etc.)
- SHINKAN_PROJECT_SETUP.md (technical setup guide)
Server:
- Directories created on Pi: /home/lars/docker/shinkan[-dev]
- Gitea Runner configured and running
Ready for first deployment to dev.shinkan.jinkendo.de
version: 0.1.0
date: 2026-04-21
2026-04-21 14:36:52 +02:00
a426c03598
feat: Initial Shinkan setup
...
- Repository structure created
- Core backend files from Mitai (auth, db, db_init)
- Shinkan-specific: version.py, models.py, main.py
- Documentation: CLAUDE.md, README.md
- Environment: .env.example, .gitignore
version: 0.1.0
date: 2026-04-21
2026-04-21 14:26:12 +02:00