rubyforgood / 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.
MIT License
70 stars 117 forks source link
hacktoberfest rails

Homeward Tails Adoption Application

All Contributors

The Homeward Tails app is derived from the Baja Pet Rescue Dog Adoption Application created by @kasugaijin who wanted to give back to the grassroots organization from where he adopted his dog in Mexico by building them a web application. Homeward Tails is an application that makes it easy to connect shelters with people who are looking to adopt or foster pets.


πŸš€ Getting Started

Let's get your machine setup to start up the application!

Docker

Install a containerization app, such as Docker Desktop.

Clone the repo to your local machine and navigate to the directory and run:

docker-compose build to build the base image.

docker-compose up to start the containers. You can add the -d flag to run silently without logging.

docker-compose run --rm app bin/setup to set up and seed the database.

If you need to run migrations at all: docker-compose run --rm app bin/rails db:migrate

Visit localhost:3000 in your browser.

Debugging in Docker

You need to attach to an interactive shell on the app service docker attach pet-rescue-app-1

Place debugger in your code and hit it. You should be able to interact in the attached shell.

Local Installation

⚠️ We assume you already have ruby installed with your preferred version manager. This codebase supports rbenv and asdf.

PostgreSQL

Installing PostgreSQL is required to run the application.

Installing on MacOS

Instructions: https://wiki.postgresql.org/wiki/Homebrew

brew install postgresql

To run postgresql as a service:

brew services start postgresql

Install & Setup

Clone the codebase

git clone git@github.com:rubyforgood/pet-rescue.git

Create a new config/application.yml file from the config/application.example.yml:

cp config/application.example.yml config/application.yml

Update your config/application.yml by replacing the places that say REPLACE_ME. If you installed and configured PostgreSQL as discussed above you can use your username and leave the password blank for development.

Run the setup script to prepare DB and assets

bin/setup

To run the app locally, use:

bin/dev

You should see the seed organization by going to:

http://localhost:3000/alta/

Login Credentials

All users are scoped to an organization. Hence, you must login via the correct login portal per organization.

You can use the following login credentials to login to http://localhost:3000/alta:

Use the following login Adopter

Staff

πŸ§ͺ Running Tests

Run unit tests only

./bin/rails test

Run system tests only (Headless)

./bin/rails test:system

Run system tests only (Not-Headless)

CI=false ./bin/rails test:system

Note: If system tests are failing for you, try prepending the command with APP_HOST=localhost. Your host might be misconfigured.

APP_HOST=localhost ./bin/rails test:system

Run ALL tests:

./bin/rails test:all

Troubleshoot

Test Errors - System tests Error TCP Connection refused Fix: chromium install [Case in point](https://github.com/rubyforgood/pet-rescue/pull/763#issuecomment-2140971709)

πŸ’… Linting

We use standard for linting. It provides a command for auto-fixing errors:

rails standard:fix

Authorization

If you find yourself writing a conditional checking the question, "Is the user allowed to view/do this?" that is an authorization concern. Homeward Tails utilizes the gem Action Policy as our authorization framework. If you are familiar with Pundit, you will see many similarities. If you want to learn more about authorization or have questions about how Action Policy works, their documentation is excellent. If you would like a quick onboarding to how Action Policy is used in Homeward Tails, see our wiki page on authorization.

πŸ”¨ Tools

This google sheets contains a list of tools, their purposes, and who has access to grant permissions.

🀝 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:

πŸ“– About

Ruby for Good

Homeward Tails 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

🌟 Core Values

While vision is the destination, and strategy is how we'll get there, core values are what we'll use to handle times of change or uncertainty (both of which are expected, guaranteed to happen, and positive signs of growth!).

We are committed to promoting positive culture and outcomes for all, from coders and maintainers and leads to pet rescue and adoption administrators -- and animals everywhere.

We will lean on the following as guiding principles when interacting with others -- stakeholders, as well as current and future maintainers, leads, and collaborators -- and we ask that anyone engaging with this project in any capacity to do the same. Know that we do want to know how and when (not if) we can improve upon these values and/or the way in which we live by and act in accordance with them, so please comment here and in PRs when you have ideas.

Here are our core values defined by early contributors and leads:

Code Quality and Collaboration

Write maintainable code that is accessible and enjoyable (for beginners and seasoned coders alike), supports and encourages contributors and their contributions, and ensures long-term sustainability of this project and the efforts it supports.

Communication and Perspective:

Prioritize clear communication, embrace diverse viewpoints, and always engage feedback -- all with a commitment to timely responses and ongoing improvement for all. Rescue and adoption partner perspectives will be prioritized over abstracted conceptualization of their needs.

Engagement and Practicality:

Build upon stakeholder partnerships to foster and encourage their active involvement, focusing constructive discussion and dispute resolution on the practical impact of our collective work.


πŸ“šKnowledge Base

Useful resources

These are some resources that may help with contributing to the codebase

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Ben
Ben

πŸ’»
Marlena Borowiec
Marlena Borowiec

πŸ’»
Piotr Borowiec
Piotr Borowiec

πŸ’» πŸ‘€
Yuri Pains
Yuri Pains

πŸ’»
Jarrod Reyes
Jarrod Reyes

πŸ’»
Erin Claudio
Erin Claudio

πŸ’»
Edwin Mak
Edwin Mak

πŸ’»
Jade Stewart
Jade Stewart

πŸ’»
Vernes
Vernes

πŸ’»
Michael Marchand
Michael Marchand

πŸ’»
Yuji K.
Yuji K.

πŸ’»
Justin
Justin

πŸ’»
Goran
Goran

πŸ’»
Phong Pham
Phong Pham

πŸ’»
Diego Linhares
Diego Linhares

πŸ’»
Egemen Γ–ztΓΌrk
Egemen Γ–ztΓΌrk

πŸ’»
Alisa
Alisa

πŸ’»
Sree P
Sree P

πŸ’»
Eric Tillberg
Eric Tillberg

πŸ’»
Tomaszabc
Tomaszabc

πŸ’»
BALAJI . A . T
BALAJI . A . T

πŸ’»
Ken Maeshima
Ken Maeshima

πŸ’»
Mason Roberts
Mason Roberts

πŸ’»
Mayank Bhatt
Mayank Bhatt

πŸ’»
Jeevika Sirwani
Jeevika Sirwani

πŸ’»
Jade
Jade

πŸ’»
Mehran Javid
Mehran Javid

πŸ’»
Bryan Witherspoon
Bryan Witherspoon

πŸ’»
David Wilson
David Wilson

πŸ’»
Gabe D
Gabe D

πŸ’»
Greggory Rothmeier
Greggory Rothmeier

πŸ’»
Tim Pope
Tim Pope

πŸ’»
Ian Candy
Ian Candy

πŸ‘€
Vaughn Weiss
Vaughn Weiss

πŸ’»
Harshit Chaudhary
Harshit Chaudhary

πŸ’»
Lindsey Bieda
Lindsey Bieda

πŸ’»
Sean Dickinson
Sean Dickinson

πŸ’»
Oliver Coley
Oliver Coley

πŸ’»
Nidhi Sarvaiya
Nidhi Sarvaiya

πŸ’»
Evan Light
Evan Light

πŸ’»
Kirin
Kirin

🎨
albertabney
albertabney

πŸ’»
Tacabr0n
Tacabr0n

πŸ’»
Jamey Alea
Jamey Alea

πŸ’»
Naraveni
Naraveni

πŸ’»
maebeale
maebeale

πŸ‘€
Meg Gutshall
Meg Gutshall

πŸ’»
Jaxon
Jaxon

πŸ’»
Alex Cohen
Alex Cohen

πŸ’»
Kristine Sevilla
Kristine Sevilla

πŸ’»
Chris Flipse
Chris Flipse

πŸ’»
Trevor Robinson
Trevor Robinson

πŸ’»
pshong79
pshong79

πŸ’»
Aaryan
Aaryan

πŸ’»
Ítalo Matos
Ítalo Matos

πŸ’»
Basil Gray
Basil Gray

πŸ’»
Noah Durbin
Noah Durbin

πŸ’»
Kate Higa
Kate Higa

πŸ’»
Cory Streiff
Cory Streiff

πŸ‘€
Wuletaw Wonte
Wuletaw Wonte

πŸ’»
michascant
michascant

πŸ’»
Jordy Williams
Jordy Williams

πŸ’»
Tamir
Tamir

πŸ’»
palidii
palidii

πŸ’»
Isaac Alter
Isaac Alter

πŸ’»
Amy McCaughan
Amy McCaughan

πŸ’»
jrussell416
jrussell416

πŸ’»

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