Skip to content

Navigation Menu

Sign in
Sign up

Latest commit

History

13,698 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CASA Project and Organization Overview

rspec erb lint standardrb lint brakeman npm 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.

Start with the contributing guide for setup, issue claiming, testing, and pull request expectations.

Find issues to work on here on the issue board. Issues on the project's TODO column are another way to browse issues. Check to see that no one is assigned to the issue. Then comment on it to claim the issue. Commenting on an issue doesn't automatically get the issue assigned so double check the comments on an issue to see that no one is requesting assignment.

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.

Communication and Collaboration

We highly recommend that you join us in slack in the #casa channel so you can get fast help for any questions you may have.

Check out our google calendar to see when office hours and stakeholder meetings are.

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

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.

Tech Stack

Technology Version
Ruby 4.0.6 (see .ruby-version)
Rails 7.2
PostgreSQL 14+
Node.js LTS/Krypton (see .nvmrc)

Key libraries: Hotwire Turbo, Stimulus, RSpec, StandardRB

Resources

  • Architecture decisions β€” ADRs explaining key technical choices and entity relationship diagrams
  • DB diagram β€” import schema.rb into dbdiagram.io for a live model diagram
  • Product sense β€” mission and product philosophy (recommended reading for leads and product contributors)
  • Wiki β€” additional guides and who's who
  • Google Calendar β€” office hours and stakeholder meetings

Developing!

How to Contribute

See our contributing guide πŸ’– ✨

Installation

Getting Started (Codespaces) πŸ› οΈ

Open in GitHub Codespaces

  1. Follow the link above or follow instructions to create a new Codespace.; You can use the web editor, or even better open the Codespace in VSCode
  2. Wait for the container to start. This will take a few (10-15) minutes since Ruby needs to be installed, the database needs to be created, and the bin/setup script needs to run
  3. Run bin/dev and visit the URL that pops in VSCode up to see the CASA page
  4. Login as a sample user β€” see Logging in with seed users for credentials (the same credentials also work on the QA environment)

Local 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 4.0.3
  3. gem install bundler

node.js

  1. (Recommended) Install nvm, which is a node version manager.
  2. Install a current LTS version of Node. Running nvm install from this directory will read the .nvmrc file to install the correct version.

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.

Platform Specific Installation Instructions

Common issues

Rails/rake commands hang forever instead of running

Run: rails app:update:bin

No option for a user to sign up through the UI

This is intentional. Use a pre-seeded user account β€” see Logging in with seed users.

Windows error: "Requirements support for mingw is not implemented yet"

Use RubyInstaller instead.

Images not displaying locally

Install imagemagick: https://imagemagick.org/script/download.php

M1 Mac installation issues

Run these commands before starting the installation process:

  1. Set the architecture: $env /usr/bin/arch -arm64 /bin/zsh ---login
  2. Remove all gems: gem uninstall -aIx
bin/setup fails with a credentials error
  1. Open the .env file.
  2. Update POSTGRES_USER and POSTGRES_PASSWORD to match your PostgreSQL credentials.
  3. Run bin/setup

Running the App / Verifying Installation

  1. cd casa/
  2. Run bin/setup
  3. Run bin/dev and visit http://localhost:3000/ to see the app running.

QA Environment

A publicly accessible QA environment is available at https://casa-qa.herokuapp.com/ . You can log in using the same seed credentials below β€” useful for exploring the app without any local setup.

Logging in with seed users

Local: http://localhost:3000/users/sign_in β€” QA: https://casa-qa.herokuapp.com/users/sign_in

Email Role Password
volunteer1@example.com Volunteer 12345678
supervisor1@example.com Supervisor 12345678
casa_admin1@example.com Admin 12345678
casa_admin2-1@example.com Admin (different org) 12345678

All CASA admin login at http://localhost:3000/all_casa_admins/sign_in (QA: https://casa-qa.herokuapp.com/all_casa_admins/sign_in):

Email Role Password
allcasaadmin@example.com All CASA Admin 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 npm run 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

Run bin/lint to run all linters and fix issues. This will run:

  1. bundle exec standardrb --fix auto-fix Ruby linting issues more linter info
  2. bundle exec erb_lint --lint-all --autocorrect ERB linter
  3. npm run 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.

Frontend Architecture

The frontend uses Hotwire β€” specifically Turbo for page navigation and form handling, and Stimulus for lightweight JavaScript controllers attached to DOM elements.

Issue 5016 tracks the ongoing migration from inline JavaScript to Stimulus. Stimulus controllers live in app/javascript/controllers/. To verify Stimulus is working in your local environment, navigate to /casa_cases and check your browser console for Stimulus is working!

Keeping Your Local Environment Up to Date

After pulling new changes from main, run:

bin/update

This runs any pending database migrations, updates gems and node packages, and executes post-deployment tasks in one step.

Post-deployment tasks

We use After Party for post-deployment tasks that may include one-time database updates. To run them manually:

bundle exec rake after_party:run

Contributors

We welcome contributions of all kinds! To request attribution for your work, comment on your pull request with:

@all-contributors please add @<username> for <contributions>.

Replace <contributions> with code, review, doc, bug, or see the emoji key for all contribution types.

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

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!

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

About

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

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

381 stars

Watchers

39 watching

Forks

Sponsor this project

Used by

Contributors

Languages

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /