• Stars
    star
    453
  • Rank 96,573 (Top 2 %)
  • Language
    Ruby
  • License
    MIT License
  • Created over 7 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Human Essentials is an inventory management system for diaper, incontinence, and period-supply banks. It supports them in distributing to partners, tracking inventory, and reporting stats and analytics.

Human Essentials

DPG Approved

Mission ๐Ÿ’–

Human Essentials is an inventory management system built to address the needs of Diaper Banks as directly and explicitly as possible and adapted to meet the needs of other Essentials Banks. Essentials Banks maintain inventory, receive donations and other human essentials supplies (e.g. diapers, period supplies), and issue distributions to community partner organizations. Like any non-profit, they also need to perform reports on this data and have day-to-day operational information they need. This application aims to serve those needs and facilitate the general operations of the Diaper Banks (e.g., using barcode readers, scale weighing, inventory audits).

Impact ๐ŸŒŸ

Human Essentials has over 200 registered banks across the United States at no cost to them. It is currently helping over 3 million children receive diapers and over 400k period supply recipients receive period supplies. Our team is in partnership with the National Diaper Bank Network (NDBN) and can be found in their annual conference that brings numerous of non-profit organizations that distribute essential products to people.

We are proud of our achievements up to date but there is much more to do! This is where you come in...

Ruby for Good

Human Essentials is one of many projects initiated and run by Ruby for Good. You can find out more about Ruby for Good at https://rubyforgood.org

Digital Public Good ๐ŸŽ‰

The Digital Public Goods Alliance recognizes Human Essentials as a digital public good (DPG). This project supports the following Sustainable Development Goals:

  • SDG 1 - End poverty in all its forms everywhere
  • SDG 3 - Ensure healthy lives and promote well-being for all at all ages
  • SDG 10 - Reduce inequality within and among countries

Uses

Use as an Organization or Contribute as an Individual/Team to this Project:


Welcome Contributors! ๐Ÿ‘‹

Thanks for checking us out! If you're new here, here are some things you should know:

  • Issues tagged "Help Wanted" are self-contained and great for new contributors
  • Pull Requests are reviewed within a week
  • Ensure your build passes (rubocop -a is often necessary) and addresses the issue requirements
  • This project relies entirely on volunteers, so please be patient with communication

Join us on slack ๐Ÿ’ฌ

You can sign up here and find us in #human-essentials. Many helpful members are available to answer your questions. Just ask, and someone will be there to help you!

Getting Started ๐Ÿ› ๏ธ

  1. Install Ruby

    • Install the version specified in .ruby-version.
    • Visit the Install Ruby on Rails guide by GoRails for Ubuntu, Windows, and macOSX setup. โš ๏ธ Follow only the Installing Ruby step, as our project setup differs โš ๏ธ It is highly recommended you use a ruby version manager such as rbenv, asdf, or rvm.
    • Verify that your Ruby installation works by running ruby -v.
  2. Install Postgres

    • Follow one of these guides: MacOSX, Ubuntu.
      • Do you develop on Windows? We'd love to hear (and for you to submit a PR explaining) how you do it. ๐Ÿ™๐Ÿป
    • Create a database.yml file on config/ directory with your database configurations. You can also copy the existing files called database.yml.example and .env.example and change the credentials.
  3. Run bin/setup

  4. Run bin/start and visit http://localhost:3000/ to see the human essentials page.

  5. Login as a sample user with these default credentials:

    Super Users ๐Ÿฆธ๐Ÿฝโ€โ™€๏ธ
    username: [email protected]
    password: password!
    

    Bank Users ๐Ÿฆ
    Organization Admin
      Email: [email protected]
      Password: password!
    
    User
      Email: [email protected]
      Password: password!

    Partner Users ๐Ÿ‘ฅ
    Verified Partner
      Email: [email protected]
      Password: password!
    
    Invited Partner
      Email: [email protected]
      Password: password!
      
    Unverified Partner
      Email: [email protected]
      Password: password!
      
    Recertification Required Partner
      Email: [email protected]
      Password: password!

Troubleshooting ๐Ÿ‘ท๐Ÿผโ€โ™€๏ธ

Please let us know by opening up an issue! We have many new contributors come through and it is likely what you experienced will happen to them as well.

  • "My RBENV installation didn't work!" - The rbenv repository provides a rbenv-doctor script to verify the installation and check if a ruby version is installed

Contributing Guidelines ๐Ÿค

Please feel free to contribute! Priority will be given to pull requests that address outstanding issues and have appropriate test coverage. Focus on issues tagged with the next milestone for higher priority.

To contribute:

  • Identify an unassigned issue
  • Assign the issue to yourself to avoid duplicated efforts
  • Fork the repo if you're not a contributor yet
  • Create a new branch for the issue using the format XXX-brief-description-of-feature, where XXX is the issue number
  • If you create a new model run bundle exec annotate from the root of the app
  • Create tests to provide proof that your work fixes the Issue (if you need help with this, please reach out!)
  • Commit locally using descriptive messages that indicate the affected parts of the app
  • Ensure all tests pass successfully; if any fail, fix the issues causing the failures
  • Make a final commit if tests needed fixing
  • Push up the branch
  • Create a pull request and indicate the addressed issue in the title

Squashing Commits

Consider the balance of "polluting the git log with commit messages" vs. "providing useful detail about the history of changes in the git log". If you have several smaller commits that serve a one purpose, you are encouraged to squash them into a single commit. There's no hard and fast rule here about this (for now), just use your best judgement. Please don't squash other people's commits. Everyone who contributes here deserves credit for their work! :)

Pull Request Merging

At that point, someone will work with you on doing a code review. If TravisCI gives ๐Ÿ‘ to the PR merging, we can then merge your code in; if your feature branch was in this main repository, the branch will be deleted after the PR is merged.

In-flight Pull Requests

Sometimes we want to get a PR up there and going so that other people can review it or provide feedback, but maybe it's incomplete. This is OK, but if you do it, please tag your PR with in-progress label so that we know not to review / merge it.

Becoming a Repo Contributor

Users that are frequent contributors and are involved in discussion (join the slack channel! :)) may be given direct Contributor access to the Repo so they can submit Pull Requests directly instead of Forking first.

Stay Scoped

Try to keep your PRs limited to one particular issue, and don't make changes that are out of scope for that issue. If you notice something that needs attention but is out of scope, please create a new issue.

Testing ๐Ÿงช

Writing Tests/Specs

  • Run all the tests with bundle exec rspec
  • Run a single test with bundle exec rspec {path_to_test_name}_spec.rb

Make sure all tests run clean & green before submitting a Pull Request. If you are inexperienced in writing tests or get stuck on one, please reach out for help :). You probably don't need to write new tests when simple re-stylings are done (ie. the page may look slightly different but the Test suite is unaffected by those changes).

Tip: If you need to skip a failing test, place pending("Reason you are skipping the test") into the it block rather than skipping with xit. This will allow rspec to deliver the error message without causing the test suite to fail.

  it "works!" do
    pending("Need to implement this")
    expect(my_code).to be_valid
  end

Writing Browser/System/Feature Specs

If you need to see a browser/system spec run in the browser, you can use the following env variable:

NOT_HEADLESS=true bundle exec rspec

We've added magic_test which makes creating browser specs much easier. It allows you to record actions on the browser running the specs and easily paste them into the spec. You can do this by adding magic_test within your system spec:

 it "does some browser stuff" do
   magic_test
 end

and run the spec using this command: MAGIC_TEST=1 NOT_HEADLESS=true bundle exec rspec <path_to_spec>

See videos of it in action here

Deployment Process ๐Ÿš€

The human-essentials & partner application should ideally be deployed on a weekly or bi-weekly schedule depending on the merged updates in the main branch. This is the process we take to deploy updates from our main branch to our servers.

Requirements

  • SSH access to our servers (usually granted to core maintainers)
  • Login credentials to our Mailchimp account

Tag & Release

  1. Push a tag with the appropriate semantic versioning. Refer to the releases for the correct versioning. For example, if the last release was 2.1.0 and you're making a hotfix, use 2.1.1

    git tag x.y.z
    git push --tags
  2. Publish a release associated to that tag pushed up in the previous step here. Include details about the release's updates (we use this to notify our stakeholders on updates via email).

Running delayed jobs

Run delayed jobs locally with the rake jobs:work command. This is necessary to view any emails in your browser. Alternatively, you can run a specific delayed job by opening a Rails console and doing something like:

Delayed::Job.last.invoke_job

You can replace the last query with any other query (e.g. Delayed::Job.find(123)).

Send Update Email To Human Essential Users

To notify stakeholders about the deployment and updates via email, follow these steps:

  1. Fetch all the users' emails from our human essentials production database
cap production rails:console
emails = User.all.pluck(:email) 
puts "Email Address\n" + emails.join("\n") # Copy this output
  1. Use the copied list of emails to send an update audience via Mailchimp. Go to Audience > Manage Audience > Import Contacts and select "Copy and paste" option. Then paste the email list from the previous step.

  2. Draft and send the email with updates.

Additional Notes

  • The generated schema.rb file may include or omit id: :serial for create table, and null: false for t.datetime. According to Aaron, this can safely be ignored, and it is probably best to commit the schema.rb only if you have committed anything that would change the DB schema (i.e. a migration).
  • If you have trouble relating to SSL libraries installing Ruby using rvm or rbenv on a Mac, you may need to add a command line option to specify the location of the SSL libraries. Assuming you are using brew, this will probably result in a command looking something like:
rvm install 2.6.4 --with-openssl-dir='brew --prefix openssl'

Acknowledgements

Thanks to Rachel (from PDX Diaperbank) for all of her insight, support, and assistance with this application, and Sarah ( http://www.sarahkasiske.com/ ) for her wonderful design and CSS work at Ruby For Good '17!

License

FOSSA Status

โœจ Contributors โœจ

Thanks goes to these wonderful people (emoji key):

Edwin Mak
Edwin Mak

๐Ÿ’ป ๐Ÿ“† ๐Ÿš‡ ๐Ÿค” ๐Ÿ’ฌ ๐Ÿ›ก๏ธ
Sean Marcia
Sean Marcia

๐Ÿ’ป ๐Ÿ’ผ ๐Ÿ’ต ๐Ÿ” ๐Ÿ“‹
Aaron H
Aaron H

๐Ÿ“† ๐Ÿ’ป
Dmitry
Dmitry

๐Ÿ’ป
Adam Bachman
Adam Bachman

๐Ÿ’ป
JC Avena
JC Avena

๐Ÿ’ป
mdworken
mdworken

๐Ÿ’ป ๐Ÿ“†
Marius Pop
Marius Pop

๐Ÿ’ป
Elayne
Elayne

๐Ÿ’ป
Amy Detwiler
Amy Detwiler

๐Ÿ’ป
Gia
Gia

๐Ÿ’ป
Amina Adewusi
Amina Adewusi

๐Ÿ’ป
albertchae
albertchae

๐Ÿ’ป ๐Ÿค”
Keith Walters
Keith Walters

๐Ÿ’ป
Chase Southard
Chase Southard

๐Ÿ’ป
Brock Wilcox
Brock Wilcox

๐Ÿ’ป
danquill
danquill

๐Ÿ’ป
Keith Bennett
Keith Bennett

๐Ÿ’ป
Benjamin Reynolds
Benjamin Reynolds

๐Ÿ’ป
jtu0
jtu0

๐Ÿ’ป
Juarez Lustosa
Juarez Lustosa

๐Ÿ’ป
Julien A.
Julien A.

๐Ÿ’ป
Emerson Manabu Araki
Emerson Manabu Araki

๐Ÿ’ป
Ben Klang
Ben Klang

๐Ÿ’ป
karolina
karolina

๐Ÿ’ป
Josh Cano
Josh Cano

๐Ÿ’ป
Julian Macmang
Julian Macmang

๐Ÿ’ป
Philip DeFraties
Philip DeFraties

๐Ÿ’ป
GabrielRMuller
GabrielRMuller

๐Ÿ’ป
Lucas Hiago
Lucas Hiago

๐Ÿ’ป
Lanya Butler
Lanya Butler

๐Ÿ’ป
Eduardo Moreira
Eduardo Moreira

๐Ÿ’ป
Alicia Barrett
Alicia Barrett

๐Ÿ’ป
Bob Forcha
Bob Forcha

๐Ÿ’ป
William Murphy
William Murphy

๐Ÿ’ป
Kate Donaldson
Kate Donaldson

๐Ÿ’ป
Matthew Russell Dodds
Matthew Russell Dodds

๐Ÿ’ป
Allison McMillan
Allison McMillan

๐Ÿ’ป
Ashley Jean
Ashley Jean

๐Ÿ’ป
Eduardo Alencar
Eduardo Alencar

๐Ÿ’ป
Thomas Hart
Thomas Hart

๐Ÿ’ป
Bart Agapinan
Bart Agapinan

๐Ÿ’ป
Monique
Monique

๐Ÿ’ป
Valerie Woolard
Valerie Woolard

๐Ÿ’ป
zak-kay
zak-kay

๐Ÿ’ป
Jason LaHatte
Jason LaHatte

๐Ÿ’ป
Dave Tapley
Dave Tapley

๐Ÿ’ป
Meghan
Meghan

๐Ÿ’ป
Andy Thackray
Andy Thackray

๐Ÿ’ป
Felipe Lovato Flores
Felipe Lovato Flores

๐Ÿ’ป
Marcel Kooi
Marcel Kooi

๐Ÿ’ป
Lee Sharma
Lee Sharma

๐Ÿ’ป
Scott Steele
Scott Steele

๐Ÿ’ป ๐Ÿค”
Sam Weerasinghe
Sam Weerasinghe

๐Ÿ’ป
Gerald Abrencillo
Gerald Abrencillo

๐Ÿ’ป
Rodolfo Santos
Rodolfo Santos

๐Ÿ’ป
Gabriel Baldรฃo
Gabriel Baldรฃo

๐Ÿ’ป
Melanie White
Melanie White

๐Ÿ’ป
Melissa Miller
Melissa Miller

๐Ÿ’ป
Marc Heiligers
Marc Heiligers

๐Ÿ’ป
Joe Hunt
Joe Hunt

๐Ÿ’ป
Meg Gutshall
Meg Gutshall

๐Ÿ’ป
Andrew H Schwartz
Andrew H Schwartz

๐Ÿ’ป
Joseph Glass
Joseph Glass

๐Ÿ’ป
Reese Williams
Reese Williams

๐Ÿ’ป
Santiago Perez
Santiago Perez

๐Ÿ’ป
Sirius Dely
Sirius Dely

๐Ÿ’ป
Heather Herrington
Heather Herrington

๐Ÿ’ป
Moacir Guedes
Moacir Guedes

๐Ÿ’ป
CraigJZ
CraigJZ

๐Ÿ’ป
Semih ArslanoฤŸlu
Semih ArslanoฤŸlu

๐Ÿ’ป
Mauricio de Lima
Mauricio de Lima

๐Ÿ’ป
David Curtis
David Curtis

๐Ÿ’ป
Natalia Galรกn
Natalia Galรกn

๐Ÿ’ป
Anderson Fernandes
Anderson Fernandes

๐Ÿ’ป
Gabriel Belgamo
Gabriel Belgamo

๐Ÿ’ป
Jorge David C.T Junior
Jorge David C.T Junior

๐Ÿ’ป
Seth Lieberman
Seth Lieberman

๐Ÿ’ป
Jorge Oliveira Santos
Jorge Oliveira Santos

๐Ÿ’ป
Drinks
Drinks

๐Ÿ’ป
Bruno Castro
Bruno Castro

๐Ÿ’ป
Carlos Palhares
Carlos Palhares

๐Ÿ’ป
Clifton McIntosh
Clifton McIntosh

๐Ÿ’ป
Daniel Beigelman
Daniel Beigelman

๐Ÿ’ป
Meg Viar
Meg Viar

๐Ÿ’ป
Svetlana Vileshina
Svetlana Vileshina

๐Ÿ’ป
Ben Reed
Ben Reed

๐Ÿ’ป
Emily Giurleo
Emily Giurleo

๐Ÿ’ป
Alem Getu
Alem Getu

๐Ÿ’ป
Dejan Bjeloglav
Dejan Bjeloglav

๐Ÿ’ป
Cassiano Blonski Sampaio
Cassiano Blonski Sampaio

๐Ÿ’ป
Greg
Greg

๐Ÿ’ป
finn
finn

๐Ÿ’ป
Jayson Mandani
Jayson Mandani

๐Ÿ’ป
Stanley Liu
Stanley Liu

๐Ÿ’ป
Curtis Bartell
Curtis Bartell

๐Ÿ’ป
Libby Rodriguez
Libby Rodriguez

๐Ÿ’ป
joshuacgraves
joshuacgraves

๐Ÿ’ฌ ๐Ÿ“†
Himanshu
Himanshu

๐Ÿ’ป
Mohamed Hegab
Mohamed Hegab

๐Ÿ’ป
Alejandro AR
Alejandro AR

๐Ÿ’ป
hatsu
hatsu

๐Ÿ’ป
Matt Glover
Matt Glover

๐Ÿ’ป
js-sapphire
js-sapphire

๐Ÿ’ป
lasitha
lasitha

๐Ÿ’ป
Patrick McClernan
Patrick McClernan

๐Ÿ’ป
Marc Bellingrath
Marc Bellingrath

๐Ÿ’ป
Daniel Orner
Daniel Orner

๐Ÿ’ป
Bob Mazanec
Bob Mazanec

๐Ÿ’ป
Mark Yen
Mark Yen

๐Ÿ’ป
Rachael Wright-Munn
Rachael Wright-Munn

๐Ÿ’ป
รtalo Matos
รtalo Matos

๐Ÿ’ป
Alvaro Sanchez Diaz
Alvaro Sanchez Diaz

๐Ÿ’ป
mbrundige
mbrundige

๐Ÿ’ป
Robert Greene
Robert Greene

๐Ÿ’ป

This project follows the all-contributors specification. Contributions of any kind welcome!

More Repositories

1

casa

Volunteer management system for nonprofit CASA, which serves foster youth in counties across America.
Ruby
310
star
2

playtime

Supporting children and families experiencing homelessness in Washington, DC. Live app - https://wishlist.playtimeproject.org Organization Website:
Ruby
89
star
3

homeward-tails

Homeward Tails is an application making it easy to link adopters/fosters with pets. We work with grassroots pet rescue organizations to understand how we can make the most impact.
HTML
63
star
4

circulate

An operating system for lending libraries
Ruby
62
star
5

mutual-aid

Mutual aid management platform for groups who build, support, and strengthen community resilience.
Ruby
54
star
6

demand-progress

Ruby
46
star
7

Flaredown

Flaredown web app and API
Ruby
40
star
8

voices-of-consent

Open source tracking and inventory management application for nonprofit, Voices of Consent (Ruby for Good 2019)
Ruby
38
star
9

abalone

A data tracking and analytics app for abalone conservation efforts.
Ruby
35
star
10

partner

Partner and Companion App for the Diaper app
SCSS
30
star
11

rubyforgood.org--old

Old Ruby for Good Event Website
CSS
21
star
12

babywearing

A lending library for Babywearing communities that manages baby carrier inventory and memberships
Ruby
19
star
13

shelter-assist

Software to help foster-based animal rescues keep track of their animals and people.
Ruby
14
star
14

2020-Remote

13
star
15

coral

An upcoming project for Ruby for Good
Ruby
13
star
16

inkind-volunteer

A mobile first application serving Community Education Partnership (CEP) - https://www.cep.ngo/ . This volunteer used application works in collaboration with https://github.com/rubyforgood/inkind-admin .
TypeScript
11
star
17

rubyforgood.org

Website for Ruby for Good
HTML
9
star
18

inkind-admin

A project serving Community Education Partnerships - https://www.cep.ngo/ . This Rails application presents an admin interface for CEP to manage their volunteers and students. And provides a GraphQL backend for https://github.com/rubyforgood/inkind-volunteer .
Ruby
9
star
19

stocks-in-the-future

Ruby
7
star
20

freeforest

An upcoming project for Ruby for Good
Ruby
7
star
21

loggerhead_shrike

Ruby
7
star
22

working_landscapes

Collecting counts of local wildlife for research and reporting
Ruby
7
star
23

pathway-homes

Ruby
7
star
24

pantry_scheduler

Ruby
7
star
25

applied-conservation

Ruby
7
star
26

scimitar_oryx

Ruby
6
star
27

reentry

Here 4 Reentry's Word of Mouth app
Ruby
6
star
28

pdx_diaper

Inventory system for Portland Diaper Bank, created at Ruby For Good 2016
Ruby
6
star
29

habitat_humanity

Ruby
6
star
30

kiwanis-ctc

A fundraising app for Kiwanis Arlington
TypeScript
5
star
31

save_the_animals_api

related to https://github.com/rubyforgood/offline_pandas
Ruby
5
star
32

CharterForCompassion

Site for making connections for the Charter for Compassion.
JavaScript
4
star
33

share_christmas

Share Your Holiday Application
Ruby
4
star
34

habitatebsv

An upcoming project for Ruby for Good
JavaScript
4
star
35

offline_pandas

related to https://github.com/rubyforgood/save_the_animals_api
JavaScript
3
star
36

growhaus_sign_in

Growhaus Sign in
Ruby
3
star
37

justice

Justice for Juniors Website
JavaScript
3
star
38

loudoun_codes

A ruby on rails app to replace the PCSquared application used for HSPC coding contests.
Ruby
3
star
39

2019

2019 Projects
2
star
40

2017

2017 Ruby for Good Projects
2
star
41

purple_door

2
star
42

panda_app

Ruby for Good 2016: A tool to help researchers score observations of animal behaviors
Ruby
2
star
43

doublehranch

Double H Ranch Project 2017
Ruby
2
star
44

slack_inviter

Heroku app for inviting people to slack
Ruby
1
star
45

resilient-democracy

1
star
46

animal-rescue

HTML
1
star
47

kiwanis-old

An upcoming project for Ruby for Good
Ruby
1
star
48

2018

1
star
49

casa-android

Kotlin
1
star
50

rubybythebay.org

CSS
1
star
51

organize_chaos

An upcoming project for Ruby for Good
Python
1
star
52

growhaus_stats

rubyforgrowhaus
Ruby
1
star
53

reciprocity

Gift economy platform to promote and support activism and civic engagement
Ruby
1
star
54

r4g-github-provisioning

Tool for provisioning github repos for Ruby for Good
Ruby
1
star