Code Conventions

This project follows specific conventions to ensure consistency and maintainability.

Python Style

  • Follow PEP 8 with Black formatter (line length 88)

  • Use type hints with mypy

  • Group imports in this order: 1. Standard library imports 2. Third-party imports 3. Django imports 4. Local app imports

  • Use verb phrases for methods, nouns for properties

  • Use descriptive variable names

  • Add docstrings to classes and complex functions

Models

  • Follow behavior mixin pattern

  • Use explicit related_name for relationships

  • DateTime fields end with _at (e.g., created_at)

  • Boolean fields start with is_, has_, or can_

  • Add docstrings to models and complex fields

  • Include appropriate Meta options for ordering, permissions

Views

  • Use appropriate class-based views

  • For HTMX components, extend HTMXView

  • For full pages, extend MainContentView

  • Add team context with TeamSessionMixin when needed

  • Return appropriate status codes

  • Handle errors explicitly

Templates

  • Use kebab-case for CSS classes

  • Use snake_case for template variables and ids

  • Structure templates with clear blocks

  • Include only what’s needed via {% include %}

  • Use partials for HTMX responses

JavaScript

  • Minimize JavaScript usage

  • Prefer HTMX attributes in HTML

  • Use HTML data attributes for configuration

  • Keep scripts in base.js when necessary

Testing

  • Name test classes with TestCase suffix

  • Name test methods with test_ prefix

  • Use factories for creating test objects

  • Mock external services

  • Use pytest fixtures for common setups