Skip to content

Latest commit

 

History

History
52 lines (47 loc) · 1.98 KB

File metadata and controls

52 lines (47 loc) · 1.98 KB

Architecture

Tech stack

Layer Package
Framework Symfony 8 / PHP 8.5
ORM Doctrine ORM + Migrations
Web auth Symfony Security (form_login) + symfonycasts/verify-email-bundle + symfonycasts/reset-password-bundle
API auth lexik/jwt-authentication-bundle
API docs API Platform
Admin EasyAdmin 5
Scheduler Symfony Scheduler (Messenger transport)
Mail Symfony Mailer (SMTP → localhost:1025, Mailpit UI on localhost:8025)
Frontend Webpack Encore + Bootstrap 5 + Bootstrap Icons
Web server Caddy 2 + PHP-FPM (Unix socket)
Task runner mise
CI Dagger (TypeScript module in .dagger/)

Project structure

src/ExampleApp/         # PSR-4: ExampleApp\
├── Controller/
│   ├── Admin/          # EasyAdmin dashboard + CRUD
│   ├── Api/            # JWT-protected API endpoints
│   ├── Auth/           # Login, registration, verify email, reset password
│   ├── DashboardController.php
│   ├── HomeController.php
│   └── ProfileController.php
├── DataFixtures/       # Demo data
├── Entity/             # Doctrine entities (User, ResetPasswordRequest)
├── EventSubscriber/    # Email verification gate
├── Form/               # Symfony Form types
├── Repository/         # Doctrine repositories
├── Kernel.php
└── Schedule.php        # Symfony Scheduler provider (scheduler_default transport)
templates/
├── admin/
├── auth/               # Login, register, verify pending, reset password
├── dashboard/
├── emails/             # Transactional email templates
├── home/
└── profile/
tests/
├── Unit/               # Entity logic
└── Functional/         # Auth flows, dashboard, JWT API

Supporting directories: config/ (Symfony config), migrations/, assets/ + webpack.config.js (Encore), .mise/tasks/ (task runner), .devcontainer/ (Docker setup), .dagger/ (CI module).