Gemini CLI Agent
This page provides specific guidelines and context for the Gemini CLI agent when interacting with the django-starter-template project. For the full, up-to-date guidelines, please refer to the GEMINI.md file in the project root.
Project Overview
This project is a Django REST Framework API template designed for rapid development. It includes pre-configured setups for authentication, background tasks, API documentation, and structured logging.
Key Technologies and Conventions
- Framework: Django 5.x
- API Framework: Django REST Framework (DRF)
- Dependency Management: Poetry
- Always use
poetry run <command>for executing project-specific scripts or commands (e.g.,poetry run server,poetry run pytest). - Dependencies are defined in
pyproject.tomland managed bypoetry.lock.
- Always use
- Testing: Pytest
- Test files are typically located in
apps/<app_name>/tests/. - Run tests using
poetry run testorpoetry run pytest. - Code coverage can be generated with
poetry run test-cov.
- Test files are typically located in
- API Documentation: drf-spectacular
- OpenAPI 3 schema generation.
- Schema definitions are often centralized in
schema.pyfiles within apps (e.g.,apps/users/schema.py). - Use
@extend_schemadecorator for detailed API documentation.
- Documentation (MkDocs): MkDocs with Material theme.
- Documentation source files are in the
docs/directory. - The
mkdocs.ymlfile configures the documentation site. - When refactoring documentation, maintain the style and structure observed in
logging.md,tasks.md,rate_limiting.md,database_seeding.md,testing.md,environment_setup.md, andcopilot_prompts.md.
- Documentation source files are in the
- Environment Variables: Managed using
django-environ.- Configuration is loaded from
.envfiles. Refer to.env.examplefor required variables.
- Configuration is loaded from
- Asynchronous Tasks: Celery with Redis as broker and backend.
- Celery worker:
poetry run worker - Celery beat scheduler:
poetry run beat
- Celery worker:
- Logging: Structured JSON logging.
- Logs are typically written to the
logs/directory. - Request tracing is implemented via
RequestIDMiddleware.
- Logs are typically written to the
- Code Quality: Flake8 for linting.
- Configuration is in
.flake8.
- Configuration is in
- Development Environment: Designed for use with VS Code Dev Containers.
- Ensures a consistent and reproducible development setup.
General Instructions for Gemini
- Adhere to existing code style: When modifying or adding code, always match the surrounding code's formatting, naming conventions, and architectural patterns.
- Verify dependencies: Before suggesting or implementing new libraries, check
pyproject.tomlandpoetry.lockto see if they are already in use. If not, propose adding them via Poetry. - Prioritize existing solutions: Leverage existing project features (e.g.,
drf-spectacularfor API docs, Celery for background tasks) before introducing new tools or patterns. - Explain shell commands: For any
run_shell_commandthat modifies the file system or project state, provide a brief explanation of its purpose and potential impact. - Testing: If a change involves logic, consider if new or updated tests are appropriate. Use
poetry run testto verify changes. - Documentation: If new features or significant changes are introduced, update the relevant documentation in the
docs/directory, following the established style.