CHANGELOG¶
Overview of the Edu Framework releases
v2.12.0 - 07/11/2026¶
features
- #197 New
php bin/edu routes:listcommand: lists the routes ofapp/Config/routes.yaml(method, URI, controller, name), one row per HTTP method; the--methodoption filters on one HTTP method
maintenance
- Routing:
studoo/edu-routeis upgraded to^1.1(list of declared routes). The route name (key ofroutes.yaml) is now passed to the routing engine;FastRouteCore::addRoute()takes an optional fourth$nameparameter andFastRouteCore::declaredRoutes()returns the declared routes
documentation
- update The bin/edu command:
routes:listcommand
v2.11.0 - 06/11/2026¶
maintenance
- #187 Routing: the framework uses
studoo/edu-route(^1.0), a fork ofnikic/fast-routemodernised for PHP 8.4 (no version ofnikic/fast-routehas been released since 1.3.0 in 2018). No change for applications: the format ofapp/Config/routes.yaml, the URI syntax (/user/{id:\d+}[/{name}]), the HTTP methods (case is preserved: a[get]route does not respond to aGETrequest), the 404 and 405 pages, the route variables ($request->get('id')) andgetNameToPath()work as before - Dependencies:
studoo/edu-routereplacesnikic/fast-routeand addspsr/http-messageandpsr/simple-cache; it supports PHP 8.4 and 8.5 - Code that uses the routing engine directly:
FastRouteCore::getDispatcher()returns aStudoo\EduRoute\Dispatcher(instead ofFastRoute\Dispatcher); itsdispatch()returns aMatched,MethodNotAllowedorNotMatchedobject (propertieshandler,variables,allowedMethods) instead of an array: accessing$result[0]still works but is deprecated, useinstanceof- an invalid route (duplicate route, repeated parameter, capturing group) throws
Studoo\EduRoute\BadRouteExceptioninstead ofFastRoute\BadRouteException, with the same message;Route::getNameToPath()also throws it for an invalid URI. It is different fromStudoo\EduFramework\Core\Exception\BadRouteException(unknown route, missing parameter), which does not change
bug Fixes
routes.yaml: a badly described route (missinguri,controllerorhttpMethodkey, a list instead of a string) throws anErrorConfigExceptionthat names the route (La route <hello> du fichier routes.yaml est invalide : la clé 'controller' est absente…, displayed indevmode) instead of a PHP errorroutes.yaml: an empty value (~or a lone dash) in thehttpMethodlist no longer emits a deprecation warning under PHP 8.5
documentation
- update Building a page: the three keys of a route
v2.10.1 - 06/11/2026¶
bug Fixes
base.html.twigtemplate (application and the framework's internal template): the block was calledtitrewhereas pages define{% block title %}, so the<title>tag stayed empty. The block is renamedtitle(same fix instudoo/edu-framework-skeleton)
maintenance
- Tests: added example tests for the application controllers (
tests/App/Controller) and updated the HTML fingerprints inFastRouteCoreTest
documentation
- new Testing your application (unit tests): approach, installing and configuring PHPUnit, testing an entity, a repository on an SQLite test database and a controller, DataProvider, common errors and exercises
- update The directory structure:
testsfolder andphpunit.xmlfile
v2.10.0 - 06/11/2026¶
new features
- Profiler: the request details page displays the GET, POST and session variables as tables.
HttpRequestLoggerrecords$_GETand$_POSTat the start of the request and$_SESSIONat the end of the request (get,postandsessionkeys of the log). Sensitive variables (name containingpass,pwd,secret,mot_de_passeormdp) are masked, and objects in the session are recorded with all their properties and a__classkey - Logs view: the GET / POST / session variables of the context are displayed as JSON
bug Fixes
- #174 Symfony dependencies:
symfony/yaml,symfony/console,symfony/filesystemandsymfony/processmove to stable 7.4 LTS (^7.4) instead ofx-devbranches.composer.jsonenablesprefer-stableso that development branches are no longer resolved when a stable version exists bin/educonsole:Application::add(), deprecated in Symfony 7.4, is replaced byaddCommand()- Profiler: an error while recording the session can no longer make the request fail
maintenance
- Tests: migration from PHPUnit 9 to PHPUnit 13 (
phpunit/phpunit: ^13) and ofphpunit.xmlto the 13.4 schema (the<coverage><include>section becomes<source><include>) - Tests:
HttpErrorControllerTestresets the HTTP response code to 200 after each test, so that it no longer skewsHttpRequestLoggerTestdepending on the execution order
documentation
- update The debug bar and the profiler: description of the
get,postandsessionkeys of a request log
v2.9.1 - 05/11/2026¶
bug Fixes
- Fixed the symfony/filesystem[7.2.x-dev] package
v2.9.0 - 21/10/2026¶
new features
- Profiler: built-in flamegraph in the Code tab, with no file to download. Three views are added to the function table: Flamegraph (grouped calls, most expensive on the left,
#code/{token}/flame), Chronologique (time order: order of calls with a time axis,#code/{token}/time) and Comparer (compare: differential flamegraph of two profiled requests, slower parts in red and faster parts in blue,#code/{token}/diff/{autre}). Colours indicate where the code comes from (app/framework/vendor). You can zoom with a click, go back up via the call path or with Esc, search for a function (with the total time found), and display a tooltip and the function details, with a link to its callers and callees. Calls under 0.1% are grouped into « … (autres) » (others) - Debug bar: mini-flamegraph in the Code block panel; a click opens it full size in the profiler
GET /edu-code-profileendpoint: newformat=flamewith the parametersorder(heavy/time),compare(reference token),min(pruning) anddepth(depth); new methodsCodeProfileAggregator::flameTree()andCodeProfileAggregator::diffTree()- Deployment to a Debian / Ubuntu server with FrankenDeploy: new
php bin/edu make:deploycommand that generates thefrankendeploy.yamlfile (options--domain,--name,--database=mariadb|mysql|sqlite|none,--force) with the folders shared between deployments (.env.local,var/logs,var/sessions,var/sqlite,public/upload) - Multi-stage
Dockerfile:frankenphp_base(common base),frankenphp_prod(production image: HTTP on port 8080, non-root userapp,php.ini-production, OPcache without revalidation, sessions invar/sessions, without Excimer or dev dependencies, healthcheck) andfrankenphp_dev(development image, explicitly targeted bycompose.yaml). Newdocker-entrypoint.shscript that waits for the database before starting FrankenPHP - Environment variables: new
ConfigCore::loadEnv()method used by the application and bybin/edu. The.envand.env.localfiles are optional (.env.localtakes precedence over.env), process environment variables (Docker) take precedence and are read byConfigCore::getEnv()/existEnv()even whenvariables_orderdoes not containE(the case withphp.ini-production). IfDATABASE_URLis defined (mysql://user:pass@host:3306/db), missingDB_*variables are derived from it; a malformed MySQL / MariaDB / PostgreSQLDATABASE_URL(Example: password containing an unencoded#) throws an explicitErrorConfigException
bug Fixes
ConfigCore::getEnv()no longer raises a warning for a missing variable (returns an empty string)bin/edustarts without a.envfile- Tests:
APP_ENVinherited from the shell or from the development container no longer affects the tests (tests/bootstrap.php)
documentation
- update The debug bar and the profiler: new sections "The built-in flamegraph" and "Comparing two requests" (with screenshots), debug bar mini-flamegraph, API parameters
format=flame,order,compare,minanddepth - new Migrating from version 2.8 to version 2.9: updating the framework, Docker files (multi-stage
Dockerfile,docker-entrypoint.sh,.dockerignore,targetincompose.yaml),.gitignore(.env.local,composer.lock),.gitattributesfor shell scripts, changes to how environment variables are loaded - new Deploying your application: server preparation,
make:deploy, environment variables, deployment, database import, shared folders, everyday commands, production image - update The bin/edu command:
make:deploycommand - update The application in Docker: link to the production image
v2.8.0 - 20/10/2026¶
new features
- Code profiler in the debug bar: the time spent in each PHP function of an HTTP request is measured by the Excimer extension (sampling profiler every 0.1 ms, compatible with FrankenPHP in classic and worker mode). Profiling is on demand (
EDU_PROFILER=triggerby default): the new Code block of the debug bar sets theedu_profile=1cookie (or the?_profile=1parameter) and stays active until you click Désactiver (Disable);EDU_PROFILER=onprofiles every request,offdisables the profiler. The profile is attached to the request token and stored compressed in theserv_code_profilestable (EDU_PROFILER_KEEPprofiles kept, 50 by default). The block shows the profiled time and the top 3 functions; the profiler's new Code tab (/_debug/profiler#code/{token}) lists all functions (self / inclusive time, filter by originapp/framework/vendor), their callers and callees, and exports the profile in Speedscope format for a flamegraph. New internal endpointGET /edu-code-profile(dev mode only). The Docker image installs Excimer (build argumentEDU_PROFILER,EDU_PROFILER_BUILD=0to exclude it) andphp bin/edu check:configreports the extension as recommended - Profiler: the summary section of a request now only shows the URL; the detailed information (method, HTTP status, IP, SAPI, duration, memory, date, token) has been removed from the header to lighten the display
documentation
- new Features: all the framework's features grouped by learning topic, with the concept practised and its Symfony equivalent
- new Migrating from version 2.3 to version 2.8: migration steps (backup and switch from MySQL to MariaDB, error templates, Twig cache,
.envvariables, Docker files), changes and new features in versions 2.4 to 2.8 - update The debug bar and the profiler: new section "The code profiler" (installation, modes, reading the profile with screenshots, reading the flamegraph with Speedscope, API)
- update Installing with Docker: environment variables
EDU_PROFILER,EDU_PROFILER_KEEPandEDU_PROFILER_BUILD - update Prerequisites: installing the optional
excimerextension outside Docker
v2.7.3 - 17/10/2026¶
new features
- Profiler: the Search view (
/_debug/profiler#search) gets the same status-family filter tabs as the logs view —Tous / 2xx / 3xx / 4xx / 5xx(All / 2xx / ...), with the number of requests per family as a badge. A click filters the results by the selected family (theToustab shows all requests), the active tab is highlighted and the Statut (Status) field of the search form is kept in sync; the counters come from the/edu-logsAPI (computed server-side, they cover all requests matching the other filters) and remain independent of the status filter, as in the logs view
bug Fixes
- Debug bar: fixed the alignment of columns containing links (DbGate, phpMyAdmin, Mailpit) in the panel
documentation
- update The debug bar and the profiler: status-family filter tabs documented for the Logs and Search views (click to filter, active tab, syncing of the form's Status field)
v2.7.2 - 17/10/2026¶
bug Fixes
- Debug bar: final fix for the alignment of the close button on the right (flex styles, height and alignment)
v2.7.1 - 17/10/2026¶
bug Fixes
- Debug bar: fixed the offset of the close button on the right, improved CSS isolation for buttons
v2.7.0 - 17/10/2026¶
new features
- Debug bar: the DEV block lists the development services with their clickable URLs (HTTP/HTTPS application, MariaDB, Mailpit and its SMTP, DbGate, phpMyAdmin) — ports read from the
.env(defaults fromcompose.yaml), variables passed to thefrankenphpcontainer - Running the application in Docker via FrankenPHP: new
frankenphpweb service incompose.yaml(PHP 8.4, HTTPS and HTTP/3),Dockerfilewith the extensions required by the framework,Caddyfiledriven bySERVER_NAME,.envvariables passed to the container (network overridesDB_HOST,DB_SOCKET,MAILER_DSN), containers prefixed withAPP_NAME, ports andSERVER_NAMEconfigurable in the.env(local HTTPS mode:SERVER_NAME=localhost), MariaDB healthcheck — the classicphp bin/edu startworkflow is unchanged
bug Fixes
- Profiler: requests served by FrankenPHP were not recorded in the log database — only the built-in PHP server (
php bin/edu start) filled it, without any per-request performance indicator. The newHttpRequestLoggerclass now logs every request handled by the framework, whatever the SAPI (built-in server, FrankenPHP, FPM, ...), with the originating server (sapi, displayed and filterable in the profiler via the SAPI field and thesapiparameter of the/edu-logsAPI), the execution time (execution_time_ms) and the memory used (memory_mb) per request, measured in the same way as the debug bar. Like the Symfony profiler, the line is reserved at the start of the request and then completed at the end: the DevTool block of the debug bar displays the request token and links to the new request details page (#request/{token}: status, method, URL, IP, SAPI, duration, memory, raw line). Thephp bin/edu startcommand no longer writes to the database (console display only): only requests executed by PHP are logged (static files served directly by the web server are excluded), and the database shared between servers is protected against locks (PRAGMA busy_timeout). The profiler's pagination bar is removed: navigation is done through the filters, the « Résultats » (Results) selector and the « 10 derniers » (Last 10) / « Dernier » (Latest) shortcuts (the API'spageparameter is still supported)
documentation
- new The application in Docker: architecture, start/stop, environment variables, ports and running several projects side by side, local HTTPS mode (self-signed certificate,
https://127.0.0.1limitation), checking prerequisites in the container, troubleshooting - update Starting the services: MySQL becomes MariaDB, FrankenPHP service in the ports table, commands per version, link fixes
- update The debug bar and the profiler: collection of all requests by
HttpRequestLoggerwhatever the server (sapikey, execution time and memory per request), request token in the DevTool block, new request details page (#request/{token}), profiler available on both servers (http://localhost:8042/_debug/profilerandhttps://localhost/_debug/profiler), limitations (static files not logged, Docker network IP, FrankenPHP worker mode); list of development services (clickable URLs) in the DEV block
v2.6.3 - 15/10/2026¶
bug Fixes
- Updated
zircote/swagger-php(4.x-dev → 5.8.*): the library was not compatible with PHP 8.4 and above — thevendor/bin/openapicommand displayed the errorConstant E_STRICT is deprecatedand produced an incomplete file
documentation
- update Building an API: removed the workaround note (
generate-openapi.phpscript), thevendor/bin/openapicommand works again with PHP 8.4 and above
v2.6.2 - 15/10/2026¶
documentation
- new Mermaid support in the documentation: diagrams automatically adapt to the light/dark theme and are only loaded on pages that contain them
- update Protecting a form (CSRF): the ASCII diagram becomes a Mermaid sequence diagram
- new What is MVC?: flowchart of a request's lifecycle with the actual classes (FastRouteCore, Controller, Repository, TwigCore)
- update How do I create a controller?: the static diagram is replaced by a flowchart of HelloController's lifecycle
- new Building the CRUD: class diagram of VilleController / VilleRepository / Ville / DatabaseService
- new HTTP errors: flowchart of the error pipeline with the dev/production branches
- update How do I create a form?: sequence diagram of the PRG (Post/Redirect/Get) pattern
- new DatabaseService: data management: class diagram of the connection (mysql, mariadb, sqlite adapters)
- new The debug bar and the profiler: flowchart of the flow from the logs to the profiler
- new Route: generating a URL from a route name: flowchart of URL generation and of the BadRouteException
v2.6.1 - 15/10/2026¶
new features
- Migration from MkDocs to ProperDocs, the maintained fork of MkDocs 1.x — MkDocs has not been maintained since August 2024 and its repository is closed to outside contributions. ProperDocs is a drop-in replacement: the Material theme and all plugins remain unchanged, the configuration becomes
properdocs.ymland themkdocs build/mkdocs servecommands becomeproperdocs build/properdocs serve
bug Fixes
- Social cards (og:image) are generated again: the social plugin's logo is resolved through the theme logo (prefixed with the documentation folder)
documentation
- new "VILLE" use case: STEP 1 and Refactoring: added to the navigation (content removed since)
- update Contributing to the docs: installing and running with ProperDocs
- removed the obsolete
dataservice-insert.mdpage (content merged into Building the CRUD)
v2.6.0 - 14/10/2026¶
new features
- New
CsrfServiceservice to protect forms against CSRF (Cross-Site Request Forgery) attacks using the "Synchronizer Token" pattern: random token (CSPRNG) scoped by route name, comparison protected against timing attacks (hash_equals), token rotation after each successful validation. New Twig functioncsrf_token('nom_route')to generate the form's hidden field andRequest::isCsrfTokenValid('nom_route')method for validation in the controller (the token can also be sent in theX-CSRF-TOKENHTTP header for AJAX calls). Application demo on the/medecin/importroute and full documentation in docs/build/csrf.md
v2.5.0 - 08/10/2026¶
new features
- #149 New
php bin/edu make:entitycommand: generates the entity (app/Entity) and its repository (app/Repository) — interactive mode or--fieldsoption, typed camelCase fluent getters and setters, hydration with casts in the repository @bfoujols - #150 The framework's identity settings (name, version, date_version, php_version) can be customised via the
eduframe.ymlfile at the root of the framework (read fromvendor/in projects) — no more need to editConfigCore.php, explicitErrorConfigExceptionif the file is invalid @bfoujols - #76 Styled HTTP error pages (404, 405, 403, 500): standalone, styled templates in
app/Template/error/, newHttpError403Controller, theErrorHttpStatusExceptionclass lets you raise an HTTP error from a controller (Example: 403 forbidden), any unhandled exception displays the 500 page with the exception message in development mode (hidden in production). Thehttp-Default.html.twigtemplate becomeshttp-500.html.twig. The framework name is no longer displayed on error pages (title and footer) @bfoujols
bug Fixes
- #76 Fixed the debug bar display: global styles of the host page (e.g.
a { margin-top: 1.5rem; }) no longer break the alignment of the bar's blocks — CSS reset on the toolbar links, which is now immune to the application's stylesheets @bfoujols
documentation
- new The make:entity command: generating an entity and its repository
- update Building the CRUD: note on generating the files with
make:entity - update Installation: the framework settings (eduframe.yml)
- new HTTP errors: 403/404/405/500 pages, customisation,
ErrorHttpStatusException
Release notes for v2.5.0
v2.4.0 - 08/10/2026¶
new features
- #147 A controller can now handle several routes through several methods: the
controllerkey of the "app/Config/routes.yaml" file accepts theController\VilleController::indexsyntax. Without an explicit method, theexecute()method is called as before (100% backward compatible) @bfoujols - The called method is validated by the framework (public, non-static, Request-typed parameter, string|null return type) and throws an
ErrorControllerExceptionwith an explicit message in case of error @bfoujols - #75 Handling of uploaded files (
$_FILES) inRequest: automatic normalisation of the structure (single field and multi-file),hasFile(),getFile(),getFiles(),isValid(),getExtension()andmove()methods, application demo/medecin/import@bfoujols - #64 TWIG cache enabled: compiled templates are stored in
var/cache/twig(newcache_pathconfiguration key), modified templates are recompiled automatically (auto_reload) @bfoujols - #65 New
php bin/edu cache:clearcommand to delete the application cache (var/cachefolder) @bfoujols
bug Fixes
- #86 The routes configuration file is checked before being read: an
ErrorRouteConfigNotExistExceptionwith an explicit message (expected path,route_config_pathconfiguration, case sensitivity on Linux) replaces the Yaml component's fatal error when "routes.yaml" cannot be found @bfoujols
documentation
- new One controller, several routes: the
Controller\Class::methodsyntax in the routes file - new File handling (upload): uploading files in Request
- update The bin/edu command:
cache:clearcommand - update Installation: error on the routes file and case sensitivity on Linux
- update Route: note on the
Controller\Class::methodsyntax
Release notes for v2.4.0
v2.3.2 - 05/10/2026¶
new features
- Add documentation for building APIs and CRUD operations @bfoujols
bug Fixes
- #143 Update the sqlite and log paths to use relative paths @bfoujols
- fix: update the PHP version check to 8.4 and adjust the error messages @bfoujols
- test: replace sha1 with hash('sha256', ...) in FastRouteCoreTest @bfoujols
Release notes for v2.3.2
https://github.com/studoo-app/edu-framework/milestone/v2.3.2
v2.3.1 - 05/10/2026¶
bug Fixes
- #143 Update the sqlite and log paths to use relative paths @bfoujols
Release notes for v2.3.1
https://github.com/studoo-app/edu-framework/milestone/v2.3.1
v2.3.0 - 05/10/2026¶
new features
- #136 Implement SQLite logging service for server request logs @bfoujols
- #136 Add BufferFormat and BufferToServer classes for log formatting @bfoujols
- #136 Add logs navigation in the debug bar @bfoujols
- #136 Replace in-bar logs panel with a Symfony-style profiler page @bfoujols
- #136 Enhance filtering capabilities and add status family counting @bfoujols
- #69 Add custom listening socket (#69) Thanks @CapelleGab
- #122 Add Manage DB by dbgate @bfoujols
- #120 Add MailPit Service @bfoujols
- #97 Add slash command @bfoujols
- Update PHP minimum version 8.2 -> 8.4 (composer, bin/edu, CI, doc) @bfoujols
- Update dependencies (vlucas/phpdotenv v5.7, nette/php-generator, zircote/swagger-php, symfony/yaml 6.3 -> 6.4) @bfoujols
bug Fixes
- #136 Make SQLite logging non-blocking and resilient @bfoujols
- #136 Send proper HTTP status codes from error controllers @bfoujols
- #136 Gate debug routes on SQLite availability to prevent PDOException @bfoujols
- #136 Buffer stream chunks into complete lines to preserve adjacent request logs @bfoujols
- #130 github action E: Package 'netcat' has no installation candidate @bfoujols
- #129 run command taskfile before-commit @bfoujols
- Fix CI failure on profiler page and logs endpoint @bfoujols
- Fix CI failure on debug toolbar (missing semicolon) and deprecated dynamic property @bfoujols
- Fix debug toolbar always showing an empty controller instead of "aucun" (Request::hasHander always true) @bfoujols
- Fix PHP 8.5 deprecation (PDO::MYSQL_ATTR_INIT_COMMAND -> PDO\MYSQL::ATTR_INIT_COMMAND) @bfoujols
- Fix FastRouteCoreTest failures caused by APP_ENV state leaking between tests @bfoujols
- Fix security advisories on symfony/yaml (CVE-2026-45304, CVE-2026-45305, CVE-2026-45133) @bfoujols
documentation
- new Migrating from version 2.2 to version 2.3
- new The debug bar and the profiler
- update Start/Stop the application: options of the
startcommand - update How to install the services: MailPit and dbgate
- update Before you start:
pdo_sqliteextension and PHP 8.4 minimum - update The project directory structure: fix to the
compose.yamlfile
Release notes for v2.3.0
https://github.com/studoo-app/edu-framework/milestone/v2.3.0
v2.2.1 - 23/08/2024¶
new features
- #119 add Request::getBody() @bfoujols
bug Fixes
- #117 Fix class not use in API controller @bfoujols
- Fix Doc install pip package
Release notes for v2.2.1
v2.2.0 - 08/08/2024¶
new features
- #112 Implement OpenAPI @bfoujols
bug Fixes
Release notes for v2.2.0
v2.1.0 - 20/06/2024¶
new features
- #87 Rebuild a URL from a route name with getNameToPath()
- #39 SQLite support
- #105 New documentation https://studoo-app.github.io/edu-framework
- #86 Implement codeSpace by GitHub
bug Fixes
- #96 Problem installing phpunit 11 @pbentura @RaphaelBensoussan
- #92 Unit test problem on FastRouteCore
Release notes for v2.1.0
https://github.com/studoo-app/edu-framework/milestone/v2.1.0
v2.0.2 - 24/05/2024¶
bug Fixes
- #94 fix patch root by @bfoujols in https://github.com/studoo-app/edu-framework/pull/95
Release notes for v2.0.2
https://github.com/studoo-app/edu-framework/milestone/v2.0.2
v2.0.1 - 15/05/2024¶
bug Fixes
- #88 Fixed the problem with DatabaseService on the command line
Release notes for v2.0.1
https://github.com/studoo-app/edu-framework/milestone/v2.0.1
v2.0.0 - 06/04/2024¶
new features
- #73 added the
php bin/edu make:apicommand to generate an API controller - #70 added the
php bin/edu make:commandcommand to generate a console command - #59 added a default page on the route
deprecations
bug Fixes
documentation
- New interface and organisation by chapter
- new Request: handling HTTP requests
- update How to install EduFrame: New installation per version
- update How to install the services: Docker refactoring
- update Directory structure: New v2.0 structure
- update How to create a controller: More detail
- update How to handle a POST in a controller: More detail
Release notes for v2.0.0
https://github.com/studoo-app/edu-framework/milestone/v2.0.0
v1.2.0 - 25/03/2024¶
new features
- #66 added the
php bin/edu startcommand to start the development server - #62 added the
php bin/edu check:configcommand to check the framework configuration - #26 Implement PHPDebugBar
bug fixes
- #81 Problem retrieving dynamic variables passed in the route via {}
Release notes for v1.2.0
https://github.com/studoo-app/edu-framework/milestone/v1.2.0
v1.1.0 - 03/2024¶
Beta version of the debug bar with the following features:
- Debug bar in beta in the development environment
- Docker overhaul for installing the services
- Minor bug fixes
- Docker: fix for the network of the Mydql and PhpMyAdmin services
v1.0.0 - 2024¶
Final version of the framework with the following features:
- Controller creation via the
php bin/edu make:controllercommand
v0.6.0 - 2023¶
Stable version of the framework with the following features:
- Controller creation
- Template creation
- Route creation
- Database setup
v0.5.0 - 2023¶
Development versions of the framework with the following features:
- Setup and design of the framework architecture (MVC)
- several POCs of the MVC layers
- Unit tests
- Setup of the framework documentation (Writerside)
- Framework configuration management (DotEnv)
- Dependency management (Composer)
- Service management (Docker)
v0.1.0 - 2022¶
Start of the Edu Framework project