2.6 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
F1tness Parser is a FastAPI-based web application that parses fitness training data from two note formats:
- Obsidian Notes: Markdown tables with
# DD.MM.YYYY (trainer-session)headers - Apple Notes: Bold markdown tables with
**DD.MM.YYYY (trainer-session)**headers
The application uses a layered architecture with parsers, models, services, and API endpoints.
Development Commands
Local Development
# Start development server
python run.py
# Start with Docker Compose (includes PostgreSQL)
docker compose up --build
# Run migrations manually
python -c "from migrations.runner import MigrationRunner; from app.config import settings; import asyncio; asyncio.run(MigrationRunner(settings.get_postgres_database_url()).run_migrations())"
Testing
# Run tests
pytest
# Run specific test file
pytest tests/test_core/test_obsidian_parser.py
# Run tests with coverage
pytest --cov=app
Type Checking
# Run type checking
mypy app/
Architecture
Core Components
Parser Architecture: The system uses a base parser class (app/core/parsers/base.py) with format-specific implementations:
ObsidianNotesParser- handles Obsidian markdown formatAppleNotesParser- handles Apple notes format- Each parser includes exercise name mapping for normalization
Data Models: Located in app/core/dto/training.py:
Training- represents a workout sessionExercise- individual exercise with multiple approachesApproach- single set with weight and reps
API Structure:
/api/v1/- REST API endpoints/app/- Web interface endpoints- Static files served from
app/static/ - Templates in
app/templates/
Database
The application supports both SQLite (default) and PostgreSQL. Database migrations are handled by a custom migration runner in migrations/runner.py that reads SQL files from migrations/sql/.
Configuration is managed through app/config.py using Pydantic settings with .env file support.
Key Files
app/main.py- FastAPI application setup with lifespan managementapp/config.py- Application configuration and database settingsrun.py- Development server entry pointmigrations/runner.py- Custom database migration systemcompose.yaml- Docker Compose setup with PostgreSQL
Environment Setup
Copy .env.example to .env and configure:
- PostgreSQL connection settings
- Debug mode
- PYTHONPATH (for Docker)
The application will run database migrations automatically on startup through the FastAPI lifespan event.