您剛剛找到了 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}}'
此處輸入docker-compose.yaml
中的位址:
environment:
XDEBUG_CONFIG: remote_host=172.19.0.1
如果你想從你的主機連接到 MySQL 伺服器,你可以使用
docker exec -it 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
它在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)。