Acabas de encontrar Drop App (primera versión de Boxtribute, una aplicación web que facilita a las organizaciones obtener, almacenar y distribuir bienes donados a personas necesitadas de una manera justa y digna). Actualmente está en proceso de ser reemplazado por Boxtribute 2.0.
Dropapp se desarrolló inicialmente para Drop In The Ocean, una ONG noruega que trabaja en tres campos de refugiados en toda Grecia. Otros usuarios incluyen Samos Volunteers, Europe Cares, Hermine, The Free Shop Lebanon, Intereuropean Human Aid Association (IHA) y Movement on the Ground.
Hemos evolucionado la aplicación para que ahora esté alojada de forma centralizada, de modo que podamos ofrecer el producto a muchas más organizaciones, y trabajamos constantemente para mejorar el sistema y conectar a las organizaciones donantes y distribuidoras entre sí.
Si estás interesado en ser parte de este proyecto, ¡escríbenos a [email protected]! También puede consultar nuestro sitio web para obtener más detalles sobre el tipo de ayuda que necesitamos en este proyecto.
Instalar ventana acoplable
Instale PHP 8.2 o posterior.
Asegúrese de tener instaladas las extensiones PHP mbstring
, curl
, mysql
y xdebug
. En Ubuntu:
apt install php-curl php-mbstring php-mysql php-xdebug
Clona este repositorio. Si está ejecutando Ubuntu, es posible que necesite configurar permisos de escritura en la carpeta de plantillas de Docker.
git clone https://github.com/boxwise/dropapp
chmod -R 777 dropapp/templates (not generally recommended - ToDo Fix bug for Ubuntu users)
Primero necesitas instalar 'composer' (te sugerimos que esté disponible globalmente)
curl -s https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Puede instalar las dependencias requeridas y luego usar
composer install
Para configurar la aplicación, copie /library/config.php.default
y elimine .default
en el nombre del archivo. Luego complete las credenciales de Auth0 del cliente Auth0. Consulte docs/auth0.md para obtener más información sobre Auth0.
Para ejecutar la aplicación, asumimos que tiene instalado Docker. Luego puedes ejecutar:
docker-compose up
Alternativamente, puede ejecutar utilizando el servidor de desarrollo PHP.
php -S localhost:8000 gcloud-entry.php
Para inicializar la base de datos por primera vez, debe ejecutar este comando para crear el esquema:
vendor/bin/phinx migrate -e development
La semilla de la base de datos db/init.sql
se genera en v2 y se copia desde allí.
Si además desea conectar a los usuarios desde la semilla a auth0 y completar la tabla de base de datos cms_usergroups_roles, abra un navegador y solicite http://localhost:8100/cron/reseed-auth0.php
Una vez que los contenedores Docker se estén ejecutando, se podrá acceder a la aplicación en http://localhost:8100/
Después de esto, deberías poder iniciar sesión en la aplicación usando la contraseña Browser_tests y uno de los siguientes correos electrónicos:
BoxAid (todos tienen acceso a una base llamada Lesbos):
BoxCare (hay 3 bases asociadas - Salónica, Samos, Atenas):
La mayoría de nosotros usamos VSCode como editor de código y banco de trabajo MySQL para acceder a la base de datos.
Para que no tengamos que pensar/discutir sobre las convenciones del código, estamos usando el formateador de código automático php-cs-fixer.
CircleCI fallará en su solicitud de extracción si hay algún código que requiera correcciones de linting.
Si está utilizando VSCode, la extensión vscode-php-cs-fixer
se sugerirá automáticamente y se aplicará el formato automático al guardar.
Alternativamente, puedes ejecutar
php vendor/friendsofphp/php-cs-fixer/php-cs-fixer fix . --rules @PhpCsFixer
en la raíz manualmente.
Hemos habilitado la depuración remota de XDebug en la configuración predeterminada de Docker, para que pueda revisar su código. Ejecute docker-compose up --build
la próxima vez que inicie su servidor para actualizar la imagen de su ventana acoplable.
Si está utilizando VS Code, si instala la extensión PHP Debug e inicia la configuración 'Escuchar XDebug', podrá establecer puntos de interrupción en su código.
Tenga en cuenta que sólo se detectan los puntos de interrupción que se encuentran en una línea con el código ejecutable.
Los contenedores Docker que se ejecutan en Linux no pueden resolver la dirección host.docker.internal
en una dirección IP. Para usar Xdebug en Linux, debe especificar la dirección IP interna del contenedor acoplable en docker-compose.yaml
. Para averiguar su dirección interna de Docker, ejecute
docker inspect -f '{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}'
Ingrese la dirección en docker-compose.yaml
aquí:
environment:
XDEBUG_CONFIG: remote_host=172.19.0.1
Si desea conectarse al servidor MySQL desde su máquina host, puede hacerlo usando
docker exec -it mysql -u root -p
También se puede acceder al servidor mysql en su contenedor acoplable en el puerto 9906 de su host local.
mysql --host=127.0.0.1 --port=9906 -u root -p
La contraseña para el usuario root de la base de datos dropapp_dev
es dropapp_root
.
La mayoría de los usuarios utilizan Workbench para acceder a la base de datos MySQL. Para establecer una conexión, debe ingresar su dirección de localhost
, por ejemplo, 127.0.0.1
, para 'Nombre de host' y 9906
para 'Puerto'.
Estamos usando Phinx para ejecutar migraciones de bases de datos.
Para migrar a la versión actual de la base de datos, ejecute
vendor/bin/phinx migrate
Para crear una ejecución de migración
vendor/bin/phinx create
Crea un archivo en db/migrations
. Utilice este archivo para escribir su migración de base de datos.
Usamos Cypress para la prueba del navegador. Para ejecutar pruebas de Cypress en su entorno local, por favor
baseURL
en su dirección local, por ejemplo, localhost:8100
en cypress.json.auth0Domain
en el inquilino de desarrollo Auth0, por ejemplo, boxtribute-dev.eu.auth0.com
en cypress.json.Si las pruebas 2.4 y 2.9 fallan, verifique
Todas las pruebas en cypress/integrations
deben encontrarse y pueden ejecutarse directamente. Al redactar exámenes, intente seguir estas pautas si es posible:
cypress/support
; luego estarán disponibles globalmente. Encuentre el que coincida por nombre o cree uno nuevo. En este último caso, no olvide importarlo en cypress/integrations/index.js
. Evite crear nombres de archivos diversos, ya que tiende a generar caos.clickNewUserButton()
es mejor que clickElementByTypeAndTestId('button','new-user-button')
.Ya hemos experimentado antes que las pruebas pueden fallar en CircleCI, pero no en el entorno local. La razón principal es que Cypress generalmente ejecuta los comandos más lento en un entorno de desarrollo local. Por lo tanto, algunas pautas adicionales al redactar un examen:
cy.url().should('include', 'people_deactivated')
. Debido a esta afirmación, Cypress definitivamente esperará hasta que se ejecute la redirección.cy.visit()
puede estar seguro de que la prueba de cypress esperará hasta que la página esté completamente cargada. Por lo tanto, intenta navegar tanto como sea posible con cy.visit()
.Si está configurando un nuevo inquilino de Auth0, necesitamos acceso a la API de administración de Auth0. Para hacer esto
Tienes que ser increíble y amable. Para todo lo demás, consulte nuestras pautas de contribución.
¡Envíenos un correo electrónico a [email protected]!
Consulte el archivo LICENCIA para conocer los derechos y limitaciones de la licencia (Apache 2.0).