Drop アプリ (Boxtribute の最初のバージョン - 組織が寄付品を調達、保管し、公正かつ威厳のある方法で必要とする人々に配布することを容易にする Web アプリ) を見つけました。これは現在、Boxtribute 2.0 に置き換えられる処理中です。
Dropapp は当初、ギリシャ全土の 3 つの難民キャンプで活動しているノルウェーの NGO である Drop In The Ocean のために開発されました。他のユーザーには、Samos Volunteers、Europe Cares、Hermine、The Free Shop Lebanon、欧州間人間援助協会 (IHA)、Movement on the Ground などが含まれます。
私たちはアプリを一元的にホストできるように進化させ、より多くの組織に製品を提供できるようにし、システムの改善と寄付者組織と販売代理店組織を相互に結び付けるために継続的に取り組んでいます。
このプロジェクトへの参加に興味がある場合は、[email protected] までご連絡ください。このプロジェクトで必要な支援の詳細については、当社の Web サイトをご覧ください。
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 資格情報を入力します。 Auth0 の詳細については、docs/auth0.md を確認してください。
アプリケーションを実行するには、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 (全員が Lesvos と呼ばれる 1 つの拠点にアクセスできます):
BoxCare (テッサロニキ、サモス、アテネの 3 つの拠点が関連付けられています):
私たちのほとんどはコード エディタとして VSCode を使用し、データベース アクセスには MySQL ワークベンチを使用します。
そのため、コード規約について考えたり議論したりする必要はありません。php-cs-fixer 自動コード フォーマッタを使用しています。
lint 修正が必要なコードがある場合、CircleCI はプル リクエストに失敗します。
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 デバッグ拡張機能をインストールして「Listen for 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
ファイルの 1 つで定義する必要があります。そうすれば、それらはグローバルに使用できるようになります。一致するものを名前で検索するか、新しいものを作成します。後者の場合は、 cypress/integrations/index.js
にインポートすることを忘れないでください。混乱を招く可能性があるため、さまざまなファイル名を作成しないでください。clickNewUserButton()
clickElementByTypeAndTestId('button','new-user-button')
よりも優れています。CircleCI ではテストが失敗する可能性がありますが、ローカル環境では失敗しないことを以前に経験しました。その主な理由は、Cypress が通常ローカル開発環境でコマンドの実行速度を遅くしていることです。したがって、テストを作成する際には、いくつかの追加ガイドラインがあります。
cy.url().should('include', 'people_deactivated')
。このアサーションにより、cypress はリダイレクトが実行されるまで確実に待機します。cy.visit()
使用する場合にのみ、サイプレス テストはページが完全にロードされるまで待機することができます。したがって、 cy.visit()
を使用してできるだけ移動するようにしてください。新しい Auth0 テナントをセットアップする場合は、Auth0 Management API へのアクセスが必要です。これを行うには
あなたは素晴らしくて親切でなければなりません。その他すべてについては、投稿ガイドラインをご覧ください。
[email protected] までメールをお送りください。
ライセンスの権利と制限については、LICENSE ファイルを参照してください (Apache 2.0)。