Skip to content

insaneness/flexcity

Repository files navigation

Flexcity

Backend technical test


🛠 Pré-requis

Assurez-vous que votre environnement de développement dispose des éléments suivants :


⚙️ Installation et Configuration

Suivez ces étapes pour cloner et lancer le projet localement. Placez-vous dans le dossier de votre choix et exécutez les commandes suivantes :

1. Cloner le dépôt

git clone https://github.com/insaneness/flexcity.git .

2. Installer les dépendances

composer install

3. Configurer l'environnement

Le fichier .env est pré configuré et contient les variables d'environnement nécessaires pour la connexion à la base de données (Docker).

4. Lancer le conteneur Docker

docker-compose up -d

5. Exécuter les migrations

php bin/console doctrine:migrations:migrate

6. Loader les fixtures

php bin/console doctrine:fixtures:load

7. Lancer le serveur de développement

symfony server:start

🚀 Utilisation

Ajouter une activation (recevoir une requête TSO)

Faire une requête POST sur http://127.0.0.1:8000/activation avec le body suivant :

{
    "date": "17-03-2026",
    "volume": 150
}

Si vous avez Postman d'installé :

postman request POST 'http://127.0.0.1:8000/activation' \
  --header 'Content-Type: application/json' \
  --body '{
    "date": "17-03-2026",
    "volume": 150
}'

🚥 Tests

Pour éxécuter les tests lancer la commande suivante :

php bin/phpunit

Design decisions

  • J'ai voulu mettre en place le Domain Driven Design (DDD) pour structurer le projet de manière claire et maintenable. Cela permet de séparer les différentes couches de l'application (Domain, Application, Infrastructure) et de favoriser la réutilisabilité du code.
  • J'ai mis en place le début d'une petite API REST pour permettre l'ajout d'objets du modèle via des requêtes HTTP. Cela rend l'application plus flexible et facilement intégrable avec d'autres systèmes.
  • J'ai utilisé Docker pour faciliter le déploiement et la gestion de la base de données. Cela permet à n'importe qui de cloner le projet et de le faire fonctionner rapidement.
  • Concernant la partie optimisation de la recherche d'assets, j'ai implémenté la version demandée (Cost Effective) et j'ai aussi travaillé sur une version qui prend en compte la notion d'overpower.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages