Plateforme de mise en relation avec des réparateurs de vélos
La branche main est déployée sur main.nonprod.bikelib.preprod-tilleuls.ovh
Les PR sont déployées sur pr-NN.nonprod.bikelib.preprod-tilleuls.ovh (uniquement si le label deploy est ajouté sur la PR)
Les tags/releases sont déployées sur demo.bikelib.preprod-tilleuls.ovh
git clone [email protected]:coopTilleuls/bikelib.git # Clone du projet
cd bikelib # Se place dans le dossier du projet
docker-compose build # Installation du projet
docker-compose up -d # Lance les containers
docker-compose exec php sh # "Entrer" dans le container PHP
Temporairement, le site est protégé par un mot de passe : Login : Libre Password : Rustine
bin/console d:d:c # Créer la BDD
bin/console d:m:m # Lance les migrations
bin/console h:f:l -e dev # Injecte les fixtures
bin/console d:d:d --env=test --force
bin/console d:d:c --env=test
bin/console d:m:m --env=test
bin/console h:f:l --env=test
php -d memory_limit=1024M vendor/bin/phpunit
vendor/bin/phpunit <chemin/vers/votre/test>
cd ./pwa
pnpm playwright install
pnpm playwright test
# Pour avoir une interface graphique
pnpm playwright test --ui
Faites une request POST sur cette URL : https://localhost/auth avec ce contenu
{
"email": "[email protected]",
"password": "Test1passwordOk!"
}
Permet d'obtenir le token suivant
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE2Nzk2NTQxOTgsImV4cCI6MTY3OTY1Nzc5OCwicm9sZXMiOlsiUk9MRV9BRE1JTiIsIlJPTEVfVVNFUiJdLCJ1c2VybmFtZSI6ImNsZW1lbnRAbGVzLXRpbGxldWxzLmNvb3AifQ.OmmLYlmeriqt-SSIgseyTDDYcAOFs_ws4p7FmbBbExpPn3JQOyrIQk3zs-NKOIupxT8grB42KPnCa_cm08i6Mu1p4Bm-lBWe2N95rNCTRAhazFirwVCx5Jgkp1QD2ICUElOyw6pid8oroTQ903XhtHJnK8tRADArDZqz64U3p4eHcMbappjyJCQhVeV50oYsqcmR3gPWkO5uNt-9lMz4prOasz4rRPXY3MIVrGX6NJTCGkQjQPD0ibcqofJxoXpWmYvzIMNfRw7Wb0yd7guQxm7rWRVAwjBWFiW1eLou4upuq_KREojGLJwcTHVODeCrJcsQyRPtW1SRvrtP-PJ3tA"
}
Ensuite passer le token JWT en header à vos requêtes Authorization: Bearer {token}
Par défaut dans ce projet nous utilisons symfony/mailer et mailgun pour envoyer nos emails. Vous êtes libre d'implémenter une autre solution pour cette partie.
Vous avez juste à changer les variables d'environnement suivantes et installer la librairie compatible avec symfony/mailer (gmail, amazon, mailchimp, mailjet etc...)
MAILER_SENDER
MAILER_DSN
Toute la documentation est disponible ici : https://symfony.com/doc/current/mailer.html
En tant qu'admin
mail: [email protected]
password: Test1passwordOk!
En tant que boss d'une solution de réparation
mail: [email protected]
password: Test1passwordOk!
Ou
mail: [email protected]
password: Test1passwordOk!
Pour se connecter en tant que cycliste
mail: [email protected]
password: Test1passwordOk!
Le sitemap.xml est disponible via la route suivante : /sitemap.xml
Côté front, dès que vous ajouter une nouvelle route disponible publiquement, c'est à dire sans authentification, il faut modifier le controller SitemapController
présent côté back, afin que le sitemap soit mis à jour.
Le captcha est celui de Cloudflare : Turnstile.
Il suffit d'aller dans votre pwa/.env.local et d'y ajouter la variable présente dans pwa/.env tout en y mettant la sitekey dédiée présente sur notre compte Cloudflare Tilleuls à cette adresse : https://dash.cloudflare.com/login
Le système de notifications push utilise Firebase Cloud Messaging, pour les faire fonctionner il faut indiquer des credentials valides dans le .env (et fournies par FCM) et lancer la commande suivante
php bin/console app:firebase:credentials
Il est nécessaire d'utiliser un protocole HTTPS intégral. En environnement local si vous avez des erreurs de tunnel SSL dans l'app react il est conseillé d'installer ngrok pour créer un tunnel vers l'application:
ngrok http --host-header="localhost:443" localhost:443
L'IP ensuite proposée doit surcharger localhost dans le docker-compose.override :
php:
environment:
TRUSTED_HOSTS: ^${SERVER_NAME:-example\.com|localhost|<votre ip ngrok>.ngrok-free.app}|caddy$$```
pwa:
environment:
NEXT_PUBLIC_ENTRYPOINT: https://<votre ip ngrok>.ngrok-free.app
Et ajouter dans le .env.local de votre PWA
NEXT_PUBLIC_ENTRYPOINT=https://<votre ip ngrok>.ngrok-free.app
Une fois les containers lancés, le projet est disponible à l'adresse suivante :
https://localhost
Il existe 3 parcours sur le site :
- Le parcours du cycliste "traditionnel" disponible à la racine du site
- Le parcours d'un réparateur de vélo, qui accède à l'URL /sradmin sur laquelle il peut gérer ses clients, rendez-vous, horaires..
- Le parcours d'un administrateur du site, qui accède à l'URL /admin, sur laquelle il peut accepter les demandes des réparateurs, consulter les messages reçus...
La gestion du carnet d'entretien d'un vélo peut se faire via l'URL /mes-velos du parcours cycliste, il y est possible d'y ajouter des photos ou des factures à différents formats :
- photos : .png, .jpg, .jpeg
- factures : .pdf, .doc, .docx, .odt, .xls, .csv, .png, .jpg, .jpeg
Les réparateurs peuvent également accéder à ce carnet et ajouter des interventions dont ils sont à l'origine.
Les utilisateurs du site sont répartis dans 4 rôles différents :
- ROLE_USER, il s'agit des utilisateurs de la plateforme
- ROLE_BOSS, il s'agit des propriétaires des solutions de réparation
- ROLE_EMPLOYEE, il s'agit des employés des solutions de réparation
- ROLE_ADMIN, il s'agit des administrateurs de la plateforme
Une tâche CRON doit être joué toutes les 30min pour mettre à jour le prermier créneau disponible de chaque réparateur (lorsqu'il n'est pas déjà actualisé*)
php bin/console app:repairer:update-first-slot-available
Une autre commande (facultative) permet de mettre à jour le status des rendez vous lorsque ces derniers n'ont pas obtenu de réponse depuis 72 heures ou que leur date est dépassée. Elle peut également être jouée quotidiennement :
php bin/console app:appointments:cancel-old