• Stars
    star
    310
  • Rank 134,926 (Top 3 %)
  • Language
    Ruby
  • License
    MIT License
  • Created over 4 years ago
  • Updated 24 days ago

Reviews

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

Repository Details

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

CASA Project and Organization Overview

rspec erb lint standardrb lint brakeman yarn lint

Maintainability Test Coverage Snyk Vulnerabilities Average time to resolve an issue

A CASA (Court Appointed Special Advocate) is a role where a volunteer advocates on behalf of a youth in their county's foster care system. CASA is also the namesake role of the national organization, CASA, which exists to cultivate and supervise volunteers carrying out this work – with county level chapters (operating relatively independently of each other) across the country.

Table of Contents

Welcome contributors!

We are very happy to have you! CASA and Ruby for Good are committed to welcoming new contributors of all skill levels.

We highly recommend that you join us in slack http://bit.ly/rubyforgood #casa channel to ask questions quickly and hear about office hours (currently Tuesday 5-7pm Pacific), stakeholder news, and upcoming new issues.

Issues on the issue board https://github.com/rubyforgood/casa/projects/1 in the TODO column are fair game. An issue can be claimed by commenting on it.

Pull requests which are not for an issue but which improve the codebase are also welcome! Feel free to make GitHub issues for bugs and improvements. A maintainer will be keeping an eye on issues and PRs every day or three.

About this project

CASA is a national organization with many regional chapters. We currently work with Prince George's County CASA in Maryland, Montgomery CASA Maryland, and Howard County Maryland

This system provides value by:

  • providing volunteers with a portal for logging activity
  • allow supervisors to oversee volunteer activity
  • generate reports on volunteer activity for admins to use in grant proposals

Read about the product sense that guides our approach to this work.

How CASA works:

  • A foster youth is represented as a CASA case.
  • The CASA case is assigned to a volunteer.
  • The volunteer records their efforts spent on the CASA case as case contacts.
  • Supervisors oversee CASA volunteers by monitoring, tracking, and advising them on CASA case activities.
  • At PG CASA, the minimum volunteer commitment is one year (this varies by CASA chapter, in San Francisco the minimum commitment is ~ two years). A volunteer's lifecycle is very long, so there's a lot of activity for chapters to organize.

Project Considerations

  • PG CASA is operating under a very tight budget. Right now, they manually input volunteer data into a volunteer management software built specifically for CASA, but upgrading their account for multiple user licenses to allow volunteers to self-log activity data is beyond their budget. Hence why we are building as lightweight a solution as possible that can sustain itself with Ruby for Good's support.
  • While the scope of this platform's use is currently for PG County CASA and Montgomery county CASA, we are building with a mind toward multitenancy so this platform could prospectively be used by other CASA chapters across the country.

More information:

The complete role description of a CASA volunteer in Prince George's County.

Developing! ✨🛠✨

How to Contribute

See our contributing guide 💖 ✨

Installation

General Setup Instructions

Downloading the Project (on a Mac or Linux machine)

  1. git clone https://github.com/rubyforgood/casa.git clone the repo to your local machine.
  2. You can ask a maintainer for permission to make a branch on this repo.
  3. You can also create a fork on GitHub and make a pull request from the fork.

Ruby

  1. Install a ruby version manager: rvm or rbenv
  2. when you cd into the project directory, let your version manager install the ruby version in .ruby-version. Right now that's Ruby 3.2.2
  3. gem install bundler

node.js

  1. (Recommended) Install nvm, which is a node version manager.
  2. Install a current LTS version of Node. lts/fermium works.
  3. Install yarn. On Ubuntu, make sure you install it from the official Yarn repo instead of cmdtest.

PostgreSQL ("postgres")

  1. Make sure that postgres is installed.

Chrome Browser

  1. The Spec tests uses Chrome Browser and Chromedriver for some of the tests. A current version of chromedriver will be installed when bundle install is run. TO install Chrome, see Chrome Install.

Another option is to install the Chromium browser for your operating system so the browser-based Ruby feature/integration tests can run. Installing chromium-browser is enough, including for many WSL (Windows subsystem for Linux) distributions.

If you are using Ubuntu on WSL and receive the following message when trying to run the test suite...

Command '/usr/bin/chromium-browser' requires the chromium snap to be installed. Please install it with: snap install chromium

...check out the instructions on installing google-chrome and chromedriver for WSL Ubuntu.

Installing Packages

  1. cd casa/
  2. bundle install install ruby dependencies.
  3. yarn install javascript dependencies.

Database Setup

  1. bin/rails db:setup create schema requires running local postgres, with a role created for whatever user you're running rails as
  2. bin/rails db:seed:replant generates test data (can be rerun to regenerate test data)

Compile Assets

  1. yarn build compile javascript   yarn build:dev to auto recompile for when you edit js files
  2. yarn build:css compile css   yarn build:css:dev to auto recompile for when you edit sass files

Platform Specific Installation Instructions

Ubuntu and WSL

  1. Rbenv

    If you are on Ubuntu in Windows Subsystem for Linux (WSL) and rbenv install indicates that the Ruby version is unavailable, you might be using Ubuntu's default install of ruby-build, which only comes with old installs of Ruby (ending before 2.6.) You should uninstall rvm and ruby-build's apt packages (apt remove rvm ruby-build) and install them with Git like this:

    • git clone https://github.com/rbenv/rbenv.git ~/.rbenv
    • echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
    • echo 'eval "$(rbenv init -)"' >> ~/.bashrc
    • exec $SHELL
    • git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

    You'll probably hit a problem where ruby-version reads ruby-2.7.2 but the install available to you is called 2.7.2. If you do, install rbenv-alias and create an alias between the two.

  2. Chrome / Chromium

    If you are on Ubuntu in Windows Subsystem for Linux (WSL) you may need to install google-chrome and chromedriver if your version of Ubuntu requires the chromium snap to be installed. For instructions how to do this, check out our WSL Setup docs.

Common issues

  1. If your rails/rake commands hang forever instead of running, try: rails app:update:bin
  2. There is currently no option for a user to sign up and create an account through the UI. This is intentional. If you want to log in, use a pre-seeded user account and its credentials.
  3. If you are on windows and see the error "Requirements support for mingw is not implemented yet" then use https://rubyinstaller.org/ instead
  4. Install imagemagick to see images locally. Instructions: https://imagemagick.org/script/download.php

Running the App / Verifying Installation

  1. bin/rails server or bin/rails s to start the local webserver

Logging in with seed users

Login as a regular user at http://localhost:3000/users/sign_in. Some example seed users:

Login as an all CASA admin at http://localhost:3000/all_casa_admins/sign_in. An example seed user:

The password for all seed users is 12345678

Local email

We are using Letter Opener in development to receive mail. All emails sent in development should open in a new tab in the browser.

To see local email previews, check out http://localhost:3000/rails/mailers

Running Tests

  • run the ruby test suite bin/rails spec
  • run the javascript test suite yarn test

If you have trouble running tests, check out CI scripts in .github/workflows/ for sample commands. Test coverage is run by simplecov on all builds and aggregated by CodeClimate

Cleaning up before you pull request

  1. bundle exec standardrb --fix auto-fix Ruby linting issues more linter info
  2. bundle exec erblint --lint-all --autocorrect ERB linter
  3. yarn lint:fix to run the JS linter and fix issues
  4. rake factory_bot:lint if you have been editing factories and want to find factories and traits which produce invalid objects

If additional work arises from your pull request that is outside the scope of the issue it resolves, please open a new issue.

Stimulus

Issue 5016 started a refactor of Javascript to use Hotwire's Stimulus. To see if it's working for you, go to /casa_cases and see Stimulus is working! in your browser console.

Post-deployment tasks

We are using After Party to run post-deployment tasks. These tasks may include one-time necessary updates to the database. Run the tasks manually by:

bundle exec rake after_party:run

Alternatively, every time you pull the main branch, run:

bin/update

which will run any database migrations, update gems and yarn packages, and run the after party post-deployment tasks.

Other Documentation

Check out the wiki

There is a doc directory at the top level that includes:

Acknowledgements

Thank you to Scout for letting us use their dashboard for free!

Communication and Collaboration

Most conversation happens in the #casa channel of the Ruby For Good slack. Get access here: http://bit.ly/rubyforgood

You can also open an issue or comment on an issue on GitHub and a maintainer will reply to you.

We have a weekly team office hours / hangout on Tuesday 5-7pm Pacific time where we do pair/mob programming and talk about issues. Please stop by! (Zoom link in slack)

We have a weekly stakeholder call with CASA stakeholders on Friday at 11:00am Pacific time where we show off progress and discuss launch plans. Feel free to join! (Zoom link in slack)

Join info for all public meetings is posted in the rubyforgood slack in the #casa channel

Feedback

We are very interested in your feedback! Please give us some :) https://forms.gle/1D5ACNgTs2u9gSdh9

More Repositories

1

human-essentials

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.
Ruby
453
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