Vous venez de découvrir l'application Drop (première version de Boxtribute - une application Web qui permet aux organisations de rechercher, de stocker et de distribuer facilement des biens donnés aux personnes dans le besoin de manière équitable et digne). Celui-ci est actuellement en train d'être remplacé par Boxtribute 2.0.
Dropapp a été initialement développé pour Drop In The Ocean, une ONG norvégienne qui travaille dans trois camps de réfugiés à travers la Grèce. Parmi les autres utilisateurs figurent Samos Volunteers, Europe Cares, Hermine, The Free Shop Lebanon, l'Association intereuropéenne d'aide humanitaire (IHA) et Movement on the Ground.
Nous avons fait évoluer l'application pour qu'elle soit désormais hébergée de manière centralisée afin de pouvoir proposer le produit à beaucoup plus d'organisations, et nous travaillons constamment à améliorer le système et à connecter les organisations donatrices et distributrices entre elles.
Si vous êtes intéressé à faire partie de ce projet, écrivez-nous à [email protected] ! Vous pouvez également consulter notre site Web pour plus de détails sur le type d'aide dont nous avons besoin pour ce projet.
Installer Docker
Installez PHP 8.2 ou version ultérieure.
Assurez-vous que les extensions PHP mbstring
, curl
, mysql
et xdebug
sont installées. Sur Ubuntu :
apt install php-curl php-mbstring php-mysql php-xdebug
Clonez ce dépôt. Si vous utilisez Ubuntu, vous devrez peut-être définir des autorisations d'écriture sur le dossier des modèles pour Docker.
git clone https://github.com/boxwise/dropapp
chmod -R 777 dropapp/templates (not generally recommended - ToDo Fix bug for Ubuntu users)
Vous devez d'abord installer « composer » (nous vous suggérons de le rendre disponible dans le monde entier)
curl -s https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Vous pouvez installer les dépendances requises puis en utilisant
composer install
Pour configurer l'application, copiez /library/config.php.default
et supprimez le .default
dans le nom de fichier. Remplissez ensuite les informations d'identification Auth0 du client Auth0. Veuillez consulter docs/auth0.md pour plus d'informations sur Auth0.
Pour exécuter l’application, nous supposons que Docker est installé. Vous pouvez alors exécuter :
docker-compose up
Alternativement, vous pouvez exécuter en utilisant le serveur de développement PHP
php -S localhost:8000 gcloud-entry.php
Pour initialiser la base de données pour la première fois, vous devez exécuter cette commande pour créer le schéma :
vendor/bin/phinx migrate -e development
La graine de base de données db/init.sql
est générée dans la v2 et copiée à partir de là.
Si vous souhaitez également connecter les utilisateurs de la graine à auth0 et remplir la table de base de données cms_usergroups_roles, ouvrez un navigateur et demandez http://localhost:8100/cron/reseed-auth0.php
Une fois les conteneurs Docker exécutés, l'application est accessible sur http://localhost:8100/
Après cela, vous devriez pouvoir vous connecter à l'application en utilisant le mot de passe Browser_tests et l'un des e-mails suivants :
BoxAid (tous ont accès à une base appelée Lesvos) :
BoxCare (il y a 3 bases associées - Thessalonique, Samos, Athènes) :
La plupart d'entre nous utilisent VSCode comme éditeur de code et MySQL Workbench pour accéder à la base de données.
Nous n'avons donc pas à réfléchir/argumenter sur les conventions de code, nous utilisons le formateur de code automatique php-cs-fixer.
CircleCI échouera à votre Pull-Request s'il existe un code nécessitant des correctifs de peluchage.
Si vous utilisez VSCode, l'extension vscode-php-cs-fixer
sera automatiquement suggérée et appliquera le formatage automatique lors de l'enregistrement.
Alternativement, vous pouvez exécuter
php vendor/friendsofphp/php-cs-fixer/php-cs-fixer fix . --rules @PhpCsFixer
à la racine manuellement.
Nous avons activé le débogage à distance XDebug dans la configuration Docker par défaut, afin que vous puissiez parcourir votre code. Veuillez exécuter docker-compose up --build
la prochaine fois que vous démarrerez votre serveur pour mettre à jour votre image Docker.
Si vous utilisez VS Code, si vous installez l'extension PHP Debug et démarrez la configuration « Écouter XDebug », vous pouvez alors définir des points d'arrêt dans votre code.
Veuillez noter que seuls les points d'arrêt qui se trouvent dans une ligne avec du code exécutable sont capturés.
Les conteneurs Docker exécutés sous Linux ne peuvent pas résoudre l'adresse host.docker.internal
en une adresse IP. Pour utiliser Xdebug sous Linux, vous devez spécifier l'adresse IP interne du conteneur Docker dans docker-compose.yaml
. Pour connaître votre adresse Docker interne, exécutez
docker inspect -f '{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}'
Entrez l'adresse dans docker-compose.yaml
ici :
environment:
XDEBUG_CONFIG: remote_host=172.19.0.1
Si vous souhaitez vous connecter au serveur MySQL depuis votre machine hôte, vous pouvez le faire en utilisant
docker exec -it mysql -u root -p
Le serveur mysql de votre conteneur Docker est également accessible sur le port 9906 de votre hôte local
mysql --host=127.0.0.1 --port=9906 -u root -p
Le mot de passe de l'utilisateur root de la base de données dropapp_dev
est dropapp_root
.
La plupart des utilisateurs utilisent Workbench pour accéder à la base de données MySQL. Pour établir une connexion, vous devez entrer votre adresse localhost
, par exemple 127.0.0.1
pour « Nom d'hôte » et 9906
pour « Port ».
Nous utilisons Phinx pour exécuter des migrations de bases de données.
Pour migrer vers la version actuelle de la base de données, exécutez
vendor/bin/phinx migrate
Pour créer une exécution de migration
vendor/bin/phinx create
Il crée un fichier dans db/migrations
. Veuillez utiliser ce fichier pour écrire votre migration de base de données.
Nous utilisons Cypress pour le test du navigateur. Pour exécuter des tests Cypress sur votre environnement local, veuillez
baseURL
sur votre adresse locale, par exemple localhost:8100
dans cypress.json.auth0Domain
sur le locataire de développement Auth0, par exemple boxtribute-dev.eu.auth0.com
dans cypress.json.Si les tests 2.4 et 2.9 échouent, vérifiez
Tous les tests dans cypress/integrations
doivent être trouvés et peuvent être directement exécutés. Lorsque vous rédigez des tests, essayez de suivre ces directives si possible :
cypress/support
- elles sont alors disponibles dans le monde entier. Trouvez celui qui correspond par son nom ou créez-en un nouveau. Dans ce dernier cas, n'oubliez pas de l'importer dans cypress/integrations/index.js
. Évitez de créer des noms de fichiers divers car cela a tendance à conduire au chaos.clickNewUserButton()
est meilleur que clickElementByTypeAndTestId('button','new-user-button')
.Nous avons déjà constaté que les tests peuvent échouer dans CircleCI, mais pas dans l'environnement local. La raison principale en est que Cypress exécute généralement les commandes plus lentement dans un environnement de développement local. Par conséquent, quelques directives supplémentaires lors de la rédaction du test :
cy.url().should('include', 'people_deactivated')
. En raison de cette affirmation, Cypress attendra certainement que la redirection soit exécutée.cy.visit()
que vous pouvez être sûr que le test cyprès attend qu'une page soit complètement chargée. Par conséquent, essayez de naviguer autant que possible avec cy.visit()
.Si vous configurez un nouveau locataire Auth0, nous avons besoin d'accéder à l'API de gestion Auth0. Pour ce faire
Tu dois être génial et gentil. Pour tout le reste, veuillez consulter nos directives de contribution
Envoyez-nous un e-mail à [email protected] !
Consultez le fichier LICENSE pour connaître les droits et limitations de licence (Apache 2.0).