Sie haben gerade die Drop-App gefunden (erste Version von Boxtribute – eine Web-App, die es Organisationen erleichtert, gespendete Waren auf faire und würdevolle Weise zu beschaffen, zu lagern und an Menschen in Not zu verteilen). Dies wird derzeit durch Boxtribute 2.0 ersetzt.
Dropapp wurde ursprünglich für Drop In The Ocean entwickelt – eine norwegische NGO, die in drei Flüchtlingslagern in ganz Griechenland arbeitet. Zu den weiteren Nutzern zählen Samos Volunteers, Europe Cares, Hermine, The Free Shop Lebanon, InterEuropean Human Aid Association (IHA) und Movement on the Ground.
Wir haben die App so weiterentwickelt, dass sie nun zentral gehostet wird, sodass wir das Produkt vielen weiteren Organisationen anbieten können, und arbeiten ständig daran, das System zu verbessern und Spender- und Vertriebsorganisationen miteinander zu verbinden.
Wenn Sie daran interessiert sind, Teil dieses Projekts zu sein, schreiben Sie uns an [email protected]! Sie können auch unsere Website besuchen, um weitere Einzelheiten darüber zu erfahren, welche Art von Hilfe wir für dieses Projekt benötigen.
Installieren Sie Docker
Installieren Sie PHP 8.2 oder höher.
Stellen Sie sicher, dass Sie die PHP-Erweiterungen mbstring
, curl
, mysql
und xdebug
installiert haben. Auf Ubuntu:
apt install php-curl php-mbstring php-mysql php-xdebug
Klonen Sie dieses Repo. Wenn Sie Ubuntu ausführen, müssen Sie möglicherweise Schreibberechtigungen für den Vorlagenordner für Docker festlegen.
git clone https://github.com/boxwise/dropapp
chmod -R 777 dropapp/templates (not generally recommended - ToDo Fix bug for Ubuntu users)
Sie müssen zuerst „composer“ installieren (wir empfehlen, es global verfügbar zu machen).
curl -s https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Anschließend können Sie die erforderlichen Abhängigkeiten installieren
composer install
Um die App zu konfigurieren, kopieren Sie /library/config.php.default
und entfernen Sie die .default
im Dateinamen. Geben Sie dann die Auth0-Anmeldeinformationen vom Auth0-Client ein. Weitere Informationen zu Auth0 finden Sie in docs/auth0.md.
Um die Anwendung auszuführen, gehen wir davon aus, dass Sie Docker installiert haben. Sie können dann Folgendes ausführen:
docker-compose up
Alternativ können Sie den PHP-Entwicklungsserver verwenden
php -S localhost:8000 gcloud-entry.php
Um die Datenbank zum ersten Mal zu initialisieren, sollten Sie diesen Befehl ausführen, um das Schema zu erstellen:
vendor/bin/phinx migrate -e development
Der Datenbank-Seed db/init.sql
wird in v2 generiert und von dort kopiert.
Wenn Sie zusätzlich die Benutzer vom Seed mit auth0 verbinden und die Datenbanktabelle cms_usergroups_roles füllen möchten, öffnen Sie einen Browser und fordern Sie http://localhost:8100/cron/reseed-auth0.php
an
Sobald die Docker-Container ausgeführt werden, ist die App unter http://localhost:8100/ zugänglich.
Danach sollten Sie sich mit dem Passwort Browser_tests und einer der folgenden E-Mails bei der App anmelden können:
BoxAid (alle haben Zugang zu einer Basis namens Lesbos):
BoxCare (es sind 3 Stützpunkte verbunden – Thessaloniki, Samos, Athen):
Die meisten von uns verwenden VSCode als Code-Editor und MySQL-Workbench für den Datenbankzugriff.
Damit wir nicht über Codekonventionen nachdenken/streiten müssen, verwenden wir den automatischen Codeformatierer php-cs-fixer.
CircleCI schlägt bei Ihrer Pull-Anfrage fehl , wenn es Code gibt, der Linting-Korrekturen erfordert.
Wenn Sie VSCode verwenden, wird die Erweiterung vscode-php-cs-fixer
automatisch vorgeschlagen und wendet beim Speichern die automatische Formatierung an.
Alternativ können Sie auch laufen
php vendor/friendsofphp/php-cs-fixer/php-cs-fixer fix . --rules @PhpCsFixer
im Stammverzeichnis manuell.
Wir haben das XDebug-Remote-Debugging in der Standard-Docker-Konfiguration aktiviert, sodass Sie Ihren Code schrittweise durchgehen können. Bitte führen Sie docker-compose up --build
aus, wenn Sie das nächste Mal Ihren Server starten, um Ihr Docker-Image zu aktualisieren.
Wenn Sie VS-Code verwenden, die PHP-Debug-Erweiterung installieren und die Konfiguration „Listen for XDebug“ starten, können Sie Haltepunkte in Ihrem Code festlegen.
Bitte beachten Sie, dass nur Haltepunkte erfasst werden, die in einer Zeile mit ausführbarem Code stehen.
Unter Linux ausgeführte Docker-Container können die Adresse host.docker.internal
nicht in eine IP-Adresse auflösen. Um Xdebug unter Linux verwenden zu können, müssen Sie die interne IP-Adresse des Docker-Containers in docker-compose.yaml
angeben. Um Ihre interne Docker-Adresse herauszufinden, führen Sie Folgendes aus:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}'
Geben Sie hier die Adresse in docker-compose.yaml
ein:
environment:
XDEBUG_CONFIG: remote_host=172.19.0.1
Wenn Sie von Ihrem Host-Rechner aus eine Verbindung zum MySQL-Server herstellen möchten, können Sie dies über tun
docker exec -it mysql -u root -p
Der MySQL-Server in Ihrem Docker-Container ist auch über Port 9906 Ihres Localhosts erreichbar
mysql --host=127.0.0.1 --port=9906 -u root -p
Das Passwort für den Root-Benutzer für die Datenbank dropapp_dev
lautet dropapp_root
.
Die meisten verwenden Workbench, um auf die MySQL-Datenbank zuzugreifen. Um eine Verbindung herzustellen, müssen Sie Ihre localhost
-Adresse eingeben, z. B. 127.0.0.1
für „Hostname“ und 9906
für „Port“.
Wir verwenden Phinx, um Datenbankmigrationen durchzuführen.
Um auf die aktuelle Datenbankversion zu migrieren, führen Sie Folgendes aus:
vendor/bin/phinx migrate
So erstellen Sie einen Migrationslauf
vendor/bin/phinx create
Es erstellt eine Datei in db/migrations
. Bitte verwenden Sie diese Datei, um Ihre Datenbankmigration zu schreiben.
Wir verwenden Cypress für den Browsertest. Bitte führen Sie Cypress-Tests in Ihrer lokalen Umgebung durch
baseURL
auf Ihre lokale Adresse, z. B. localhost:8100
in cypress.json.auth0Domain
auf den Auth0-Entwicklungsmandanten fest, z. B. boxtribute-dev.eu.auth0.com
in cypress.json.Wenn die Tests 2.4 und 2.9 fehlschlagen, überprüfen Sie
Alle Tests in cypress/integrations
sollten gefunden werden und können direkt ausgeführt werden. Versuchen Sie beim Schreiben von Tests, wenn möglich, die folgenden Richtlinien zu befolgen:
cypress/support
-Dateien definiert werden – dann sind sie global verfügbar. Finden Sie den passenden Namen anhand des Namens oder erstellen Sie einen neuen. Vergessen Sie im letzteren Fall nicht, es in cypress/integrations/index.js
zu importieren. Vermeiden Sie es, verschiedene Dateinamen zu erstellen, da dies zu Chaos führen kann.clickNewUserButton()
ist besser als clickElementByTypeAndTestId('button','new-user-button')
.Wir haben bereits die Erfahrung gemacht, dass Tests in CircleCI fehlschlagen können, in der lokalen Umgebung jedoch nicht. Der Hauptgrund dafür ist, dass Cypress die Befehle in einer lokalen Entwicklungsumgebung normalerweise langsamer ausführt. Daher ein paar zusätzliche Richtlinien beim Schreiben von Tests:
cy.url().should('include', 'people_deactivated')
. Aufgrund dieser Behauptung wird Cypress auf jeden Fall warten, bis die Umleitung ausgeführt wird.cy.visit()
verwenden, können Sie sicher sein, dass der Cypress-Test wartet, bis eine Seite vollständig geladen ist. Versuchen Sie daher, so viel wie möglich mit cy.visit()
zu navigieren.Wenn Sie einen neuen Auth0-Mandanten einrichten, benötigen wir Zugriff auf die Auth0-Verwaltungs-API. Um dies zu tun
Du musst großartig und nett sein. Alles Weitere entnehmen Sie bitte unseren Beitragsrichtlinien
Schreiben Sie uns eine E-Mail an [email protected]!
Informationen zu Lizenzrechten und -einschränkungen finden Sie in der Datei LICENSE (Apache 2.0).