Jurassic Land
Test technique pour B-Appli.
Réalisé en utilisant le framework PHP Laravel. Testé avec une base SQLite.
Compte-rendu
Fonctionnalités :
- Création d'un enclos
- Modification du nom d'un enclos
- Modification de l'état d'un enclos
- Enregistrement des changements d'état des enclos (ouvertures et fermetures)
- Listing des enclos avec leurs status
- Suppression d'un enclos
À faire :
- Listing des ouvertures/fermetures
- Styler les pages correctement (css, bootstrap)
- Gérer les erreurs de validation de façon user-friendly (reporter l'erreur dans l'interface, catcher les exceptions)
- Ajout d'une ouverture aléatoire pour modéliser l'ouverture par les vélociraptors
- Brancher le système d'authentification de Laravel
Remarques
Codé en environ 2h30. C'était pour moi l'occasion de découvrir Laravel.
L'implémentation utilise au maximum les facilités offertes par Laravel : ORM, migrations de base de données, routage d'un modèle.
La modélisation est très simple :
- un modèle Paddock (
app/Paddock.php), qui modélise un enclos : id, nom, état (booléen isClosed) ; - un modèle PaddockStateChange (
app/PaddockStateChange.php), qui modélise un changement d'état (ouverture/fermeture). On utilise le fait que l'ORM de laravel stocke automatiquement des timestamps de création et mise à jour pour stocker la date d'ouverture/fermeture de l'enclos ; - Paddock et PaddockStateChange sont liés par une relation hasMany ;
- le controlleur PaddockController (
app/Http/Controller/PaddockController.php) est dérivé du squelette créé automatiquement par Laravel ; - ce qui permet de router toutes les actions CRUD classiques en une ligne dans
routes/web.php; - les fichiers de migration sont dans
database/migrations(create_paddock_table, add_unique_constraint_on_paddock_names, create_paddock_state_changes).
Propriétés :
- un enclos est identifié de manière unique par son nom : assuré par une contrainte d'intégrité sur la colonne de la base de données.
- enclos fermé par défaut (valeur par défaut dans le modèle)
Installation et test
Pré-requis : installation de Laravel
composer global require laravel/installer
Clonage et mise en route :
git clone http://git.dromaludaire.info/benjamin/bappli-jurassic-land.git
cd bappli-jurassic-land
composer update
cp .env.example .env
php artisan key:generate
touch database/database.sqlite
php artisan migrate
php artisan serve
Et l'application est ensuite disponible sur http://localhost:8000
Description
Languages
PHP
93%
HTML
6.4%
JavaScript
0.6%