Skip to content

Commit

Permalink
Merge pull request #90 from studoo-app/2.0.1
Browse files Browse the repository at this point in the history
Release v2.0.1 > Branch v2.1
  • Loading branch information
bfoujols authored May 13, 2024
2 parents 2207f11 + ed986b3 commit aff4713
Show file tree
Hide file tree
Showing 17 changed files with 304 additions and 36 deletions.
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ DB_SOCKET=3306
## Nom de l'utilisateur de la base de données
DB_USER=root
## Mot de passe de l'utilisateur de la base de données
DB_PASSWORD=root
DB_PASSWORD=studoo
## Nom de la base de données
DB_NAME=app_db
## >> Config Database
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ jobs:
image: mysql:8.0
env:
MYSQL_DATABASE: app_db
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
MYSQL_ROOT_PASSWORD: studoo
#MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
ports:
- 3306:3306
strategy:
Expand Down Expand Up @@ -66,7 +67,7 @@ jobs:
run: sleep 15

- name: Generate SQL
run: mysql -h 127.0.0.1 -u root app_db < tests/Config/EtudiantApp.sql
run: mysql -h 127.0.0.1 -u root -p${{secrets.MYSQL_PWD}} app_db < tests/Config/EtudiantApp.sql

- name: Install dependencies
run: composer self-update && composer install && composer dump-autoload
Expand Down
104 changes: 104 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
# Changelog

**Présentation des versions du framework Edu Framework**

## v2.1.0 (en cours de dev)

### new features
- [#87](https://github.com/studoo-app/edu-framework/issues/87) À partir du nom d'une route, reconstruire URL getNameToPath()

<br>

> Release notes for v2.1.0 \
> [https://github.com/studoo-app/edu-framework/milestone/v2.1.0](https://github.com/studoo-app/edu-framework/milestone/12)
<br>

## v2.0.1 (en cours de dev)

### bug Fixes
- [#88](https://github.com/studoo-app/edu-framework/issues/88) Correction sur le probleme avec DatabaseService dans la ligne de command

<br>

> Release notes for v2.0.1 \
> [https://github.com/studoo-app/edu-framework/milestone/v2.0.1](https://github.com/studoo-app/edu-framework/milestone/14)
<br>

## v2.0.0 - 06/04/2024

### new features
- [#73](https://github.com/studoo-app/edu-framework/issues/73) ajout de la commande `php bin/edu make:api` pour générer un controller de type API
- [#70](https://github.com/studoo-app/edu-framework/issues/70) ajout de la commande `php bin/edu make:command` pour générer une commande console
- [#59](https://github.com/studoo-app/edu-framework/issues/59) ajout d'une page par défaut sur la route

### deprecations
- [#68](https://github.com/studoo-app/edu-framework/issues/68) Suppression des anciennes configurations Docker
- [#72](https://github.com/studoo-app/edu-framework/issues/72) Bootstrap 5.3 Clean

### bug Fixes
- [#83](https://github.com/studoo-app/edu-framework/issues/83) Docker compose.yaml: version is obsolete
- [#78](https://github.com/studoo-app/edu-framework/issues/78) Barre de debug dans les pages d'erreur

### Documentation
- Nouvelle interface et organisation par chapitre
- new [Request : La gestion des requêtes HTTP](https://studoo-app.github.io/edu-framework-doc/fr-resquet.html)
- update [Comment installer EduFrame](https://studoo-app.github.io/edu-framework-doc/fr-comment-installer-edu.html#cr-ation-du-projet) : Nouvelle installation par version
- update [Comment installer les services](https://studoo-app.github.io/edu-framework-doc/fr-comment-installer-services.html) : Refactoring Docker
- update [Arborescence](https://studoo-app.github.io/edu-framework-doc/fr-arborescence.html) : Nouvelle arbo v2.0
- update [Comment faire un controller](https://studoo-app.github.io/edu-framework-doc/fr-controller-edu.html) : Plus de detail
- update [Comment faire un post dans un controller](https://studoo-app.github.io/edu-framework-doc/fr-controller-post-edu.html) : Plus de detail

<br>

> Release notes for v2.0.0 \
> [https://github.com/studoo-app/edu-framework/milestone/v2.0.0](https://github.com/studoo-app/edu-framework/milestone/11?closed=1)
<br>

# v1.2.0 - 25/03/2024

## new features
- [#66](https://github.com/studoo-app/edu-framework/issues/66) ajout de la commande `php bin/edu start` pour démarrer le serveur de développement
- [#62](https://github.com/studoo-app/edu-framework/issues/62) ajout de la commande `php bin/edu check:config` pour vérifier la configuration du framework
- [#26](https://github.com/studoo-app/edu-framework/issues/26) Implement PHPDebugBar

## bug fixes

- [#81](https://github.com/studoo-app/edu-framework/issues/81) Probleme de récupération des variables dynamiques passées dans la route via {}

<br>

> Release notes for v1.2.0 \
> [https://github.com/studoo-app/edu-framework/milestone/v1.2.0](https://github.com/studoo-app/edu-framework/milestone/11?closed=1)
<br>

## v1.1 (03/2024)
Version beta de la bar de debug avec les fonctionnalités suivantes :
- Mise en place de la bar de debug en beta sur environnement de développement
- Refonte de docker pour l'installation des services
- Correction de bugs mineurs
- Docker : correction sur le reseau des services Mydql et PhpMyAdmin

## v1.0 (2024)
Version définitive du framework avec les fonctionnalités suivantes :
- Création de controller via la commande `php bin/edu make:controller`

## v0.6 (2023)
Version stable du framework avec les fonctionnalités suivantes :
- Création de controller
- Création de template
- Création de route
- Mise en place de la base de données

## v0.1 à v0.5 (2022-2023)
Versions de développement du framework avec les fonctionnalités suivantes :
- Mise en place et conception de l'architecture du framework (MVC)
- plusieurs POC des couches du MVC
- Tests unitaires
- Mise en place de la documentation du framework (Writerside)
- Gestion de la configuration du framework (DotEnv)
- Gestion de dépendances (Composer)
- Gestion des services (Docker)
2 changes: 1 addition & 1 deletion CODE_DE_CONDUITE.md → CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,6 @@ Les comportements inacceptables peuvent entraîner :
Signaler un comportement inacceptable
-------------------------------------

Si vous êtes témoin ou victime d'un comportement inacceptable, veuillez contacter les responsables du projet dès que possible. Vous pouvez contacter les responsables du projet par e-mail à Benoit.Foujols@ac-creteil.fr . Tous les rapports seront traités avec sérieux et confidentialité.
Si vous êtes témoin ou victime d'un comportement inacceptable, veuillez contacter les responsables du projet dès que possible. Vous pouvez contacter les responsables du projet par e-mail à Benoit.Foujols[a]ac-creteil.fr . Tous les rapports seront traités avec sérieux et confidentialité.

Nous sommes engagés à faire respecter ce Code de conduite et à créer un environnement accueillant et inclusif pour tous les contributeurs. Merci de votre aide pour faire de notre projet un espace sûr et respectueux pour tous.
33 changes: 23 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
![separe](https://github.com/studoo-app/.github/blob/main/profile/studoo-banner-logo.png)
![separe](https://raw.githubusercontent.com/studoo-app/.github/main/profile/studoo-banner-logo.png)
# Edu Framework
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/a15f20cbdf2743618efe54e2db39f605)](https://app.codacy.com/gh/studoo-app/edu-framework/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
[![Codacy Badge](https://app.codacy.com/project/badge/Coverage/a15f20cbdf2743618efe54e2db39f605)](https://app.codacy.com/gh/studoo-app/edu-framework/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_coverage)
Expand All @@ -8,15 +8,28 @@
[![Latest Unstable Version](https://poser.pugx.org/studoo/edu-framework/v/unstable)](//packagist.org/packages/edu-framework)
[![License](https://poser.pugx.org/studoo/edu-framework/license)](//packagist.org/packages/studoo/edu-framework)

Edu-Framework est une proposition d'architecture MVC pour la création de projets ou de travaux pratiques. L'objectif pédagogique est :
- Appréhender un projet par couche via MVC
- Faire un projet "full POO" et dans les "best practices" attendu par les entreprises
- Orchestrer via un gestionnaire de package (composer)
- Développement de test unitaire
- Début d'approche pour l'enseignement d'un framework (Symfony, Laravel ...)
Le projet "Edu Framework", initié en août 2023 par une équipe de développeurs dévoués à l'enseignement et à la diffusion du savoir, vise à répondre à une problématique récurrente identifiée lors de nos formations : "Comment faire une transition vers Symfony ?".

L'objectif principal "Edu Framework" est de fournir un ensemble d'outils, de guides et de ressources pédagogiques permettant aux développeurs, qu'ils soient novices ou expérimentés, de faciliter leur transition vers le framework Symfony. Ce projet visera à couvrir les aspects fondamentaux ainsi que les techniques avancées de Symfony, en mettant l'accent sur les meilleures pratiques de développement.

## Documentation
L'ensemble de la documentation est disponible sur le [https://studoo-app.github.io/edu-framework-doc](https://studoo-app.github.io/edu-framework-doc/)

> [!NOTE]
> L'ensemble de la documentation est disponible sur le [https://studoo-app.github.io/edu-framework-doc](https://studoo-app.github.io/edu-framework-doc/)

> [!IMPORTANT]
> Ce framework n'est pas adapté à une utilisation en production. Il est destiné à des fins pédagogiques.
### Development pipelines

| Package | Release | Github actions |
| :------- | :--------------------- |:--------------------- |
| Edu Framework | v2.1 | [![Run test status](https://github.com/studoo-app/edu-framework/actions/workflows/testing.yml/badge.svg?branch=2.1)](https://github.com/studoo-app/edu-framework) |
| Edu Framework | v2.0 | [![Run test status](https://github.com/studoo-app/edu-framework/actions/workflows/testing.yml/badge.svg?branch=2.0)](https://github.com/studoo-app/edu-framework) |
| Edu Framework documentation | main | [![Deploy](https://github.com/studoo-app/edu-framework-doc/actions/workflows/deploy.yml/badge.svg)](https://github.com/studoo-app/edu-framework-doc) |

## Equipe de développement
L'équipe de développement du projet "Edu Framework" est composée de développeurs expérimentés et passionnés par l'enseignement et la transmission du savoir.
Chaque membre de l'équipe apporte son expertise et son expérience pour créer un outil pédagogique de qualité.
Un collectif, appelé [Studoo](https://github.com/studoo-app), est né autour de ces projets pour partager des connaissances et des compétences, et pour contribuer à l'amélioration continue des outils pédagogiques.

- **Founder / Lead tech** : [Benoit Foujols](https://github.com/bfoujols)
- **Lead dev** : [Julien Pechberty](https://github.com/JPechberty)
8 changes: 8 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Security Policy

> Ce framework n'est pas adapté à une utilisation en production. Il est destiné à des fins pédagogiques.
En suivant ce postulat, la sécurité ne doit pas être considérée comme prioritaire. \
Néanmoins, la plateforme CODACY effectue un audit à chaque PR (pull resquet)

Voici le dashboard AUDIT CODACY :[https://app.codacy.com/gh/studoo-app/edu-framework/dashboard](https://app.codacy.com/gh/studoo-app/edu-framework/dashboard)
12 changes: 12 additions & 0 deletions TaskFile.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,11 @@ tasks:
cmds:
- "{{.PHPUNIT}} --testdox"

tests-debug:
desc: "Run tests"
cmds:
- "{{.PHPUNIT}} --testdox --debug"

tests-coverage:
desc: "Run tests with coverage"
cmds:
Expand All @@ -168,6 +173,13 @@ tasks:
- task: tests
- task: docker-down

testunit-debug:
desc: "Run tests"
cmds:
- task: docker-up
- task: tests-debug
- task: docker-down

ex-start:
desc: "Start project exemple"
cmds:
Expand Down
4 changes: 2 additions & 2 deletions compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ services:
restart: always
environment:
MYSQL_DATABASE: app_db
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
#MYSQL_ROOT_PASSWORD: root
MYSQL_ROOT_PASSWORD: studoo
#MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
#MYSQL_USER: app_db_user
#MYSQL_PASSWORD: app_db_password
volumes:
Expand Down
17 changes: 16 additions & 1 deletion src/EduFramework/Commands/Extends/AppCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,32 @@

namespace Studoo\EduFramework\Commands\Extends;

use Dotenv\Dotenv;
use Studoo\EduFramework\Core\ConfigCore;
use Studoo\EduFramework\Core\Service\DatabaseService;
use Symfony\Component\Console\Application;
use Symfony\Component\Yaml\Yaml;

class AppCommand extends Application
{
public function __construct()
{
(new ConfigCore([]));
(new ConfigCore(
[
'base_path' => __DIR__ . '/../../../../',
]
));
parent::__construct(ConfigCore::getConfig('name'), ConfigCore::getConfig('version'));

// Gestion du fichier des variables d'environnement (.env)
$dotenv = Dotenv::createImmutable(ConfigCore::getConfig('base_path'));
$dotenv->load();

// Gestion de la couche Model et de la connexion à la base de données
if (ConfigCore::getEnv('DB_HOST_STATUS') === 'true') {
(new DatabaseService());
}

$this->add(new \Studoo\EduFramework\Commands\DefaultCommand());
$this->add(new \Studoo\EduFramework\Commands\CreateControllerCommand());
$this->add(new \Studoo\EduFramework\Commands\CheckStackCommand());
Expand Down
14 changes: 8 additions & 6 deletions src/EduFramework/Core/Controller/Route.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@

namespace Studoo\EduFramework\Core\Controller;

use FastRoute\BadRouteException;
use FastRoute\RouteParser\Std;
use Studoo\EduFramework\Core\Exception\BadRouteException;
use Symfony\Component\Yaml\Exception\ParseException;
use Symfony\Component\Yaml\Yaml;

Expand Down Expand Up @@ -42,29 +42,31 @@ public function getNameToPath(string $name, array $param = []): string
}
if (array_key_exists($name, $this->listRoutes)) {
$url = "";
foreach ($this->listRoutes[$name]["uri_parse"][0] as $uri) {
$positionParam = (count($param) - 1);
foreach ($this->listRoutes[$name]["uri_parse"][$positionParam] as $uri) {
if (is_string($uri)) {
$url .= $uri;
} else {
if (!array_key_exists($uri[0], $param)) {
throw new BadRouteException("Le paramètre $uri[0] n'existe pas");
throw new BadRouteException("Le paramètre n'existe pas");
}
$url .= $param[$uri[0]];
}
}
return $url;
}
throw new BadRouteException("La route $name n'existe pas");
throw new BadRouteException("La route n'existe pas");
}


/**
* Renseigne et renvoi un tableau contenant les informations des route du fichier config/routes.yaml
* @param string $pathRouteFile Chemin du fichier de configuration des routes
* @return array<mixed> Tableau contenant les informations des routes
*/
public function getRouteInfo(): array
public function getRouteInfo(string $pathRouteFile = self::ROUTE_FILE_PATH): array
{
$this->listRoutes = $this->loadRoute(self::ROUTE_FILE_PATH);
$this->listRoutes = $this->loadRoute($pathRouteFile);
$routeParse = new Std();
foreach ($this->listRoutes as $nameRoute => $route) {
$this->listRoutes[$nameRoute]["uri_parse"] = $routeParse->parse($route["uri"]);
Expand Down
26 changes: 26 additions & 0 deletions src/EduFramework/Core/Exception/BadRouteException.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php
/*
* Edu Framework by studoo
*
* @author Benoit Foujols
*
* Pour les informations complètes sur les droits d'auteur et la licence,
* veuillez consulter le fichier LICENSE qui a été distribué avec ce code source.
*/

namespace Studoo\EduFramework\Core\Exception;

class BadRouteException extends \Exception
{
/**
* Message de l'exception
* @var string
*/
protected $message = "Le paramètre ou la route n'existe pas";

/**
* Code de l'excpetion
* @var integer
*/
protected $code = 400;
}
2 changes: 1 addition & 1 deletion tests/Config/.env
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ DB_SOCKET=3306
## Nom de l'utilisateur de la base de données
DB_USER=root
## Mot de passe de l'utilisateur de la base de données
DB_PASSWORD=root
DB_PASSWORD=studoo
## Nom de la base de données
DB_NAME=app_db
## >> Config Database
Expand Down
14 changes: 13 additions & 1 deletion tests/Config/routes.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,16 @@
index:
uri: /
controller: Controller\HomeController
httpMethod: [GET]
httpMethod: [GET]
user:
uri: /user/{id}
controller: Controller\UserController
httpMethod: [GET,POST]
userUpdate:
uri: /user/{id}/update
controller: Controller\UserController
httpMethod: [GET,POST]
userName:
uri: /user/{id:\d+}[/{name}]
controller: Controller\UserController
httpMethod: [GET,POST]
4 changes: 2 additions & 2 deletions tests/ConfigCoreTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public function testGetEnvDbSocket()

public function testGetEnvDbType()
{
$this->assertEquals('postgres', ConfigCore::getEnv('DB_TYPE'));
$this->assertEquals('mysql', ConfigCore::getEnv('DB_TYPE'));
}

public function testGetEnvDbUser()
Expand All @@ -75,7 +75,7 @@ public function testGetEnvDbUser()

public function testGetEnvDbPwd()
{
$this->assertEquals('root', ConfigCore::getEnv('DB_PASSWORD'));
$this->assertEquals('studoo', ConfigCore::getEnv('DB_PASSWORD'));
}

public function testExistEnvDbName()
Expand Down
Loading

0 comments on commit aff4713

Please sign in to comment.