Skip to content

feat: add Weekly Progress Matrix tracker dashboard - #131

Open
AbiramiR-27 wants to merge 2 commits into
AOSSIE-Org:mainfrom
AbiramiR-27:feat/weekly-progress-tracker
Open

feat: add Weekly Progress Matrix tracker dashboard#131
AbiramiR-27 wants to merge 2 commits into
AOSSIE-Org:mainfrom
AbiramiR-27:feat/weekly-progress-tracker

Conversation

@AbiramiR-27

@AbiramiR-27 AbiramiR-27 commented Jul 30, 2026

Copy link
Copy Markdown

📝 Description of Changes

This Pull Request implements the Weekly Progress Tracker & Contribution Matrix dashboard (originally suggested in Wishlist Item #2 of FeatureWishlist.md).

It provides an interactive, centralized spreadsheet-like grid that lists organization contributors along with a week-by-week chronological breakdown of their development activity (PRs opened, merged, closed, and issues raised) for any specified date range (such as GSoC coding period limits).

Key Features:

  • Dynamic Range Partitioning: Converts start/end configuration dates into custom 7-day intervals (e.g. Week 1 to Week 14).
  • Sidebar Contributor Filters: Multi-select panel to filter and select/deselect developers to include, with quick selection presets (Top 5, Top 10, Clear).
  • Parallel Fetch Pipeline: Queries GitHub search API in parallel with AbortController cancelation context bindings to prevent memory leaks and minimize rate-limiting footprints.
  • CSV Exporter: Generates a matrix report download (weekly-progress-matrix-*.csv) to easily transfer data directly into spreadsheets.
  • Detail Popup Modals: Clicking any cell lists the exact title, status, and direct links of all PRs/Issues submitted in that week.

Addressed Issues:

Fixes #130


Screenshots/Recordings:

image

Additional Notes:

  • Includes built-in caching: checking/unchecking users in the sidebar loads new data instantly without repeating duplicate API queries.
  • Handles rate-limit status checks elegantly inside grid cells if Personal Access Token limits are reached.
  • Tested production build successfully using vite build (1225 modules transformed cleanly).

Checklist

  • My code follows the project's code style and conventions
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings or errors
  • I have joined the Discord server and I will share a link to this PR with the project maintainers there
  • I have read the Contributing Guidelines

Summary by CodeRabbit

  • New Features
    • Added a Progress Tracker page with a weekly contribution matrix for selected contributors.
    • Added contributor selection, username filtering, date-range controls, and Top 5/Top 10 presets.
    • Added weekly details via clickable cells, with links to GitHub items.
    • Added CSV export for progress data.
    • Added Progress Tracker navigation to the app.

@github-actions github-actions Bot added enhancement New feature or request frontend Frontend changes javascript JavaScript/TypeScript changes size/XL 500+ lines changed first-time-contributor First time contributor labels Jul 30, 2026
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@AbiramiR-27, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 46 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 2cc8f107-5e4f-453b-9da6-3445e4e467e7

📥 Commits

Reviewing files that changed from the base of the PR and between b652efc and de54ba2.

📒 Files selected for processing (1)
  • src/pages/ProgressTrackerPage.jsx

Walkthrough

Adds a /progress route and navigation entry for a new weekly contribution matrix. The page fetches GitHub issues and pull requests, aggregates weekly contributor activity, supports filtering and presets, exports CSV data, and displays item details in a modal.

Changes

Weekly Progress Tracker

Layer / File(s) Summary
Route and navigation integration
src/App.jsx, src/components/Navbar.jsx
Registers /progress and adds the Progress Tracker navigation link.
GitHub data and weekly aggregation
src/pages/ProgressTrackerPage.jsx
Fetches paginated issues and merged pull requests, tracks request state, resolves merge status, and groups items by contributor and week.
Matrix, export, and details UI
src/pages/ProgressTrackerPage.jsx
Adds date and contributor controls, matrix rendering, CSV export, loading/error states, and a weekly details modal.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant ProgressTrackerPage
  participant GitHubSearchAPI
  participant pullsData
  ProgressTrackerPage->>GitHubSearchAPI: Fetch issues and merged pull requests
  GitHubSearchAPI-->>ProgressTrackerPage: Return paginated contribution items
  ProgressTrackerPage->>pullsData: Resolve pull request merge status
  pullsData-->>ProgressTrackerPage: Return local merge matches
  ProgressTrackerPage->>ProgressTrackerPage: Aggregate items into weekly matrix statistics
Loading

Suggested labels: Typescript Lang

Suggested reviewers: rahul-vyas-dev

Poem

I’m a rabbit with a weekly chart,
Counting every merged PR part.
Issues hop through rows so neat,
CSV carrots make exports sweet.
Click a cell—details appear,
Progress blooms from week to year!

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: adding a Weekly Progress Matrix tracker dashboard.
Linked Issues check ✅ Passed The PR implements the weekly contributor matrix, date filtering, modal details, caching, CSV export, and GitHub-backed metrics requested in #130.
Out of Scope Changes check ✅ Passed The changes stay focused on the tracker page, routing, and navbar entry with no obvious unrelated functionality added.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added size/XL 500+ lines changed and removed size/XL 500+ lines changed labels Jul 30, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/pages/ProgressTrackerPage.jsx`:
- Around line 240-262: Optimize getWeeklyStats by precomputing contributor/week
statistics in a useMemo keyed by cache and weeks, rather than filtering and
parsing items during each render invocation. Parse each item’s created_at
timestamp once while building the memoized buckets, preserve the existing
merged/open/closed/issues counts and items, and have getWeeklyStats read the
precomputed result.
- Around line 422-436: The contributor selector around toggleSelect must be
keyboard accessible: replace the clickable div with a real checkbox, or add
checkbox semantics, focusability, and Enter/Space handling while preserving
checked state. Also update src/pages/ProgressTrackerPage.jsx lines 511-530 so
the weekly detail modal trigger uses a type="button" inside the table cell when
total > 0, rather than attaching onClick to the td.
- Around line 104-113: Update the week-end normalization in the weekly range
construction around current, weekEnd, and endLimit to use UTC hour mutation
rather than local-time mutation. Replace the local-time boundary operation with
its UTC equivalent so weekEnd remains aligned with the UTC-based values used by
getWeeklyStats and the existing endLimit comparison.
- Around line 208-222: Update toggleSelect so the setSelectedLogins updater only
computes and returns the toggled Set, without aborting requests or mutating
abortControllersRef. Determine whether the login is being deselected in the
handler body, then perform the corresponding abort and ref cleanup outside the
state updater.
- Around line 555-581: Update the modal rendered by the modalData conditional to
provide dialog semantics with role="dialog", aria-modal="true", and an
accessible label; close it on Escape and backdrop clicks while stopping
propagation from the inner card. Add focus management that moves focus into the
modal, traps Tab navigation within it, and restores focus to the triggering
element when setModalData(null) closes the dialog.
- Around line 198-205: Update the progress-fetch catch flow in the effect
containing the AbortError branch to clear loadingMap[login] and remove the
login’s stale controller before returning for an aborted request. Replace the
stale closure reads used by toggleSelect’s cache/loading guard with a ref-backed
in-flight tracking mechanism, keeping it synchronized with fetch start,
completion, and abort so re-selection can refetch correctly.
- Around line 142-145: Update the GitHub search URLs in the data-fetching logic
to include a created-date qualifier spanning startDate through endDate, and
ensure both issue and merged-PR queries use it. Include startDate and endDate in
the relevant effect dependencies so changing the range refetches data, and
include both dates in the cache key to prevent reuse across ranges.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 8fa32d1a-4c10-4bcc-a1da-fb5332c108a1

📥 Commits

Reviewing files that changed from the base of the PR and between 64199f7 and b652efc.

📒 Files selected for processing (3)
  • src/App.jsx
  • src/components/Navbar.jsx
  • src/pages/ProgressTrackerPage.jsx

Comment thread src/pages/ProgressTrackerPage.jsx
Comment thread src/pages/ProgressTrackerPage.jsx Outdated
Comment thread src/pages/ProgressTrackerPage.jsx Outdated
Comment thread src/pages/ProgressTrackerPage.jsx
Comment thread src/pages/ProgressTrackerPage.jsx Outdated
Comment thread src/pages/ProgressTrackerPage.jsx
Comment thread src/pages/ProgressTrackerPage.jsx
@github-actions github-actions Bot added size/XL 500+ lines changed and removed size/XL 500+ lines changed labels Jul 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request first-time-contributor First time contributor frontend Frontend changes javascript JavaScript/TypeScript changes size/XL 500+ lines changed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE]: Centralized Weekly Progress Tracker & Contribution Matrix

1 participant