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.
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
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.
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
- VMLY&R for originally sponsoring the development of the Drupal project
- William T. Kemper Foundation for sponsoring the development of the inventory system.
- 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)
- There is a docker compose file that will give you a Postgres DB by running
- Copy
.env
to.env.local
and set the database connection- Example:
DATABASE_URL=postgres://postgres:[email protected]:5432/coverd?charset=UTF-8
- Example:
- Build PHP and db:
./bin/php_install.sh
- Build JS:
./bin/js_install.sh
./bin/post-update.sh
bin/console server:run
orbin/console server:start
(to run in background)yarn watch
./bin/dockerized-install.sh
./docker/up.sh
You should now be able to connect to your the dev server at http://localhost:8080/
docker/app ./bin/php_install.sh
docker/app ./bin/js_install.sh
docker/app ./bin/post-update.sh
docker/yarn watch
- In the "XDEBUG" section of
.env.local
, setXDEBUG_MODE
to includedebug
- ex.
XDEBUG_MODE=develop,debug
- For more information, see: https://xdebug.org/docs/install#mode
- ex.
- Rebuild your environment:
docker/up.sh
- Note: If you are debugging via phpunit, you can do this more quickly via:
docker/app bash
export XDEBUG_MODE=debug
- Run your phpunit tests from this command-line
- Note: If you are debugging via phpunit, you can do this more quickly via:
- If using PHPStorm, make sure you set your xdebug server to have the name "coverd"
- Don't forget to reset your
XDEBUG_MODE
when you are done debugging
We have fixtures to define basic users of certain roles:
- admin (sees everything):
- email: [email protected]
- password: password
- manager:
- email: [email protected]
- password: password
- volunteer:
- email: [email protected]
- password: password
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.
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.
- Zipcode -> County ID (FIPS) : https://www.huduser.gov/portal/datasets/usps_crosswalk.html
- County ID (FIPS) -> County Name: https://www.census.gov/geographies/reference-files/time-series/geo/gazetteer-files.html (see "Counties" file)
These files are located in /src/Data/ and are imported with the app:zip-county:import
command.
Coverd makes use of the free set of icons from FontAwesome. To search the available icons, see https://fontawesome.com/icons?m=free.