방금 Drop 앱(Boxtribute의 첫 번째 버전 - 조직이 공정하고 품위 있는 방식으로 도움이 필요한 사람들에게 기증된 물품을 쉽게 소싱, 저장 및 배포할 수 있게 해주는 웹 앱)을 찾았습니다. 이는 현재 Boxtribute 2.0으로 대체되는 과정에 있습니다.
Dropapp은 처음에 그리스 전역의 3개 난민 캠프에서 활동하는 노르웨이 NGO인 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)
먼저 '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에 연결하고 db 테이블 cms_usergroups_roles를 채우려면 브라우저를 열고 http://localhost:8100/cron/reseed-auth0.php
요청하십시오.
Docker 컨테이너가 실행되면 http://localhost:8100/에서 앱에 액세스할 수 있습니다.
그런 다음 비밀번호 Browser_tests와 다음 이메일 중 하나를 사용하여 앱에 로그인할 수 있습니다.
BoxAid(모두 Lesvos라는 하나의 기지에 액세스할 수 있음):
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 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
db dropapp_dev
의 루트 사용자 비밀번호는 dropapp_root
입니다.
대부분의 사용자는 워크벤치를 사용하여 MySQL 데이터베이스에 액세스합니다. 연결을 설정하려면 localhost
주소(예: '호스트 이름'에 127.0.0.1
, '포트'에 9906
를 입력해야 합니다.
우리는 데이터베이스 마이그레이션을 실행하기 위해 Phinx를 사용하고 있습니다.
현재 데이터베이스 버전으로 마이그레이션하려면 다음을 실행하세요.
vendor/bin/phinx migrate
마이그레이션 실행을 생성하려면
vendor/bin/phinx create
db/migrations
에 파일을 생성합니다. 이 파일을 사용하여 DB 마이그레이션을 작성하세요.
브라우저 테스트에는 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')
URL과 같은 어설션을 추가하세요. 이 주장으로 인해 Cypress는 리디렉션이 실행될 때까지 확실히 기다립니다.cy.visit()
사용하는 경우에만 페이지가 완전히 로드될 때까지 Cypress 테스트가 대기하는지 확인할 수 있습니다. 그러므로 cy.visit()
사용하여 최대한 많은 탐색을 시도하십시오.새로운 Auth0 테넌트를 설정하는 경우 Auth0 관리 API에 대한 액세스가 필요합니다. 이를 위해서는
당신은 훌륭하고 친절해야합니다. 그 밖의 모든 사항은 기여 가이드라인을 참조하세요.
[email protected]로 이메일을 보내주세요!
라이센스 권리 및 제한사항은 LICENSE 파일을 참조하십시오(Apache 2.0).