您刚刚找到了 Drop 应用程序(Boxtribute 的第一个版本 - 一个网络应用程序,使组织可以轻松地以公平和有尊严的方式采购、存储和分发捐赠的物品给有需要的人)。目前正在被 Boxtribute 2.0 取代。
Dropapp 最初是为 Drop In The Ocean 开发的,这是一家挪威非政府组织,在希腊各地的三个难民营工作。其他用户包括 Samos Volunteers、Europe Cares、Hermine、The Free Shop Lebanon、Intereuropean Human Aid Association (IHA) 和 Movement on the Ground。
我们已经将该应用程序发展为集中托管,以便我们可以向更多组织提供产品,并不断努力改进系统并将捐助者和分销商组织相互连接起来。
如果您有兴趣参与该项目,请写信给我们 [email protected]!您还可以访问我们的网站,了解有关我们在该项目上需要的帮助类型的更多详细信息。
安装 Docker
安装 PHP 8.2 或更高版本。
确保您已安装mbstring
、 curl
、 mysql
和xdebug
PHP 扩展。在Ubuntu上:
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
在 v2 中生成并从那里复制。
如果您还想将用户从种子连接到 auth0 并填充数据库表 cms_usergroups_roles,则打开浏览器并请求http://localhost:8100/cron/reseed-auth0.php
docker 容器运行后,可以通过 http://localhost:8100/ 访问该应用程序
此后,您应该能够使用密码 Browser_tests 和以下电子邮件之一登录应用程序:
BoxAid(所有人都可以访问一个名为莱斯沃斯岛的基地):
BoxCare(有 3 个相关基地 - 塞萨洛尼基、萨摩斯、雅典):
我们大多数人使用 VSCode 作为代码编辑器和 MySQL 工作台来访问数据库。
所以我们不必考虑/争论代码约定,我们使用 php-cs-fixer 自动代码格式化程序。
如果有任何代码需要 linting 修复,CircleCI 将使您的 Pull-Request失败。
如果您使用 VSCode,将自动建议vscode-php-cs-fixer
扩展并在保存时应用自动格式。
或者,您可以运行
php vendor/friendsofphp/php-cs-fixer/php-cs-fixer fix . --rules @PhpCsFixer
手动在根目录中。
我们在默认 Docker 配置中启用了 XDebug 远程调试,因此您可以单步执行代码。请在下次启动服务器时运行docker-compose up --build
来更新 docker 镜像。
如果您使用 VS Code,安装 PHP 调试扩展并启动“监听 XDebug”配置,则可以在代码中设置断点。
请注意,只有与可执行代码位于同一行的断点才会被捕获。
在 Linux 上运行的 Docker 容器无法将地址host.docker.internal
解析为 IP 地址。要在 Linux 上使用 Xdebug,您必须在docker-compose.yaml
中指定 docker 容器的内部 IP 地址。要找出您的内部 docker 地址,请运行
docker inspect -f '{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}' <NAME OF YOUR DOCKER CONTAINER>
此处输入docker-compose.yaml
中的地址:
environment:
XDEBUG_CONFIG: remote_host=172.19.0.1
如果你想从你的主机连接到 MySQL 服务器,你可以使用
docker exec -it <name of the db docker container> mysql -u root -p
docker 容器中的 mysql 服务器也可以通过本地主机的端口 9906 访问
mysql --host=127.0.0.1 --port=9906 -u root -p
数据库dropapp_dev
的 root 用户的密码是dropapp_root
。
大多数使用工作台来访问MySQL数据库。要建立连接,您需要输入localhost
地址,例如127.0.0.1
表示“主机名”, 9906
表示“端口”。
我们使用 Phinx 来运行数据库迁移。
要迁移到当前数据库版本,请运行
vendor/bin/phinx migrate
创建迁移运行
vendor/bin/phinx create <NameOfMigrationInCamelCaseFormat>
它在db/migrations
中创建一个文件。请使用此文件来编写您的数据库迁移。
我们使用 Cypress 进行浏览器测试。要在您的本地环境中运行 Cypress 测试,请
baseURL
设置为您的本地地址,例如 cypress.json 中的localhost:8100
。auth0Domain
设置为开发 Auth0 租户,例如 cypress.json 中的boxtribute-dev.eu.auth0.com
。如果测试 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()
时,您才能确保 cypress 测试等待页面完全加载。因此,请尝试尽可能使用cy.visit()
进行导航。如果您要设置新的 Auth0 租户,我们需要访问 Auth0 管理 API。为此
你一定要很优秀而且很善良。对于其他一切,请参阅我们的贡献指南
请发送电子邮件至 [email protected]!
有关许可权利和限制,请参阅 LICENSE 文件 (Apache 2.0)。