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.yml is the minimum. Dev/prod overrides are optional.
  • product:up picks docker-compose.{env}.yml first, falls back to docker-compose.yml.
  • product:build copies Dockerfiles and supporting files to docker/features/ in the product.
  • Port variables use the _HOST_PORT suffix 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


Back to top

splent. Distributed by an LGPL license v3. Contact us: drorganvidez@us.es