Volunteer management system for nonprofit CASA, which serves foster youth in counties across America.
MIT License
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
We are very happy to have you! CASA and Ruby for Good are committed to welcoming new contributors of all skill levels.
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.
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.
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:
Read about the product sense that guides our approach to this work.
How CASA works:
Project Considerations
More information:
The complete role description of a CASA volunteer in Prince George's County.
See our contributing guide
bin/setup
script needs to runbin/dev
and visit the URL that pops in VSCode up to see the CASA pageDownloading the Project (on a Mac or Linux machine)
git clone https://github.com/rubyforgood/casa.git
clone the repo to your local machine.Ruby
.ruby-version
. Right now that's Ruby 3.2.2gem install bundler
node.js
.tool-versions
will be used, but may be out of sync with the codename version (lts/iron) in .nvmrc
. To use the version from .nvmrc
, see one of these options: legacy file codename support or installing via custom script.nvm install
from this directory will read the .nvmrc
file to install the correct version.PostgreSQL ("postgres")
sudo apt-get install libpq-dev
so the gem can install. Use the Postgres repo for Ubuntu or WSL to get the server and client tools.sudo dnf install libpq-devel
. If you prefer choose package of libpq-devel via rpm
choco install postgresql
.Chrome Browser
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.
rails app:update:bin
$env /usr/bin/arch -arm64 /bin/zsh ---login
gem uninstall -aIx
bin/setup
fails with a credentials error:
.env
file.POSTGRES_USER
and POSTGRES_PASSWORD
to match your PostgreSQL credentials.bin/setup
cd casa/
bin/setup
bin/dev
and visit http://localhost:3000/ to see the app running.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
bin/rails spec
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
Run bin/lint
to run all linters and fix issues. This will run:
bundle exec standardrb --fix
auto-fix Ruby linting issues more linter info
bundle exec erblint --lint-all --autocorrect
ERB linter
yarn lint:fix
to run the JS linter and fix issuesrake factory_bot:lint
if you have been editing factories and want to find factories and traits which produce invalid objectsIf 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.
Check out the wiki
There is a doc
directory at the top level that includes:
architecture-decisions
directory containing important architectural decisions and entity relationship diagrams of various modelsThank 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
We are very interested in your feedback! Please give us some :) https://forms.gle/1D5ACNgTs2u9gSdh9