-
-
Notifications
You must be signed in to change notification settings - Fork 511
Ruby for Good 2025 In Person Event ‐ Project Ideas
Unflake one (1) system spec by asserting DB change after submit
- Where: pick any “System Test Overhaul” issue and tackle that file (e.g.
spec/system/..._spec.rb). GitHub+1 - Pattern:
expect { click_button "Save" }.to change { Model.where(attrs).count }.by(1) - Done when: spec waits for page load (use
have_current_path/have_content) and asserts the DB changed once.
Make Admin Dashboard minimally responsive
- Where: the admin dashboard view + CSS utilities.
- Why: There’s an open issue calling this out. GitHub Issue
- Done when: On a ~375px viewport, cards stack, tables scroll, no horizontal overflow; add a view spec/screenshot note.
Wire the Scout Discord webhook (config only)
- Where: ENV/credentials + wherever the webhook is sent (likely an initializer/service).
- Why: Open maintenance task. GitHub Issue
- Done when: Test webhook posts successfully in non-prod with a dummy channel; config documented in README “Common issues”. Add missing NOT NULL + indexes for common filters
- Where:
db/migrate/* - How: Grep controllers for
where(...)/joins(...); add indexes for columns used in filters/sorts (e.g., foreign keys, status enums). - Done when: migration adds
null: falsewhere appropriate and b-tree indexes for query hot paths; explain rationale in migration comment. - Note: Repo is Rails 7; standards + tooling are present. Keep style consistent. NO GITHUB ISSUE FOUND
Convert one jQuery interaction to Stimulus
-
Where: pick a page still using inline jQuery; rewrite as a Stimulus controller per README refactor note. NO GITHUB ISSUE FOUND
-
Done when: no inline JS; behavior lives in
app/javascript/controllers/*_controller.js, tested with a system spec.// app/javascript/controllers/toggle_controller.js import { Controller } from "@hotwired/stimulus" export default class extends Controller { static targets=["panel"]; toggle(){ this.panelTarget.classList.toggle("hidden") } }
Add OpenAPI validation to CI for **swagger/v1**
- Where:
swagger/v1/*, GitHub Action. - How: Use
swagger-cli validateoropenapi-generator-cli validate. - Done when: CI fails on invalid schema; add a README line “Validating API schema”.
- Context: Swagger dir exists. NO GITHUB ISSUE FOUND
Document and add a Docker healthcheck
- Where:
Dockerfileand/ordocker-compose.yml - How: Add
HEALTHCHECK CMD curl -f[http://localhost:3000/health](http://localhost:3000/health)|| exit 1 - Done when:
docker psshows healthy; compose respects it. - Context: Docker files exist. NO GITHUB ISSUE FOUND
Lock in linter autofix commands in contributing guide snippet
- Where:
README.md“Developing!”
- Why: Make the 3 lint commands copy-pasteable in one task runner (e.g.,
bin/lint:fix). - Done when:
bin/lint:fixrunsstandardrb --fix,erblint --autocorrect,npm run lint:fix; docs updated. NO GITHUB ISSUE FOUND
Fix “Report a site issue” link target
- Where: search for “report a site issue” in views and partials.
- Why: Needs to go to an email/form the org controls. GitHub Issue
- Done when: Link points to the new destination; capybara test asserts correct href.
expect(page).to have_link("Report a site issue", href: expected_url)
Case Contact table UX revamp (scoped sub-component)
- Where: Implement a new table with accessible sorting, sticky header, and server-side pagination.
- Why: There’s an open “New Case Contact Table” effort; carve out a self-contained piece (e.g., sort + sticky header). GitHub Issue
- Done when: Keyboard-navigable header sorts; aria-sort updates; feature spec covers sort order.
Admin mobile layout audit (site-wide)
- Where: Core layouts + a couple high-traffic admin pages.
- How: Use CSS utilities to eliminate horizontal scroll, ensure tap targets ≥44px, consistent font scale.
- Done when: Lighthouse “Best Practices/Accessibility” improves on mobile; notes in PR.
- Trigger: “Mobile View for Admin Dashboard” indicates this need. NO GITHUB ISSUE FOUND
AfterParty tasks: idempotency + guardrails
- Where:
lib/tasks/after_party/* - How: Ensure each task checks for prior completion, wraps in transaction, logs result, and short-circuits safely.
- Done when: running
bin/updaterepeatedly is safe; add a test that re-runs tasks without side effects. - Context: AfterParty is in use. NO GITHUB ISSUE FOUND
Policy spec coverage pass for Pundit policies
- Where:
app/policies/*,spec/policies/* - How: Ensure each role’s allow/deny matrix is covered; add shared examples to standardize.
- Done when: 100% branch coverage for policies; one shared example reused everywhere.
- Context: Pundit is part of stack. NO GITHUB ISSUE FOUND
OpenAPI → request spec sync
- Where: choose 2–3 endpoints; write request specs that assert response schema using the swagger file.
- Done when: CI validates example responses match schema (e.g.,
json-schemagem), preventing drift. - Context:
swagger/v1present. NO GITHUB ISSUE FOUND
System spec stabilization strike team
- Scope: Triage the “System Test Overhaul” set and create a repeatable pattern: (1) assert navigation, (2) assert DB change, (3) de-flake waits.
- Output: A documented recipe + refactor 5–8 files. Issues exist for many specific specs. [NO GitHub ISSUE] Stimulus migration sprint
- Scope: Inventory all jQuery usages; migrate a cluster (e.g., table filters + modals) to Stimulus with targets/actions.
- Output: A mini styleguide for controllers; 3–4 pages migrated; remove dead jQuery. The refactor is already signposted. NO GITHUB ISSUE FOUND
Performance pass: N+1 and indexing
- Scope: Add Bullet (if not already) in dev/test, run high-traffic pages, kill N+1s with
includes, add composite indexes for the worst offenders. - Output: Before/after log showing eliminated queries; migration adding composite index; docs “How to run Bullet”.
API contract tests + schema docs pipeline
- Scope: CI job that (a) validates
swagger/v1, (b) fails on breaking changes unless aBREAKING_CHANGE.mdis updated, (c) publishes HTML docs artifact. - Output: New GitHub Action workflow; link added to README. NO GITHUB ISSUE FOUND
Container/dev-env parity
- Scope: Add
HEALTHCHECK, slim the image (multi-stage), ensuredocker-composesupports first-time contributors (seed, a fake mailer, storage). - Output:
docker-compose upleads to a working app + seeded admin in ≤1 command; README updated. NO GITHUB ISSUE FOUND
