86 lines
2.6 KiB
Markdown
86 lines
2.6 KiB
Markdown
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# Run tests
|
|
pytest
|
|
|
|
# Run specific test file
|
|
pytest tests/test_core/test_obsidian_parser.py
|
|
|
|
# Run tests with coverage
|
|
pytest --cov=app
|
|
```
|
|
|
|
### Type Checking
|
|
```bash
|
|
# 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 format
|
|
- `AppleNotesParser` - 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 session
|
|
- `Exercise` - individual exercise with multiple approaches
|
|
- `Approach` - 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 management
|
|
- `app/config.py` - Application configuration and database settings
|
|
- `run.py` - Development server entry point
|
|
- `migrations/runner.py` - Custom database migration system
|
|
- `compose.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.
|