Directory structure
The complete file tree of a full feature, plus Docker infrastructure and where features live on disk.
Table of contents
Full feature tree
splent_feature_auth/
├── pyproject.toml # Package metadata + feature contract
├── MANIFEST.in # Files to include in distribution
├── .gitignore
│
├── src/
│ └── splent_io/
│ └── splent_feature_auth/
│ ├── __init__.py # Blueprint + init_feature() + inject_context_vars()
│ ├── config.py # inject_config(app) — env vars → app.config
│ ├── commands.py # CLI commands for `splent feature:<name>`
│ ├── models.py # SQLAlchemy models
│ ├── repositories.py # Data access (BaseRepository)
│ ├── services.py # Business logic (BaseService)
│ ├── routes.py # Flask routes
│ ├── forms.py # WTForms
│ ├── decorators.py # Feature-specific decorators
│ ├── hooks.py # Template hook registrations
│ ├── seeders.py # Database seeder (BaseSeeder)
│ ├── signals.py # Signal handlers
│ │
│ ├── translations/ # i18n (.po/.mo per locale)
│ ├── templates/ # Jinja2 templates
│ │ ├── auth/ # Namespaced by blueprint
│ │ └── hooks/ # Hook fragments
│ ├── assets/ # Frontend (js/, css/, dist/)
│ ├── migrations/ # Per-feature Alembic
│ └── tests/ # Layered tests
│ ├── unit/
│ ├── integration/
│ ├── functional/
│ ├── e2e/
│ └── load/
│
└── docker/ # Optional: Docker services
├── docker-compose.yml
├── docker-compose.dev.yml
├── docker-compose.prod.yml
├── Dockerfile.prod # Optional: custom prod image
└── .env.example
Docker infrastructure
Features that require external services ship their own Docker infrastructure:
splent_feature_nginx/
└── docker/
├── docker-compose.dev.yml # Dev: bind mount for live config editing
├── docker-compose.prod.yml # Prod: builds custom image with baked config
├── Dockerfile.prod # Copies templates into the image
├── .env.example # Ports, upstream host, server name
└── nginx/
└── templates/
├── default.dev.conf.template
└── default.prod.conf.template
docker-compose.ymlis the minimum. Dev/prod overrides are optional.product:uppicksdocker-compose.{env}.ymlfirst, falls back todocker-compose.yml.product:buildcopies Dockerfiles and supporting files todocker/features/in the product.- Port variables use the
_HOST_PORTsuffix for automatic port offset.
Where features live
| Mode | Location | Permissions |
|---|---|---|
| Editable | Workspace root (/workspace/splent_feature_auth/) |
Read-write |
| Pinned | Cache (.splent_cache/features/splent_io/splent_feature_auth@v1.5.8/) |
Read-only |
Products reference features through relative symlinks in {product}/features/{org}/.
See also
- Key files — what each file does
- Archetypes — which files each type needs