happybottoms / coverd

Coverd Donation Bank Management App

Home Page:https://coverd.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Coverd Donation Bank Manager

Coverd is an open source Symfony/Vue.js web application that manages the inventory and distribution of donated goods in a Bank -> Partner -> Client model. While this app was developed for diaper banks, our intent is for Coverd to be product agnostic.

Build Status Test Coverage

Coverd Screenshot

Coverd offers the following features.

  • Product management
  • Warehouse management
  • Partner management
  • Client management (planned)
  • Warehouse and Partner Inventory
  • Full inventory transaction history
  • Partner login, ordering, and client management (planned)
  • Custom Partner and Client fields (planned)
  • Client (Recipient) record encryption (planned)
  • Support for multiple warehouses
  • Inventory transfers
  • Partner Order workflow
  • Order packing sheets
  • Fine-grained permission levels

History

Coverd comes out of the need of HappyBottoms to manage their diaper inventory and partner distribution. This app started as a Drupal (Commerce module) ordering system for distribution partners to record their distributions and place new orders. This worked for 6+ years, but due to HappyBottoms growth, the system proved unable to effectively handle the volume and lacked desired features. Additionally, HappyBottoms was able to fund the development of a warehouse inventory management app. This was developed in Laravel, Doctrine, and Vue.js and was designed to be a platform to rebuild the existing partner ordering system once complete.

Since Laravel with Doctrine is not a typical combination, a rewrite of the backend in Symfony was done for a shallower developer curve.

About HappyBottoms

HappyBottoms is Kansas City's Diaper Bank. Its mission is to collaborate with community partners to empower, connect and impact low-income families by alleviating diaper need in the Kansas City community.

HappyBottoms's vision is to positively impact the mental, physical and financial stability of a family in crisis and need through diaper assistance, education, and connection to services.

Learn More at https://www.happybottoms.org

Special Thanks

  • VMLY&R for originally sponsoring the development of the Drupal project
  • William T. Kemper Foundation for sponsoring the development of the inventory system.

Development Installation - On existing environment (with PHP and Database)

  1. Create a database (mysql, postgres, sqlite)
    • There is a docker compose file that will give you a Postgres DB by running docker-compose up in the repository root (this should only be used for development and testing purposes, not for Production)
  2. Copy .env to .env.local and set the database connection
    • Example: DATABASE_URL=postgres://postgres:coverd@127.0.0.1:5432/coverd?charset=UTF-8
  3. Build PHP and db: ./bin/php_install.sh
  4. Build JS: ./bin/js_install.sh

Update After Switching to a New Branch

  1. ./bin/post-update.sh

Run Development Server and Build JS App

  1. bin/console server:run or bin/console server:start (to run in background)
  2. yarn watch

Development Installation - Docker Compose

  1. ./bin/dockerized-install.sh
  2. ./docker/up.sh

You should now be able to connect to your the dev server at http://localhost:8080/

Install just the PHP app with updated DB

  1. docker/app ./bin/php_install.sh

Install just the JS app

  1. docker/app ./bin/js_install.sh

Update After Switching to a New Branch

  1. docker/app ./bin/post-update.sh

Build and watch the Vue JS app

  1. docker/yarn watch

Debugging with Xdebug

  1. In the "XDEBUG" section of .env.local, set XDEBUG_MODE to include debug
  2. Rebuild your environment: docker/up.sh
    • Note: If you are debugging via phpunit, you can do this more quickly via:
      1. docker/app bash
      2. export XDEBUG_MODE=debug
      3. Run your phpunit tests from this command-line
  3. If using PHPStorm, make sure you set your xdebug server to have the name "coverd"
  4. Don't forget to reset your XDEBUG_MODE when you are done debugging

Work With the Dev Environment

We have fixtures to define basic users of certain roles:

Most of the time in development, you will probably want to log in as the admin. when needing to check access for certain types of users, log in as the appropriate role-based user.

Zip Code/County Information

Coverd has a zip code/county lookup field to capture the number of people served by county. This information has to be sourced from two government data files listed below.

These files are located in /src/Data/ and are imported with the app:zip-county:import command.

FontAwesome

Coverd makes use of the free set of icons from FontAwesome. To search the available icons, see https://fontawesome.com/icons?m=free.

About

Coverd Donation Bank Management App

https://coverd.io/

License:GNU General Public License v3.0


Languages

Language:PHP 62.7%Language:Vue 32.0%Language:JavaScript 2.0%Language:CSS 1.7%Language:Twig 0.9%Language:SCSS 0.3%Language:Shell 0.3%Language:Dockerfile 0.1%