add claude code doc file

This commit is contained in:
Tobias Brunner 2025-07-22 08:22:31 +02:00
parent 626badffe9
commit 2981be12df
Signed by: tobru
SSH key fingerprint: SHA256:kOXg1R6c11XW3/Pt9dbLdQvOJGFAy+B2K6v6PtRWBGQ

108
CLAUDE.md Normal file
View file

@ -0,0 +1,108 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
This is a Django website for servala.com, built with Python 3.13+ using uv for dependency management. The project structure follows Django conventions with a main `hub` application containing multiple services.
## Development Commands
### Local Development Setup
```bash
cp .env.example .env
source .env
uv run --extra dev manage.py migrate
uv run --extra dev manage.py runserver
```
### Database Operations
```bash
uv run --extra dev manage.py migrate
uv run --extra dev manage.py makemigrations
uv run --extra dev manage.py createsuperuser
```
### Testing
```bash
# Run all tests
uv run --extra dev manage.py test
# Run specific pricing tests (comprehensive suite available)
./run_pricing_tests.sh
# Run specific test modules
uv run --extra dev manage.py test hub.services.tests.test_pricing --verbosity=2
uv run --extra dev manage.py test hub.services.tests.test_pricing_edge_cases --verbosity=2
uv run --extra dev manage.py test hub.services.tests.test_pricing_integration --verbosity=2
```
### Asset Management
```bash
uv run --extra dev manage.py build_assets
uv run --extra dev manage.py collectstatic
```
## Architecture Overview
### Core Django App Structure
- `hub/` - Main Django application
- `services/` - Core business logic with multiple domains:
- `models/` - Database models organized by domain (articles, pricing, providers, services, etc.)
- `views/` - View logic organized by feature
- `forms/` - Form classes for user input
- `admin/` - Django admin customizations
- `tests/` - Comprehensive test suite, especially for pricing logic
- `broker/` - Separate app for broker-related functionality
- `middleware.py` - Custom middleware
- `settings.py` - Django configuration using environs for environment variables
### Key Features
- **Pricing Engine**: Complex pricing calculations with multiple models (ComputePlan, StoragePlan, etc.)
- **Content Management**: Articles, services, providers with image library support
- **Lead Generation**: Contact forms and lead management
- **Partner System**: Cloud providers and consulting partners
- **Price Calculator**: Interactive frontend calculator with ROI calculations
### Frontend Assets
- Static files in `hub/services/static/`
- JavaScript organized by feature (price-calculator/, roi-calculator.js)
- CSS using Bootstrap 5 with custom styling
- Chart.js for data visualization
### Database
- Uses Django ORM with extensive migrations in `hub/services/migrations/`
- SQLite for development and production (`db.sqlite3`)
- Media files stored in `media/` with organized subdirectories
### Deployment
- Docker specific code is in the folder docker/
- Kubernetes deployment specific files in deployment/
- GitLab CI is used as the main CI/CD system
- Forgejo Actions is the secondary CI/CD system
## Development Notes
### Environment Configuration
- Uses `environs` library for environment variable management
- Requires `.env` file for local development (copy from `.env.example`)
- Key settings: `SECRET_KEY`, `DEBUG`, `ALLOWED_HOSTS`
### Testing Strategy
- Extensive pricing test suite with edge cases and integration tests
- Use `--keepdb` flag for faster test runs during development
- Dedicated test runner script for pricing functionality
### Asset Pipeline
- Django Compressor for CSS/JS optimization
- Static files collection required for production
- Custom management commands for asset building
### Image Management
- Comprehensive image library system with SVG support
- Organized media directories for different content types
- Custom template tags for image handling
### Django specifics
- Use function-based views and follow the Django conventions for naming and structuring views
- Templates use the Django template language