Skip to content
/ CarApp Public

Class Project - Symfony web-app rental system

Notifications You must be signed in to change notification settings

julio4/CarApp

Repository files navigation

Dossier complet pdf avec screenshots

Projet Pweb 2020: Car'App

Une web app pour gérer la location de voitures
· Jules Doumèche · Gwénolé Martin · Mehdi Hachisman

Sommaire

A propos du projet

L'objectif du projet est de construire une application web basée sur une architecture MVC de location de voitures. Elle permet aux utilisateurs de parcourir les différents modèles de véhicules mis en location avec une description, une photo, et des caractéristiques pour chaque véhicule.

Celle-ci implémente différents services pour les utilisateurs et les loueurs :

Listes des services clients/loueurs

L'utilisateur est le plus souvent une entreprise qui souhaite louer des véhicules:

  • Page d'inscription Status
  • Connexion (non obligatoire pour voir la page d'accueil) Status
  • Page d'accueil qui affiche les différents modèles proposés Status
  • Réduction de 10% si paiement mensuel (à partir d'un mois) Status
  • Connexion obligatoire pour une location Status
  • Sélection d'une intervalle de date Status Rôle
  • Possibilité de réaliser un paiement mensuel sans date limite (renouvellement chaque mois) Status Rôle
  • Affichage des modèles disponibles à la location selon les dates entrées Status Rôle
  • Page de récapitulative d'une location Status Rôle Rôle
  • Panel de toutes les locations effectuées Status Rôle Rôle
  • Accès à la facture Status Rôle
  • Panel de gestion Status Rôle
  • Affichage des revenus, des réservations du mois en cours Status Rôle
  • Affichage du pourcentage de véhicules en cours de location Status Rôle
  • Affichage du nombre de client Status Rôle
  • Tableau des dernières locations Status Rôle
  • Page de récapitulative des véhicules avec les statuts de chaque véhicule Status Rôle
  • Page de modification d'un véhicule (non loué), avec possibilité de retirer le véhicule du stock Status Rôle
  • Formulaire d'ajout d'un nouveau véhicule Status Rôle
  • Page de tout les clients Status Rôle
  • Calcul des factures pour chaque client du mois courant Status Rôle

Administrateur

Un rôle Administrateur est aussi implémenté:

  • Panel d'administration Status Rôle
  • Affichage du nombre d'utilisateurs Status Rôle
  • tableau de tous les utilisateurs inscrits Status Rôle
  • Possibilité de supprimer un compte Status Rôle
  • Possibilité de définir un compte utilisateur en compte renter Status Rôle
  • Possibilité de définir un compte renter en compte utilisateur Status Rôle

Sécurité

L'application repose sur une structure solide qui permet de garantir la sécurité:

  • Authentification sécurisé avec token de connexion Status
  • Mot de passe hashé, avec possibilité de rehasher le mot de passe Status
  • Restrictions d'accès à certaines urls en fonction du rôle Status
  • Données stockés dans une base de données avec accès sécurisé Status

Technologies

Cette application web utilise certaines technologies et frameworks:

Front-end
Back-end

Une liste des dépendances est disponible ci-dessous

Installation

Voici comment mettre en place l'application dans votre environnement de développement

Prérequis

Configuration du fichier php.ini:

extension=fileinfo
extension=gd2
extension=exif
extension=mysqli
extension=pdo_mysql
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'c31c1e292ad7be5f49291169c0ac8f683499edddcfd4e42232982d0fd193004208a58ff6f353fde0012d35fdd72bc394') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Démarrage

  1. Vérifier la configuration de symfony
symfony check:requirements
  1. Cloner le repos, ou télécharger l'archive correspondante dans votre IDE
cd /carapp
git clone https://github.com/julio4/CarApp.git
  1. Installer les dépendances
composer install
  1. Démarrer le serveur mySql (exemple: XAMPP)

  2. Configurer la base de données

A partir de notre base

Importer la base dans mysql avec l'aide du script carapp.sql

OU

A partir d'une nouvelle base, importer le schéma avec doctrine:
  • Configurer la connexion à la base dans le dossier .env:
@.env:28
DATABASE_URL='mysql://root:@127.0.0.1:3306/<BASE>' //(par défault:carApp)
  • Charger le schéma de la base:
php bin/console doctrine:schema:update --force
  • Charger des données de base () :
  php bin/console doctrine:fixtures:load
  1. (optionel) Installer les certificats
symfony server:ca:install
  1. (optionel) Charger le cache en avance pour accélérer le site
php bin/console cache:warmup
  1. Démarrer le serveur web
symfony server:start

L'application est disponible en environnement de développement en local à l'adresse localhost:8000

  • Le compte administrateur de base est accessible avec l'utilisateur admin et le mot de passe password

  • Un compte loueur est accessible avec l'utilisateur loueur et le mot de passe password

  • Trois comptes clients sont accessibles: Daisi Carignan,Ernest Bonenfant,Alita Robert avec le mot de passe passwordpassword

Extensions utilisées

Ces extensions sont automatiquement installées en suivant le guide d'installation

Back-end
  • Twig : gérer les vues du site grâce à des templates avancées
  • Doctrine ORM : gérer les modèles, les entitées et la connexion à la base de données
  • Webpack Encore : gérer tous les assets front-end, injecte le css, le javascript et les librairies supplémentaires
  • Symfony/form : gérer la création et le traitement des formulaires
  • Symfony/maker-bundle : créer des classes types rapidement et efficacement
  • Symfony/security-bundle : gérer les connections et les rôles de chaque utilisateurs
  • Symfony/validator : vérifie les données des formulaires pour correspondre au schéma de la base de données
  • Symfony/web-profiler-bundle : barre de débug en environnement de développement
Front-end

Utilisation

Documentation des fonctionnalitées offertes par notre application ! (voir le rapport de projet)Status