Information about after-school programs is scattered across flyers, websites, and social media. It’s difficult for parents/students to discover, evaluate, and join the right activities.
- Base font size: 14px
- Primary color: Blue
- Secondary color: Gold
- Color Palette Link: https://coolors.co/palette/000000-14213d-fca311-e5e5e5-ffffff
- Students (grades 1–12): tutoring, clubs, sports
- Parents/Guardians: safe, age-appropriate activities (local or online)
- Organizers/Coaches/Teachers: create and manage events
- User accounts + profiles (students, parents, organizers)
- Create and manage events (sports/tutoring/language)
- Browse events (list + detail)
- Join events
- Save/favorite events
- Organizer dashboard (see your events + participants)
- Ratings/reviews for events
- Search and filters (category, city, online/local)
- Ruby: 3.3.6 (latest stable)
- Rails: 7.2.3 (latest stable)
- Database: Postgres
- CSS: Tailwind (tailwindcss-rails)
- Testing: RSpec
- Auth: Devise
- Roles: Rolify (supports multi-role users like parent + organizer)
- Authorization: Pundit
- Linting: RuboCop
- CI: GitHub Actions (RSpec + RuboCop)
We are intentionally keeping this small.
- User
- Event
- Enrollment (user joins event)
- Favorite (user saves event)
- Review (ratings/comments)
Users can have multiple roles (e.g., parent + organizer). Roles are managed through Rolify. Permissions are enforced through Pundit policies.
We use two protected branches:
main= stable, demo-readydev= integration branch
Create feature branches off dev:
name/description/ticketname/bugfix/ticket
- One ticket per PR
- Keep PRs small and testable
- Include testing steps in PR description
- CI must pass (RSpec + RuboCop)
Do not push directly to dev or main. Always open a PR.
- Ruby 3.3.6 installed (rbenv recommended)
- Postgres installed and running
- Bundler installed
git clone <REPO_URL>
cd <REPO_NAME>bundle installbin/rails db:create
bin/rails db:migratebin/rails db:seedbin/devor
bin/rails s
./bin/rails tailwindcss:install # in another terminalbundle exec rspecbundle exec rubocopbundle exec rubocop -Abin/rails db:drop db:create db:migrate db:seed- Devise handles login/signup
- Rolify stores roles (multi-role supported)
- Pundit enforces permissions in policies (source of truth)
Rules we enforce:
- Only organizers can create/edit events
- Users must be logged in to join or favorite
- Only enrolled users can leave reviews (if reviews are implemented)
We work in 2-week sprints. Each ticket should include:
- Feature implementation
- Validation + error handling
- Loading + empty states (where relevant)
- Authorization checks (where relevant)
- Tests when practical
- Pull latest
dev:
git checkout dev
git pull- Create a branch:
git checkout -b new_branch_name- Commit often:
git add .
git commit -m "Implement <ticket>"- Push and open PR to
dev:
git push- In the PR description include:
- What changed
- How to test
- Ticket link
Run locally:
bundle exec rubocop -A
bundle exec rubocopEnsure your branch is up to date:
git checkout dev
git pull
git checkout <your-branch>
git merge dev- Use Slack for blockers and coordination
- If you edit shared models or migrations, post a heads-up in Slack first
- We aim to check Slack daily and respond back messages (emoji is fine)