Database Migrations:
- Alembic configuration and env.py
- Initial schema migration (001_initial_schema.py) with all 25 entities
- Support for all 7 MVPs + authentication + compliance
- Ready to run: alembic upgrade head
Authentication System:
- Registration/login endpoints with Argon2 password hashing
- JWT token generation and refresh token rotation
- Account lockout protection (5 failed attempts)
- Token refresh with automatic rotation
- Logout with token invalidation
- Audit logging for all auth events
- Pydantic schemas for validation
- Email-based account enumeration prevention
Frontend Scaffolding:
Web (Next.js 14):
- TypeScript configuration
- Next.js App Router setup
- Tailwind CSS configured
- API client setup (Axios + React Query)
- Zustand for state management
- Directory structure for all 7 MVPs
- Layout and navigation stubs
- Responsive design ready
Mobile (React Native/Expo):
- Expo 51+ configuration
- TypeScript setup
- Expo Router for navigation
- Tab-based navigation structure
- All 7 MVP screens scaffolded
- iOS and Android support
- Accessibility components ready
Project Status:
- Backend: 85% complete (foundation + auth + migrations)
- Web: 10% complete (scaffolding only)
- Mobile: 10% complete (scaffolding only)
- Tests: Not yet implemented
All code follows OpenSpec standards and design system guidelines.
Job ID: MTAD-IMPL-2025-11-18-CL
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
25 lines
974 B
Python
25 lines
974 B
Python
"""
|
|
API v1 router aggregation.
|
|
|
|
Job ID: MTAD-IMPL-2025-11-18-CL
|
|
"""
|
|
|
|
from fastapi import APIRouter
|
|
from app.api.v1 import auth, blog, forum, merch, podcast, profiles, resources, tribute, health
|
|
|
|
api_router = APIRouter()
|
|
|
|
# Auth routes
|
|
api_router.include_router(auth.router, prefix="/auth", tags=["Authentication"])
|
|
|
|
# Include routers for all 7 MVPs
|
|
api_router.include_router(blog.router, prefix="/blog", tags=["Blog"])
|
|
api_router.include_router(forum.router, prefix="/forum", tags=["Forum"])
|
|
api_router.include_router(merch.router, prefix="/merch", tags=["Merch"])
|
|
api_router.include_router(podcast.router, prefix="/podcast", tags=["Podcast"])
|
|
api_router.include_router(profiles.router, prefix="/profiles", tags=["Profiles"])
|
|
api_router.include_router(resources.router, prefix="/resources", tags=["Resources"])
|
|
api_router.include_router(tribute.router, prefix="/tribute", tags=["Tribute"])
|
|
api_router.include_router(health.router, tags=["Health"])
|
|
|
|
__all__ = ["api_router"]
|