Add supplements, kettlebell, calendar, push notifications, and PWA support

- Supplement tracking: CRUD endpoints, /today, /logs, Supplements page
- Kettlebell workouts: session tracking, analytics endpoint, ActiveSession page
- Calendar module: events CRUD, calendar components
- Push notifications: VAPID keys, PushSubscription model, APScheduler reminders,
  service worker with push/notificationclick handlers, Profile notifications UI
- PWA: vite-plugin-pwa, manifest, icons, service worker generation
- Frontend: TypeScript types, API modules, ConfirmModal, toast notifications
- Auth fixes: password hashing, nutrition endpoint auth
- CLAUDE.md: project documentation and development guide

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Carlos Escalante
2026-03-20 18:57:03 -06:00
parent bd91eb4171
commit f279907ae3
61 changed files with 9256 additions and 85 deletions

View File

@@ -1,6 +1,6 @@
from fastapi import APIRouter
from app.api.v1.endpoints import health, login, nutrition, plans, users
from app.api.v1.endpoints import calendar, health, kettlebell, login, nutrition, plans, push, supplements, users
api_router = APIRouter()
api_router.include_router(login.router, tags=["login"])
@@ -8,3 +8,7 @@ api_router.include_router(users.router, prefix="/users", tags=["users"])
api_router.include_router(nutrition.router, prefix="/nutrition", tags=["nutrition"])
api_router.include_router(health.router, prefix="/health", tags=["health"])
api_router.include_router(plans.router, prefix="/plans", tags=["plans"])
api_router.include_router(kettlebell.router, prefix="/kettlebell", tags=["kettlebell"])
api_router.include_router(supplements.router, prefix="/supplements", tags=["supplements"])
api_router.include_router(calendar.router, prefix="/calendar", tags=["calendar"])
api_router.include_router(push.router, prefix="/push", tags=["push"])