Git Product home page Git Product logo

resavo's Introduction

RESAVO

  • Follow @ActuSenzo -- #CodeWithLove #Resavo

PRÉSENTATION

RESAVO est un projet Open-Source, l'idée est de créer un système de réservation "clef en main" en y apportant des fonctionnalités avec les dernières technologies.
Nous essayerons de répondre à un large éventail de cas d'usage possible. Nous essayerons de créer une UI & UX avancée.
J'ai fait le choix de créer les ISSUES en français pour faciliter la compréhension aux développeurs débutants.
Nous essayerons de rendre ce projet le plus générique possible et personnalisable (du choix de la couleur du thème, au choix entre Paypal ou Stripe…).

Le projet sous sa forme actuelle a été fait avec une personnalisation spécifique. Vous trouverez sûrement du code à jeter/modifier.

Screenshot (Ancien design)

COMMENT CONTRIBUER ?

Rendez-vous dans l'onglet "ISSUE". C'est ici qu'on liste les tâches à effectuer.

Une fois que vous avez repéré une ISSUE, assignez-vous celle-ci. Ensuite, vous devez "fork" le repository "resavo" en cliquant sur le bouton Fork sur Github.

Puis, vous clonez le nouveau repository :

git clone [email protected]:USERNAME/resavo.git

Et ajoutez le référent, une fois dans le dossier "resavo" :

cd resavo
git remote add upstream git://github.com/senzowayne/resavo.git

Vous êtes prêt pour créer votre branche portant le nom de l'ISSUE.

Vous effectuerez votre travail dessus. Après avoir commit (en suivant toujours la convention de nommage ISSUE-#22 : <la tâche réalisée au sens précis>) et push votre travail, vous pouvez passer à l'étape suivante, qui est d'ouvrir une Pull Request. On imposera une convention en la nommant ainsi :

ISSUE-#22 : <la tâche réalisée au sens large>

Concentrez-vous vraiment sur la tâche choisie. Ne mélangez pas une correction que vous auriez envie de faire dans une tâche qui n'a rien à voir. Il est souvent facile de s'éparpiller…

Si vous estimez que vous avez fini votre travail vous pouvez le labelliser en "Prêt pour relecture". Les contributeurs pourront relire et proposer des corrections ou suggestions à apporter à votre travail. Une fois celui-ci validé par au moins 2 contributeurs votre travail sera en mesure d'être fusionné dans la branche "master". Vous pourrez ensuite retourner sur votre branche "master" en local et effectuer un git pull.

Pensez à supprimer vos branches au fur et à mesure pour ne pas finir avec d'innombrables branches inutiles.

INSTALLATION

(pré-requis docker)

Exécutez d'abord ces commandes :

$ git clone [email protected]:USERNAME/resavo.git
$ cd resavo/
$ make start

Vous pouvez executer la commande suivante pour voir la liste des commandes disponibles

$ make

Le temps que le projet s'initialise tu peux aller boire un café ☕️

Lien : http://127.0.0.1 ou http://localhost

Vous devriez à present voir la page d'accueil du projet, avec la possibilité de vous inscrire et de vous connecter. Le chargement des fixtures nous aura créé quelques éléments pour commencer.

Créez ensuite un fichier .env.local avec comme variable d'environnement :

CLIENT_ID=
CLIENT_SECRET=

Ces variables contiendront les identifiants de vos systèmes de paiement.

Installation sans docker

Exécutez d'abord ces commandes :

$ git clone [email protected]:USERNAME/resavo.git
$ cd resavo/

Assurez vous d'avoir les bonnes versions de Composer (2.2) et de Php (8.0). Pour vérifier :

$ composer -v
$ php -v

Il nous faut installer le projet avec composer. Vous pouvez exécuter cette commande afin de pouvoir exploiter le projet en ligne de commande :

$ composer install

Vous pouvez enfin exécuter la commande suivante pour voir la liste des commandes disponibles :

$ php bin/console

Pour lancer un serveur php, exécuter la commande suivante (pré-requis : Symfony CLI):

symfony server:start

Lancez enfin votre projet.

Lien : http://127.0.0.1 ou http://localhost

Pour mettre en place votre base de données, créez une fichier .env.local avec comme variable d'environnement :

DATABASE_NAME=resavo
DATABASE_HOST=localhost
DATABASE_PORT=3306
DATABASE_USER=!ChangeMe!
DATABASE_PASSWORD=!ChangeMe!

DATABASE_URL="mysql://USER:PASSWORD@HOST:3306/DBNAME?serverVersion=8.0"

Une fois les variables initialisées, vous pouvez commencer à créer la base de données :

$ php bin/console doctrine:database:create
$ php bin/console doctrine:migration:migrate

Nous allons maintenant générer les fixtures :

$ php bin/console doctrine:fixtures:load
$ yes

Petit rappel, toutes ces tâches sont à effectuer sur le projet cloné de votre fork.

Nous allons maintenant intégrer le gestionnaire de paquet qui n'est pas intégré automatiquement avec composer.

$ npm install
$ npm install yarn
$ yarn install
$ yarn encore dev

Et voilà ! Vous pouvez enfin lancer le projet et commencer à travailler sur les ISSUES !

Paypal SANDBOX TEST

Créez votre SANDBOX (celle-ci vous permettra d'effectuer des faux paiements et avoir le réel comportement de l'application) :

Cf : https://developer.paypal.com/docs/api/overview/#create-sandbox-accounts

Vous pouvez dès à présent vous connecter avec un compte admin:

Technologies

  • Symfony 5.2
  • Api Platform Core
  • Mercure
  • Twig
  • Vue Js
  • Jquery
  • Bootstrap

Credit

Merci à @Marlene78 pour la typo et félicitations pour sa première contribution.

Merci @Yanoucrea pour ses bonnes pratiques de conventions ;)

Merci à @Dev-Int pour ces belles contributions au projet.

resavo's People

Contributors

senzowayne avatar dependabot[bot] avatar dev-int avatar coryse2 avatar imenrad avatar issouf-sacko avatar moisebi avatar yalefresne avatar

Stargazers

Pascal Briffard avatar  avatar Frédéric Vandenplas avatar Boureima Namountougou avatar Clovis S.J Onadja avatar  avatar Serge avatar Pierre Boissinot avatar Filinto Romain avatar Simon Rolland avatar Ahmed Mze avatar Elneris Dang avatar Ghassen avatar  avatar LAN62 avatar  avatar willice avatar DarkiDarki avatar

Watchers

 avatar  avatar  avatar willice avatar

resavo's Issues

Traductions

Je vois des textes en dur.
Exemple ici :
image

-> Utiliser un système de traduction.

Packages depreciation

A voir ce qu'impliquerait de faire les changements, mais je pense qu'il est nécessaire de le faire le plutôt possible.

Package braintree/braintreehttp is abandoned, you should avoid using it. No replacement was suggested.
Package zendframework/zend-eventmanager is abandoned, you should avoid using it. Use laminas/laminas-eventmanager instead.
Package zendframework/zend-code is abandoned, you should avoid using it. Use laminas/laminas-code instead.
Package twig/extensions is abandoned, you should avoid using it. No replacement was suggested

PHP 7.4

Mettre à jour le projet. Faut partir sur des bonnes bases et pas dev' sur une vieille version de PHP.
image

Mise en place de fixtures

Il faut mettre en place des fixtures avec :

  • Quelques utilisateurs
  • Un Admin
  • Des réservations
  • Des salles
  • Des séances

Typo README

Corriger les quelques typos qu'il reste 😉

Docker compose [php]

Lors d'un docker-compose up, php effectue quelques tâches au démarrage pendant ce temps on obtient une 500 qui peut laisser penser que rien ne fonctionne.

Trouvez un moyen d'informer ou d'éviter l'erreur 500.

Mettre en place des logs

Dans le cadre d’un meilleur suivi de ce qui se passe sur l'application. (Exemple: si les réservations ce passe correctement ou pas, ou si les utilisateurs rencontrent des erreurs)

Il faudrai mettre en place des logs qui nous permettre de suivre une réservation depuis début le paiement jusqu’a l’envoi du mail de confirmation.

Bonus : il serai idéal de recevoir un mail en cas de log critique
Cf: https://www.remipoignon.fr/symfony-configuration-des-logs-monolog/
https://symfony.com/doc/current/logging.html

Gestion des séances bloquantes selon formule choisi

On peut voir que dans l’idée d’une salle à réserver on bloque des séances par rapport à celle-ci. Donc une même séance pour 2 salles différentes sont indépendantes. Par contre admettons que je puisse proposer qu’une formule à la fois.

Exemple je suis coiffeur indépendant et peut importe la formule choisi je dois bloquer les séances par rapport à la journée uniquement. Car je ne peux pas gérer 2 ou plus à la fois.

C’est cette gestion qu’il faut mette en place par le biais d’un simple boolean depuis les paramètres du marchant ensuite si ce boolean est true, l’idée est de modifier la requête de vérification de disponibilité en ne se basant pas sur date / room / séance
Mais sur date / séance. Ce qui m’a l’air de bien gérer le cas voulu.

Création d'un entity Config

L'idée serai de pouvoir personnaliser sa config de façon dynamique, on y retrouverai les choix suivants :

  • Paiement (ex : Paypal ou Stripe)
  • Couleur du thème
  • Nom de l'enseigne

[EN COUR DE REDACTION]

Supprimer l'utilisation de CDN

Pour une optimisation maximale, remplacer tout les links CDN par les fichiers nécessaire au bon fonctionnement de l'application

Tests unitaires

  • Installer PHP Units si ce n’est pas déjà fait
  • Créer des tests unitaires sur les fonctions de vérification du paiement & partout où nécessaire.

Ce qui nous permettra de toujours vérifier le bon comportement de nos fonctions.

Question / Suggestion d'évolution - Connexion avec Google Agenda

Salut! J'ai remarqué dans le Readme que y'a des identifiants Paypal à indiquer pour les paiements, mais j'vois rien pour lier à d'autres agendas style google agenda.

Côté Laravel j'sais qu'on a des packages pour faire le lien facilement avec l'API de google agenda. Mais j'suppose que côté Symfony doit déjà y avoir des trucs tout fait aussi.

[JS] Clean code & refactoring fichiers js

Revoir toutes les functions effectuées des refactorings si possible.
Deporter certaines fonctions en plusieurs fichier pour une meilleure lisibilité et scalabilité.

Note: ajout de constante pour les url dans un fichier deporté.

Passer toutes les variables en anglais

Le choix des noms de variable pas forcement cohérent passant du français à l'anglais, bref pas top..
Passer toutes les propriétés + (getter/setter) en anglais.

Séparer l'affichage des données

Bonne pratique de code :
De la même façon que tu veux séparer les contrôleurs des vues, tu voudras toujours séparer ton template de mail des données que tu lui donnes.
ça te permettra de réutiliser ton template.

image

D'ailleurs, utiliser un templater comme twig pour les mails, faut les traiter comme n'importe quelle autre vue.

Faire un debriefing du projet

Pour que nous puissions avancer tous dans des bonnes directions, je suggères que l'on fasse un debriefing du projet. Expliquer le but du projet, comment le réaliser, les différents acteurs, la conception(base de donnée + relation)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.