Skip to content

Repository files navigation

CeriCar - Application de Covoiturage

Yii2 PHP PostgreSQL Bootstrap License

Une plateforme de covoiturage moderne et intuitive

Fonctionnalites | Installation | Documentation | Contribution


Description

CeriCar est une application web de covoiturage developpee avec le framework Yii2 (PHP). Elle permet aux utilisateurs de rechercher, proposer et reserver des trajets entre differentes villes francaises. L'application offre une experience utilisateur fluide grace a son interface moderne et ses fonctionnalites AJAX.

Objectifs du projet

  • Faciliter la mise en relation entre conducteurs et voyageurs
  • Proposer une recherche de trajets simple et efficace
  • Permettre la gestion complete des voyages et reservations
  • Offrir une interface responsive et moderne

Fonctionnalites

Pour les visiteurs

  • Recherche de trajets par ville de depart, d'arrivee et nombre de passagers
  • Consultation des voyages disponibles
  • Inscription et creation de compte

Pour les utilisateurs connectes

  • Gestion du profil (photo, informations personnelles)
  • Reservation de places sur les voyages disponibles
  • Consultation de l'historique des reservations
  • Annulation de reservations

Pour les conducteurs

  • Devenir conducteur (ajout du numero de permis)
  • Proposition de nouveaux voyages
  • Gestion des voyages proposes (modification, consultation)
  • Visualisation des reservations sur ses voyages

Captures d'ecran

Page d'accueil

Accueil

Recherche de trajets

Recherche

Proposer un voyage

Proposer voyage

Mes voyages proposes

Mes voyages

Mes reservations

Mes reservations


Architecture

CeriCar/
|-- assets/              # Asset bundles Yii2
|-- commands/            # Commandes console
|-- config/              # Configuration (DB, Web, Params)
|-- controllers/         # Controleur principal (SiteController)
|-- mail/                # Templates d'emails
|-- models/              # Modeles de donnees (14 modeles)
|   |-- Internaute.php       # Utilisateurs
|   |-- Voyage.php           # Trajets proposes
|   |-- Reservation.php      # Reservations
|   |-- Trajet.php           # Trajets predefinis
|   |-- TypeVehicule.php     # Types de vehicules
|   |-- MarqueVehicule.php   # Marques de vehicules
|   +-- *Form.php            # Formulaires de validation
|-- tests/               # Tests Codeception
|-- uml/                 # Diagrammes UML (PlantUML)
|-- views/               # Vues (layouts + pages)
|-- web/                 # Assets publics (CSS, JS, images)
|   |-- css/
|   |-- js/
|   +-- theme/
|-- composer.json        # Dependances PHP
+-- yii                  # Script console

Technologies

Technologie Version Utilisation
PHP >= 7.4 Langage backend
Yii2 ~2.0.45 Framework MVC
PostgreSQL 15+ Base de donnees
Bootstrap 5.x Framework CSS
JavaScript ES6+ Interactivite frontend
Swiper 8.x Carrousel d'images
GlightBox 3.x Lightbox pour images

Installation

Prerequis

  • PHP >= 7.4
  • Composer
  • PostgreSQL >= 12
  • Serveur web (Apache/Nginx)

Etapes d'installation

  1. Cloner le repository
git clone https://github.com/VOTRE_USERNAME/CeriCar.git
cd CeriCar
  1. Installer les dependances
composer install
  1. Configurer la base de donnees

Creer le fichier config/db.php :

<?php
return [
    'class' => 'yii\db\Connection',
    'dsn' => 'pgsql:host=localhost;dbname=votre_base',
    'username' => 'votre_utilisateur',
    'password' => 'votre_mot_de_passe',
    'charset' => 'utf8',
    'schemaMap' => [
        'pgsql' => [
            'class' => 'yii\db\pgsql\Schema',
            'defaultSchema' => 'votre_schema',
        ],
    ],
];
  1. Configurer les variables d'environnement (optionnel - pour Stripe)
cp .env.example .env
# Editer .env avec vos cles Stripe
  1. Lancer le serveur de developpement
php yii serve

L'application sera accessible a l'adresse : http://localhost:8080


Base de donnees

Schema relationnel

+------------------+       +------------------+       +------------------+
|   internaute     |       |     voyage       |       |   reservation    |
+------------------+       +------------------+       +------------------+
| id (PK)          |<------| conducteur (FK)  |       | id (PK)          |
| pseudo           |       | id (PK)          |<------| voyage (FK)      |
| pass             |       | trajet (FK)      |       | voyageur (FK)  --|-->
| nom              |       | idtypev (FK)     |       | nbplaceresa      |
| prenom           |       | idmarquev (FK)   |       | dateresa         |
| mail             |       | tarif            |       +------------------+
| photo            |       | nbplacedispo     |
| permis           |       | nbbagage         |
+------------------+       | heuredepart      |
                           | contraintes      |
                           +------------------+
                                   |
            +----------------------+----------------------+
            v                      v                      v
+------------------+    +------------------+    +------------------+
|     trajet       |    |  typevehicule    |    | marquevehicule   |
+------------------+    +------------------+    +------------------+
| id (PK)          |    | id (PK)          |    | id (PK)          |
| depart           |    | typev            |    | marquev          |
| arrivee          |    +------------------+    +------------------+
| distance         |
+------------------+

Documentation

Diagrammes UML

Le projet inclut des diagrammes UML complets dans le dossier /uml/ :

Fichier Description
model.wsd Diagramme de classes
util.wsd Diagramme de cas d'utilisation
seq.wsd Diagrammes de sequence
trans.wsd Diagramme d'etats-transitions

Routes principales

Route Methode Description Acces
/ GET Page d'accueil avec recherche Public
/login GET/POST Connexion Public
/signup GET/POST Inscription Public
/logout POST Deconnexion Authentifie
/profil GET Profil utilisateur Authentifie
/devenir-conducteur GET/POST Devenir conducteur Authentifie
/proposer-voyage GET/POST Proposer un voyage Conducteur
/mes-voyages GET Mes voyages proposes Conducteur
/reserver-voyage/{id} GET/POST Reserver un voyage Authentifie
/mes-reservations GET Mes reservations Authentifie
/contact GET/POST Page de contact Public
/about GET A propos Public

Endpoints AJAX

Endpoint Description
/recherche-ajax Recherche de voyages en temps reel
/login-ajax Connexion via modal
/signup-ajax Inscription via modal
/devenir-conducteur-ajax Ajout permis via modal
/proposer-voyage-ajax Proposition voyage via modal
/reserver-voyage-ajax Reservation via modal

Modeles

Entites (ActiveRecord)

Modele Table Description
Internaute internaute Utilisateurs (voyageurs et conducteurs)
Voyage voyage Voyages proposes par les conducteurs
Reservation reservation Reservations des voyageurs
Trajet trajet Trajets predefinis (villes + distance)
TypeVehicule typevehicule Types de vehicules (Berline, SUV...)
MarqueVehicule marquevehicule Marques (Renault, Peugeot...)

Formulaires

Modele Description
LoginForm Validation de connexion
SignupForm Validation d'inscription
RechercheForm Recherche de voyages
ProposerVoyageForm Creation de voyage
ReserverVoyageForm Reservation de voyage
DevenirConducteurForm Ajout de permis
ModifierVoyageForm Modification de voyage
ContactForm Formulaire de contact

Securite

  • Authentification : Systeme d'authentification Yii2 avec sessions
  • Mots de passe : Hashage SHA1 (amelioration possible vers bcrypt)
  • CSRF : Protection CSRF activee sur les formulaires
  • Controle d'acces : Systeme de roles (visiteur, utilisateur, conducteur)
  • Validation : Validation cote serveur de toutes les entrees utilisateur
  • Filtres : Verification de propriete des ressources

Tests

# Executer tous les tests
./vendor/bin/codecept run

# Tests unitaires uniquement
./vendor/bin/codecept run unit

# Tests fonctionnels
./vendor/bin/codecept run functional

Contribution

Les contributions sont les bienvenues ! Voici comment contribuer :

  1. Fork le projet
  2. Creer une branche pour votre fonctionnalite (git checkout -b feature/nouvelle-fonctionnalite)
  3. Commit vos changements (git commit -am 'Ajout d une nouvelle fonctionnalite')
  4. Push vers la branche (git push origin feature/nouvelle-fonctionnalite)
  5. Ouvrir une Pull Request

Guidelines

  • Suivre les conventions de code Yii2
  • Documenter les nouvelles fonctionnalites
  • Ajouter des tests pour les nouvelles fonctionnalites
  • Mettre a jour la documentation si necessaire

Roadmap

  • Systeme de notation et avis
  • Integration complete du paiement Stripe
  • Notifications par email
  • Messagerie entre utilisateurs
  • Application mobile (PWA)
  • Systeme de points fidelite

Auteurs

  • Developpeur - Projet universitaire CERI - Universite d'Avignon

Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de details.


Remerciements


Fait avec passion pour le CERI - Universite d'Avignon

About

Plateforme de covoiturage Yii2, PHP, PostgreSQL

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages