Skip to content

Code-the-Dream-School/k-group-practicum-team3

Repository files navigation

Problem

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.

Design tokens

Target Users

  • Students (grades 1–12): tutoring, clubs, sports
  • Parents/Guardians: safe, age-appropriate activities (local or online)
  • Organizers/Coaches/Teachers: create and manage events

Core Features (MVP)

  • 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)

Stretch Features (time-permitting)

  • Ratings/reviews for events
  • Search and filters (category, city, online/local)

Tech Stack

  • 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)

Data Model (Option A)

We are intentionally keeping this small.

  1. User
  2. Event
  3. Enrollment (user joins event)
  4. Favorite (user saves event)
  5. Review (ratings/comments)

Role Notes

Users can have multiple roles (e.g., parent + organizer). Roles are managed through Rolify. Permissions are enforced through Pundit policies.


Repo Workflow (IMPORTANT)

We use two protected branches:

  • main = stable, demo-ready
  • dev = integration branch

Branching

Create feature branches off dev:

  • name/description/ticket
  • name/bugfix/ticket

Pull Requests

  • One ticket per PR
  • Keep PRs small and testable
  • Include testing steps in PR description
  • CI must pass (RSpec + RuboCop)

No direct pushes

Do not push directly to dev or main. Always open a PR.


Getting Started

1) Prerequisites

  • Ruby 3.3.6 installed (rbenv recommended)
  • Postgres installed and running
  • Bundler installed

2) Clone the repo

git clone <REPO_URL>
cd <REPO_NAME>

3) Install dependencies

bundle install

4) Setup the database

bin/rails db:create
bin/rails db:migrate

5) Seed data (for development/demo)

bin/rails db:seed

6) Run the app

bin/dev

or

bin/rails s
./bin/rails tailwindcss:install # in another terminal

Development Commands

Run tests (RSpec)

bundle exec rspec

Run lint (RuboCop)

bundle exec rubocop

Auto-fix lint where possible

bundle exec rubocop -A

Reset DB (if you get stuck)

⚠️ This deletes local data.

bin/rails db:drop db:create db:migrate db:seed

Authentication / Authorization Notes

  • 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

How to Contribute

  1. Pull latest dev:
git checkout dev
git pull
  1. Create a branch:
git checkout -b new_branch_name
  1. Commit often:
git add .
git commit -m "Implement <ticket>"
  1. Push and open PR to dev:
git push
  1. In the PR description include:
  • What changed
  • How to test
  • Ticket link

Troubleshooting

CI fails on lint

Run locally:

bundle exec rubocop -A
bundle exec rubocop

“It works on my machine”

Ensure your branch is up to date:

git checkout dev
git pull
git checkout <your-branch>
git merge dev

Contact / Communication

  • 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)

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 7