Anda baru saja menemukan Drop App (versi pertama Boxtribute - sebuah aplikasi web, yang memudahkan organisasi untuk mencari, menyimpan, dan mendistribusikan barang sumbangan kepada orang-orang yang membutuhkan dengan cara yang adil dan bermartabat). Saat ini sedang dalam proses digantikan oleh Boxtribute 2.0.
Dropapp awalnya dikembangkan untuk Drop In The Ocean - sebuah LSM Norwegia yang bekerja di tiga kamp pengungsi di seluruh Yunani. Pengguna lainnya termasuk Samos Volunteers, Europe Cares, Hermine, The Free Shop Lebanon, Intereuropean Human Aid Association (IHA) dan Movement on the Ground.
Kami telah mengembangkan aplikasi ini agar dapat dihosting secara terpusat sehingga kami dapat menawarkan produk ke lebih banyak organisasi, dan terus bekerja untuk meningkatkan sistem dan menghubungkan organisasi donor dan distributor satu sama lain.
Jika Anda tertarik menjadi bagian dari proyek ini, kirimkan email kepada kami di [email protected]! Anda juga dapat mengunjungi situs web kami untuk rincian lebih lanjut tentang jenis bantuan yang kami perlukan dalam proyek ini.
Instal Docker
Instal PHP 8.2 atau lebih baru.
Pastikan Anda telah menginstal ekstensi mbstring
, curl
, mysql
dan xdebug
PHP. Di Ubuntu:
apt install php-curl php-mbstring php-mysql php-xdebug
Kloning repo ini. Jika Anda menjalankan Ubuntu, Anda mungkin perlu mengatur izin menulis ke folder templat untuk Docker.
git clone https://github.com/boxwise/dropapp
chmod -R 777 dropapp/templates (not generally recommended - ToDo Fix bug for Ubuntu users)
Anda harus menginstal 'komposer' terlebih dahulu (kami menyarankan agar tersedia secara global)
curl -s https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Anda dapat menginstal dependensi yang diperlukan kemudian menggunakan
composer install
Untuk mengonfigurasi aplikasi, salin /library/config.php.default
dan hapus .default
di nama file. Kemudian isi kredensial Auth0 dari klien Auth0. Silakan periksa docs/auth0.md untuk informasi lebih lanjut mengenai Auth0.
Untuk menjalankan aplikasi, kami berasumsi Anda telah menginstal Docker. Anda kemudian dapat menjalankan:
docker-compose up
Alternatifnya, Anda dapat menjalankannya menggunakan server pengembangan PHP
php -S localhost:8000 gcloud-entry.php
Untuk menginisialisasi database pertama kali, Anda harus menjalankan perintah ini untuk membuat skema:
vendor/bin/phinx migrate -e development
Seed database db/init.sql
dibuat di v2 dan disalin dari sana.
Jika Anda juga ingin menghubungkan pengguna dari seed ke auth0 dan mengisi tabel db cms_usergroups_roles lalu buka browser dan minta http://localhost:8100/cron/reseed-auth0.php
Setelah wadah buruh pelabuhan berjalan, aplikasi dapat diakses di http://localhost:8100/
Setelah ini, Anda seharusnya bisa masuk ke aplikasi menggunakan kata sandi Browser_tests dan salah satu email berikut:
BoxAid (semua memiliki akses ke satu basis yang disebut Lesvos):
BoxCare (ada 3 basis yang terkait - Thessaloniki, Samos, Athena):
Sebagian besar dari kita menggunakan VSCode sebagai editor kode dan meja kerja MySQL untuk akses database.
Jadi kita tidak perlu memikirkan/berdebat mengenai konvensi kode, kita menggunakan pemformat kode otomatis php-cs-fixer.
CircleCI akan menggagalkan Permintaan Tarik Anda jika ada kode yang memerlukan perbaikan linting.
Jika Anda menggunakan VSCode, ekstensi vscode-php-cs-fixer
akan disarankan secara otomatis dan menerapkan format otomatis saat disimpan.
Alternatifnya, Anda bisa lari
php vendor/friendsofphp/php-cs-fixer/php-cs-fixer fix . --rules @PhpCsFixer
di root secara manual.
Kami telah mengaktifkan debugging jarak jauh XDebug di konfigurasi Docker default, sehingga Anda dapat menelusuri kode Anda. Silakan jalankan docker-compose up --build
saat berikutnya Anda memulai server untuk memperbarui image buruh pelabuhan Anda.
Jika Anda menggunakan VS Code, jika Anda menginstal ekstensi PHP Debug dan memulai konfigurasi 'Dengarkan XDebug', Anda kemudian dapat mengatur breakpoint dalam kode Anda.
Perlu diketahui bahwa hanya breakpoint yang tertangkap yang berada dalam satu baris dengan kode yang dapat dieksekusi.
Kontainer Docker yang berjalan di linux tidak dapat menyelesaikan alamat host.docker.internal
ke alamat ip. Untuk menggunakan Xdebug di linux Anda harus menentukan alamat ip internal wadah buruh pelabuhan di docker-compose.yaml
. Untuk mengetahui alamat buruh pelabuhan internal Anda, jalankan
docker inspect -f '{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}'
Masukkan alamat di docker-compose.yaml
di sini:
environment:
XDEBUG_CONFIG: remote_host=172.19.0.1
Jika Anda ingin terhubung ke server MySQL dari mesin host Anda, Anda dapat melakukannya menggunakan
docker exec -it mysql -u root -p
Server mysql di kontainer buruh pelabuhan Anda juga dapat dijangkau pada port 9906 dari localhost Anda
mysql --host=127.0.0.1 --port=9906 -u root -p
Kata sandi untuk pengguna root untuk db dropapp_dev
adalah dropapp_root
.
Sebagian besar penggunaan menggunakan meja kerja untuk mengakses database MySQL. Untuk membuat koneksi, Anda perlu memasukkan alamat localhost
Anda, misalnya 127.0.0.1
, untuk 'Nama Host' dan 9906
untuk 'Port'.
Kami menggunakan Phinx untuk menjalankan migrasi basis data.
Untuk bermigrasi ke versi database saat ini, jalankan
vendor/bin/phinx migrate
Untuk membuat proses migrasi
vendor/bin/phinx create
Itu membuat file di db/migrations
. Silakan gunakan file ini untuk menulis migrasi db Anda.
Kami menggunakan Cypress untuk pengujian Browser. Silakan menjalankan tes Cypress di lingkungan lokal Anda
baseURL
ke alamat lokal Anda, misalnya localhost:8100
di cypress.json.auth0Domain
ke penyewa Auth0 pengembangan, misalnya boxtribute-dev.eu.auth0.com
di cypress.json.Jika pengujian 2.4 dan 2.9 gagal, periksa
Semua pengujian di cypress/integrations
harus ditemukan dan dapat langsung dijalankan. Saat menulis tes, coba ikuti panduan berikut jika memungkinkan:
cypress/support
- kemudian fungsi tersebut tersedia secara global. Temukan yang cocok berdasarkan nama atau buat yang baru. Dalam kasus terakhir, jangan lupa untuk mengimpornya dalam cypress/integrations/index.js
. Hindari membuat nama file yang bermacam-macam karena cenderung menimbulkan kekacauan.clickNewUserButton()
lebih baik daripada clickElementByTypeAndTestId('button','new-user-button')
.Kami telah mengalami sebelumnya bahwa pengujian bisa gagal di CircleCI, tetapi tidak di lingkungan lokal. Alasan utamanya adalah Cypress biasanya menjalankan perintah lebih lambat di lingkungan pengembang lokal. Oleh karena itu, beberapa pedoman tambahan saat menulis tes:
cy.url().should('include', 'people_deactivated')
. Karena pernyataan ini, cypress pasti akan menunggu hingga pengalihan dijalankan.cy.visit()
Anda dapat yakin bahwa pengujian cypress menunggu hingga halaman dimuat sepenuhnya. Oleh karena itu, cobalah bernavigasi sebanyak mungkin dengan cy.visit()
.Jika Anda menyiapkan penyewa Auth0 baru, kami memerlukan akses ke API Manajemen Auth0. Untuk melakukan ini
Anda harus menjadi luar biasa dan baik hati. Untuk hal lainnya, silakan lihat pedoman kontribusi kami
Kirimkan email kepada kami ke [email protected]!
Lihat file LISENSI untuk mengetahui hak dan batasan lisensi (Apache 2.0).