website/CLAUDE.md

113 lines
No EOL
4 KiB
Markdown

# 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/` - Modular price calculator components
- `roi-calculator/` - Modular ROI calculator with separate concerns (core, UI, charts, exports)
- 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
### Claude Code specific
- Use context7 to get up-to-date documentation about Bootstrap, Python and Django