Une plateforme de covoiturage moderne et intuitive
Fonctionnalites | Installation | Documentation | Contribution
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.
- 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
- Recherche de trajets par ville de depart, d'arrivee et nombre de passagers
- Consultation des voyages disponibles
- Inscription et creation de compte
- Gestion du profil (photo, informations personnelles)
- Reservation de places sur les voyages disponibles
- Consultation de l'historique des reservations
- Annulation de reservations
- Devenir conducteur (ajout du numero de permis)
- Proposition de nouveaux voyages
- Gestion des voyages proposes (modification, consultation)
- Visualisation des reservations sur ses voyages
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
| 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 |
- PHP >= 7.4
- Composer
- PostgreSQL >= 12
- Serveur web (Apache/Nginx)
- Cloner le repository
git clone https://github.com/VOTRE_USERNAME/CeriCar.git
cd CeriCar- Installer les dependances
composer install- 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',
],
],
];- Configurer les variables d'environnement (optionnel - pour Stripe)
cp .env.example .env
# Editer .env avec vos cles Stripe- Lancer le serveur de developpement
php yii serveL'application sera accessible a l'adresse : http://localhost:8080
+------------------+ +------------------+ +------------------+
| 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 |
+------------------+
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 |
| 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 |
| 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 |
| 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...) |
| 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 |
- 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
# Executer tous les tests
./vendor/bin/codecept run
# Tests unitaires uniquement
./vendor/bin/codecept run unit
# Tests fonctionnels
./vendor/bin/codecept run functionalLes contributions sont les bienvenues ! Voici comment contribuer :
- Fork le projet
- Creer une branche pour votre fonctionnalite (
git checkout -b feature/nouvelle-fonctionnalite) - Commit vos changements (
git commit -am 'Ajout d une nouvelle fonctionnalite') - Push vers la branche (
git push origin feature/nouvelle-fonctionnalite) - Ouvrir une Pull Request
- Suivre les conventions de code Yii2
- Documenter les nouvelles fonctionnalites
- Ajouter des tests pour les nouvelles fonctionnalites
- Mettre a jour la documentation si necessaire
- Systeme de notation et avis
- Integration complete du paiement Stripe
- Notifications par email
- Messagerie entre utilisateurs
- Application mobile (PWA)
- Systeme de points fidelite
- Developpeur - Projet universitaire CERI - Universite d'Avignon
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de details.
- Yii2 Framework
- Bootstrap
- Template TravelTime
- CERI - Universite d'Avignon
Fait avec passion pour le CERI - Universite d'Avignon




