คุณเพิ่งพบ Drop App (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]! คุณสามารถตรวจสอบเว็บไซต์ของเราเพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับความช่วยเหลือที่เราต้องการในโครงการนี้ได้
ติดตั้งนักเทียบท่า
ติดตั้ง PHP 8.2 หรือใหม่กว่า
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งส่วนขยาย mbstring
, curl
, mysql
และ xdebug
PHP แล้ว บนอูบุนตู:
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)
คุณต้องติดตั้ง 'ผู้แต่ง' ก่อน (เราขอแนะนำให้เปิดให้ใช้งานทั่วโลก)
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
Seed ฐานข้อมูล db/init.sql
ถูกสร้างขึ้นในเวอร์ชัน 2 และคัดลอกจากที่นั่น
หากคุณต้องการเชื่อมต่อผู้ใช้จาก seed ไปยัง auth0 เพิ่มเติม และเติมตาราง db cms_usergroups_roles ให้เปิดเบราว์เซอร์และขอ http://localhost:8100/cron/reseed-auth0.php
เมื่อคอนเทนเนอร์นักเทียบท่าทำงานอยู่ แอปจะสามารถเข้าถึงได้ที่ http://localhost:8100/
หลังจากนี้ คุณจะสามารถเข้าสู่แอปได้โดยใช้รหัสผ่าน Browser_tests และอีเมลใดอีเมลหนึ่งต่อไปนี้:
BoxAid (ทั้งหมดสามารถเข้าถึงฐานเดียวที่เรียกว่า Lesvos):
BoxCare (มี 3 ฐานที่เกี่ยวข้อง - เทสซาโลนิกิ, ซามอส, เอเธนส์):
พวกเราส่วนใหญ่ใช้ VSCode เป็นตัวแก้ไขโค้ดและเวิร์กเบนช์ MySQL สำหรับการเข้าถึงฐานข้อมูล
ดังนั้นเราจึงไม่จำเป็นต้องคิด/โต้เถียงเกี่ยวกับแบบแผนของโค้ด เรากำลังใช้ตัวจัดรูปแบบโค้ดอัตโนมัติของ php-cs-fixer
CircleCI จะทำให้ Pull-Request ของคุณ ล้มเหลว หากมีโค้ดใดๆ ที่ต้องแก้ไข Linting
หากคุณใช้ VSCode ส่วนขยาย vscode-php-cs-fixer
จะถูกแนะนำโดยอัตโนมัติ และใช้รูปแบบอัตโนมัติเมื่อบันทึก
หรือคุณสามารถเรียกใช้
php vendor/friendsofphp/php-cs-fixer/php-cs-fixer fix . --rules @PhpCsFixer
ในรูทด้วยตนเอง
เราได้เปิดใช้งานการแก้ไขข้อบกพร่องระยะไกล XDebug ในการกำหนดค่า Docker เริ่มต้น ดังนั้นคุณจึงสามารถข้ามผ่านโค้ดของคุณได้ โปรดเรียกใช้ docker-compose up --build
ในครั้งต่อไปที่คุณเริ่มต้นเซิร์ฟเวอร์เพื่ออัปเดตอิมเมจนักเทียบท่าของคุณ
หากคุณใช้ VS Code หากคุณติดตั้งส่วนขยาย PHP Debug และเริ่มการกำหนดค่า 'Listen for XDebug' คุณสามารถตั้งค่าเบรกพอยต์ในโค้ดของคุณได้
โปรดทราบว่ามีเพียงเบรกพอยต์เท่านั้นที่ถูกจับได้ซึ่งอยู่ในบรรทัดที่มีโค้ดปฏิบัติการ
คอนเทนเนอร์นักเทียบท่าที่ทำงานบน 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
รหัสผ่านสำหรับผู้ใช้รูทสำหรับ db dropapp_dev
คือ dropapp_root
การใช้งานส่วนใหญ่ใช้ workbench เพื่อเข้าถึงฐานข้อมูล MySQL ในการสร้างการเชื่อมต่อ คุณต้องป้อน localhost
-address เช่น 127.0.0.1
สำหรับ 'Hostname' และ 9906
สำหรับ 'Port'
เรากำลังใช้ Phinx เพื่อดำเนินการย้ายฐานข้อมูล
หากต้องการย้ายไปยังเวอร์ชันฐานข้อมูลปัจจุบันให้รัน
vendor/bin/phinx migrate
เพื่อสร้างการดำเนินการย้ายข้อมูล
vendor/bin/phinx create
มันสร้างไฟล์ใน db/migrations
โปรดใช้ไฟล์นี้เพื่อเขียนการย้ายฐานข้อมูลของคุณ
เราใช้ Cypress สำหรับการทดสอบเบราว์เซอร์ หากต้องการรันการทดสอบ Cypress ในสภาพแวดล้อมท้องถิ่นของคุณ โปรด
baseURL
เป็นที่อยู่ในเครื่องของคุณ เช่น localhost:8100
ใน cypress.jsonauth0Domain
ให้กับผู้เช่า 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()
คุณจะมั่นใจได้ว่าการทดสอบ cypress จะรอจนกว่าหน้าเว็บจะโหลดเต็ม ดังนั้นให้พยายามนำทางให้มากที่สุดด้วย cy.visit()
หากคุณกำลังตั้งค่าผู้เช่า Auth0 ใหม่ เราจำเป็นต้องเข้าถึง Auth0 Management API เพื่อที่จะทำเช่นนี้
คุณจะต้องเก่งและใจดี สำหรับทุกสิ่งทุกอย่าง โปรดดูหลักเกณฑ์การสนับสนุนของเรา
ส่งอีเมลถึงเราที่ [email protected]!
ดูไฟล์ LICENSE สำหรับสิทธิ์และข้อจำกัดของใบอนุญาต (Apache 2.0)