Você acabou de encontrar o Drop App (primeira versão do Boxtribute - um aplicativo web que torna mais fácil para as organizações obter, armazenar e distribuir bens doados para pessoas necessitadas de forma justa e digna). Atualmente, ele está em processo de substituição pelo Boxtribute 2.0.
Dropapp foi inicialmente desenvolvido para Drop In The Ocean - uma ONG norueguesa que trabalha em três campos de refugiados em toda a Grécia. Outros utilizadores incluem Samos Volunteers, Europe Cares, Hermine, The Free Shop Lebanon, Associação Intereuropeia de Ajuda Humana (IHA) e Movement on the Ground.
Evoluímos o aplicativo para que agora seja hospedado centralmente, para que possamos oferecer o produto a muito mais organizações e estamos trabalhando constantemente para melhorar o sistema e conectar organizações doadoras e distribuidoras entre si.
Se você estiver interessado em fazer parte deste projeto, escreva-nos para [email protected]! Você também pode conferir nosso site para obter mais detalhes sobre o tipo de ajuda que precisamos neste projeto.
Instale o Docker
Instale o PHP 8.2 ou posterior.
Certifique-se de ter as extensões PHP mbstring
, curl
, mysql
e xdebug
instaladas. No Ubuntu:
apt install php-curl php-mbstring php-mysql php-xdebug
Clone este repositório. Se você estiver executando o Ubuntu, pode ser necessário definir permissões de gravação na pasta de modelos do Docker.
git clone https://github.com/boxwise/dropapp
chmod -R 777 dropapp/templates (not generally recommended - ToDo Fix bug for Ubuntu users)
Primeiro você precisa instalar o 'composer' (sugerimos disponibilizá-lo globalmente)
curl -s https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Você pode instalar as dependências necessárias usando
composer install
Para configurar o aplicativo, copie /library/config.php.default
e remova o .default
do nome do arquivo. Em seguida, preencha as credenciais Auth0 do cliente Auth0. Por favor, verifique docs/auth0.md para obter mais informações sobre Auth0.
Para executar o aplicativo, presumimos que você tenha o Docker instalado. Você pode então executar:
docker-compose up
Alternativamente, você pode executar usando o servidor de desenvolvimento PHP
php -S localhost:8000 gcloud-entry.php
Para inicializar o banco de dados pela primeira vez, você deve executar este comando para criar o esquema:
vendor/bin/phinx migrate -e development
A semente do banco de dados db/init.sql
é gerada na v2 e copiada de lá.
Se você também deseja conectar os usuários da semente ao auth0 e preencher a tabela db cms_usergroups_roles, abra um navegador e solicite http://localhost:8100/cron/reseed-auth0.php
Assim que os contêineres do docker estiverem em execução, o aplicativo estará acessível em http://localhost:8100/
Depois disso, você poderá fazer login no aplicativo usando a senha Browser_tests e um dos seguintes e-mails:
BoxAid (todos têm acesso a uma base chamada Lesvos):
BoxCare (existem 3 bases associadas - Salónica, Samos, Atenas):
A maioria de nós usa VSCode como editor de código e ambiente de trabalho MySQL para acesso ao banco de dados.
Portanto, não precisamos pensar/discutir sobre convenções de código, estamos usando o formatador automático de código php-cs-fixer.
O CircleCI falhará em sua solicitação pull se houver algum código que exija correções de linting.
Se você estiver usando VSCode, a extensão vscode-php-cs-fixer
será sugerida automaticamente e aplicará a formatação automática ao salvar.
Alternativamente, você pode executar
php vendor/friendsofphp/php-cs-fixer/php-cs-fixer fix . --rules @PhpCsFixer
na raiz manualmente.
Habilitamos a depuração remota do XDebug na configuração padrão do Docker, para que você possa percorrer seu código. Execute docker-compose up --build
na próxima vez que inicializar seu servidor para atualizar sua imagem do docker.
Se você estiver usando o VS Code, se instalar a extensão PHP Debug e iniciar a configuração 'Listen for XDebug', você poderá definir pontos de interrupção em seu código.
Esteja ciente de que apenas os pontos de interrupção que estão alinhados com o código executável são capturados.
Os contêineres Docker em execução no Linux não podem resolver o endereço host.docker.internal
para um endereço IP. Para usar o Xdebug no Linux, você deve especificar o endereço IP interno do contêiner docker em docker-compose.yaml
. Para descobrir o seu endereço interno do Docker, execute
docker inspect -f '{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}'
Insira o endereço em docker-compose.yaml
aqui:
environment:
XDEBUG_CONFIG: remote_host=172.19.0.1
Se você deseja se conectar ao servidor MySQL a partir de sua máquina host, você pode fazer isso usando
docker exec -it mysql -u root -p
O servidor mysql em seu contêiner docker também pode ser acessado na porta 9906 do seu host local
mysql --host=127.0.0.1 --port=9906 -u root -p
A senha do usuário root do banco de dados dropapp_dev
é dropapp_root
.
A maioria usa o ambiente de trabalho para acessar o banco de dados MySQL. Para estabelecer uma conexão você precisa inserir seu endereço de localhost
, por exemplo, 127.0.0.1
, para 'Nome do host' e 9906
para 'Porta'.
Estamos usando Phinx para executar migrações de banco de dados.
Para migrar para a versão atual do banco de dados, execute
vendor/bin/phinx migrate
Para criar uma execução de migração
vendor/bin/phinx create
Ele cria um arquivo em db/migrations
. Por favor, use este arquivo para escrever sua migração de banco de dados.
Usamos Cypress para teste de navegador. Para executar testes Cypress em seu ambiente local, por favor
baseURL
para seu endereço local, por exemplo, localhost:8100
em cypress.json.auth0Domain
para o locatário Auth0 de desenvolvimento, por exemplo, boxtribute-dev.eu.auth0.com
em cypress.json.Se os testes 2.4 e 2.9 falharem, verifique
Todos os testes em cypress/integrations
devem ser encontrados e podem ser executados diretamente. Ao escrever testes, tente seguir estas diretrizes, se possível:
cypress/support
- então elas estarão disponíveis globalmente. Encontre o correspondente pelo nome ou crie um novo. Neste último caso, não se esqueça de importá-lo em cypress/integrations/index.js
. Evite criar nomes de arquivos diversos, pois isso tende a causar caos.clickNewUserButton()
é melhor que clickElementByTypeAndTestId('button','new-user-button')
.Já experimentamos que os testes podem falhar no CircleCI, mas não no ambiente local. A principal razão para isso é que o Cypress geralmente executa os comandos mais lentamente em um ambiente de desenvolvimento local. Portanto, algumas orientações adicionais ao escrever o teste:
cy.url().should('include', 'people_deactivated')
. Devido a esta afirmação, o cipreste definitivamente esperará até que o redirecionamento seja executado.cy.visit()
você poderá ter certeza de que o teste cypress aguardará até que a página esteja totalmente carregada. Portanto, tente navegar o máximo possível com cy.visit()
.Se você estiver configurando um novo locatário Auth0, precisaremos de acesso à API de gerenciamento Auth0. Para fazer isso
Você tem que ser incrível e gentil. Para todo o resto, consulte nossas diretrizes de contribuição
Envie-nos um e-mail para [email protected]!
Consulte o arquivo LICENSE para direitos e limitações de licença (Apache 2.0).