Вы только что нашли приложение Drop (первая версия Boxtribute — веб-приложения, которое позволяет организациям легко и справедливо находить, хранить и распределять пожертвованные товары нуждающимся людям). В настоящее время он находится в процессе замены на Boxtribute 2.0.
Dropapp изначально был разработан для Drop In The Ocean — норвежской неправительственной организации, которая работает в трёх лагерях беженцев по всей Греции. Среди других пользователей — Samos Volunteers, Europe Cares, Hermine, The Free ShopLiban, Межевропейская ассоциация помощи людям (IHA) и Movement on the Ground.
Мы усовершенствовали приложение, чтобы теперь оно размещалось централизованно, чтобы мы могли предлагать продукт гораздо большему количеству организаций, и постоянно работаем над улучшением системы и объединением организаций-доноров и дистрибьюторов друг с другом.
Если вы заинтересованы в участии в этом проекте, напишите нам по адресу [email protected]! Вы также можете посетить наш веб-сайт для получения более подробной информации о том, какая помощь нам нужна в этом проекте.
Установить Докер
Установите PHP 8.2 или новее.
Убедитесь, что у вас установлены расширения PHP mbstring
, curl
, mysql
и xdebug
. В Убунту:
apt install php-curl php-mbstring php-mysql php-xdebug
Клонируйте этот репозиторий. Если вы используете Ubuntu, вам может потребоваться установить права на запись в папку шаблонов для Docker.
git clone https://github.com/boxwise/dropapp
chmod -R 777 dropapp/templates (not generally recommended - ToDo Fix bug for Ubuntu users)
Сначала вам необходимо установить «composer» (мы предлагаем сделать его доступным по всему миру)
curl -s https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Затем вы можете установить необходимые зависимости, используя
composer install
Чтобы настроить приложение, скопируйте /library/config.php.default
и удалите расширение .default
в имени файла. Затем заполните учетные данные Auth0 от клиента Auth0. Пожалуйста, проверьте docs/auth0.md для получения дополнительной информации об Auth0.
Мы предполагаем, что для запуска приложения у вас установлен Docker. Затем вы можете запустить:
docker-compose up
Альтернативно, вы можете запустить с помощью сервера разработки PHP.
php -S localhost:8000 gcloud-entry.php
Чтобы инициализировать базу данных в первый раз, вам следует запустить следующую команду для создания схемы:
vendor/bin/phinx migrate -e development
Начальное значение базы данных db/init.sql
создается в версии 2 и копируется оттуда.
Если вы хотите дополнительно подключить пользователей из начального числа к auth0 и заполнить таблицу базы данных cms_usergroups_roles, откройте браузер и запросите http://localhost:8100/cron/reseed-auth0.php
После запуска контейнеров докеров приложение становится доступным по адресу http://localhost:8100/.
После этого вы сможете войти в приложение, используя пароль Browser_tests и один из следующих адресов электронной почты:
BoxAid (все имеют доступ к одной базе под названием Лесбос):
BoxCare (объединено 3 базы — Салоники, Самос, Афины):
Большинство из нас используют VSCode в качестве редактора кода и инструментальную среду MySQL для доступа к базе данных.
Поэтому нам не нужно думать/спорить о соглашениях по коду, мы используем автоматический форматировщик кода php-cs-fixer.
CircleCI отклонит ваш запрос на включение, если есть какой-либо код, требующий исправлений при проверке.
Если вы используете VSCode, расширение vscode-php-cs-fixer
будет предложено автоматически и при сохранении будет применено автоматическое форматирование.
Альтернативно, вы можете запустить
php vendor/friendsofphp/php-cs-fixer/php-cs-fixer fix . --rules @PhpCsFixer
в корень вручную.
Мы включили удаленную отладку XDebug в конфигурации Docker по умолчанию, чтобы вы могли пошагово выполнять свой код. Пожалуйста, запустите docker-compose up --build
при следующем запуске сервера, чтобы обновить образ Docker.
Если вы используете VS Code, установите расширение PHP Debug и запустите конфигурацию «Прослушивание XDebug», после чего вы сможете установить точки останова в своем коде.
Имейте в виду, что перехватываются только точки останова, расположенные в строке с исполняемым кодом.
Контейнеры Docker, работающие в Linux, не могут преобразовать адрес host.docker.internal
в IP-адрес. Чтобы использовать Xdebug в Linux, вам необходимо указать внутренний IP-адрес контейнера докеров в docker-compose.yaml
. Чтобы узнать свой внутренний адрес докера, запустите
docker inspect -f '{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}'
Введите адрес в docker-compose.yaml
здесь:
environment:
XDEBUG_CONFIG: remote_host=172.19.0.1
Если вы хотите подключиться к серверу MySQL со своего хост-компьютера, вы можете сделать это, используя
docker exec -it mysql -u root -p
Сервер MySQL в вашем докер-контейнере также доступен через порт 9906 вашего локального хоста.
mysql --host=127.0.0.1 --port=9906 -u root -p
Пароль для пользователя root для базы данных dropapp_dev
— dropapp_root
.
Большинство пользователей используют рабочую среду для доступа к базе данных MySQL. Чтобы установить соединение, вам необходимо ввести адрес localhost
, например 127.0.0.1
для «Имени хоста» и 9906
для «Порта».
Мы используем Phinx для миграции базы данных.
Для перехода на текущую версию базы данных запустите
vendor/bin/phinx migrate
Чтобы создать прогон миграции
vendor/bin/phinx create
Он создает файл в db/migrations
. Используйте этот файл для записи миграции базы данных.
Мы используем Cypress для браузерного теста. Чтобы запустить тесты Cypress в вашей локальной среде, пожалуйста,
baseURL
на свой локальный адрес, например localhost:8100
в cypress.json.auth0Domain
для клиента Auth0 разработки, например boxtribute-dev.eu.auth0.com
в cypress.json.Если тесты 2.4 и 2.9 не пройдены, проверьте
Все тесты в cypress/integrations
должны быть найдены и могут быть выполнены напрямую. При написании тестов старайтесь по возможности следовать этим рекомендациям:
cypress/support
- тогда они будут доступны глобально. Найдите подходящий по названию или создайте новый. В последнем случае не забудьте импортировать его в cypress/integrations/index.js
. Избегайте создания разных имен файлов, поскольку это может привести к хаосу.clickNewUserButton()
лучше, чем clickElementByTypeAndTestId('button','new-user-button')
.Раньше мы сталкивались с тем, что тесты могут не пройти в CircleCI, но не в локальной среде. Основная причина этого в том, что Cypress обычно выполняет команды медленнее в локальной среде разработки. Поэтому несколько дополнительных рекомендаций при написании теста:
cy.url().should('include', 'people_deactivated')
. Благодаря этому утверждению cypress определенно будет ждать выполнения перенаправления.cy.visit()
вы можете быть уверены, что кипарисовый тест дождется полной загрузки страницы. Поэтому постарайтесь как можно больше перемещаться с помощью cy.visit()
.Если вы настраиваете нового клиента Auth0, нам необходим доступ к API управления Auth0. Чтобы сделать это
Ты должен быть замечательным и добрым. Все остальное можно найти в наших правилах по вкладам.
Напишите нам по адресу [email protected]!
Лицензионные права и ограничения см. в файле LICENSE (Apache 2.0).