# ExtensionFlow Architecture

ExtensionFlow uses CodeIgniter 4 with a service/repository architecture.

## Layers

- Controllers: HTTP workflows for auth, admin, public and API interfaces.
- Services: business logic for authentication, RBAC, releases, compatibility, changelogs, downloads, feeds, dashboard and audit logging.
- Repositories: query orchestration for extensions and releases.
- Models: CodeIgniter models with validation and field protection.
- Views: responsive Tailwind/DaisyUI templates for admin, auth and public pages.
- XML library: DOM-based Joomla update feed renderer.

## Data model

Compatibility is normalized through many-to-many pivot tables:

- `release_joomla_compatibilities`
- `release_php_compatibilities`
- `release_tags`

Release archive metadata is stored on `releases` and `release_download_artifacts`. Files are stored outside the web root under `writable/uploads/releases/<extension-alias>/<release-version>/` and delivered by controlled download routes.

## Branding

Product name: ExtensionFlow.  
Owner: Oleg Kosarev.  
Brand: OlegKosarevDevOpsSolution.

© Oleg Kosarev — OlegKosarevDevOpsSolution
