Analytics Help
Analytics Help
Overview
-
The Nighthawk Coders’ portfolio dashboard visualizes your GitHub activity and predicts grades based on real contributions.
-
Designed for both students and admins to track, review, and improve coding engagement.
-
Focuses on clarity, interactivity, and actionable insights.
Dashboard Features
- Tabbed Interface:
- GitHub Analytics: View your profile, commits, PRs, issues, and code changes.
- Grade Predictor: Estimate your grade using real GitHub data.
- Admin Search: Admins can look up and compare any user’s contributions.
- Interactive Commit Cards:
- Each card links directly to the commit on GitHub.
- Shows message, date, additions, deletions, and repository.
- Modal Popups:
- Click info icons to view raw JSON analytics for commits, PRs, and issues.
- Admin Tools:
- Search by UID to get a user summary and recent commit cards.
API Overview
-
Blueprint:
/api/analytics
- Security:
- All endpoints require JWT authentication (
@token_required
). - Admin endpoints require admin role.
- All endpoints require JWT authentication (
- Date Ranges:
- Optional; defaults to trimester logic (June–Nov, Nov–Mar, Apr–June).
- Error Handling:
- Clear error messages for invalid UIDs, API issues, or permission errors.
API Endpoints
- User Endpoints (JWT Protected):
GET /github/user
— Fetch your GitHub profile data.GET /github/user/profile_links
— Get links to your GitHub profile and repositories.GET /github/user/commits
— Get commit stats, additions, deletions, and details.GET /github/user/prs
— List your pull requests.GET /github/user/issues
— List your created issues.GET /github/user/issue_comments
— Your comments on issues.GET /github/user/received_issue_comments
— Comments received on your issues.
- Admin Endpoints:
GET /commits/<uid>
— View another user’s commit data (admin only).GET /issues/<uid>
— View another user’s issue data (admin only).
- Organization Endpoints:
GET /github/org/<org_name>/users
— List users in a GitHub organization.GET /github/org/<org_name>/repos
— List repositories in a GitHub organization.
Backend Logic
- Authentication:
- All endpoints require a valid JWT token.
- Admin endpoints check for admin role.
- Date Handling:
- If no date range is provided, the API uses trimester logic to select a relevant period.
- GitHub Data Collection:
- Uses both REST and GraphQL APIs for detailed commit, PR, and issue data.
- Tracks additions, deletions, comments, and more.
- Error Handling:
- Returns clear error messages for invalid requests or API failures.
Model: GitHubUser
Class
- Purpose:
- Handles all GitHub data retrieval for a user.
- Key Methods:
get(uid)
— Fetches user profile.get_profile_links(uid)
— Returns profile and repo URLs.get_commit_stats(uid, start, end)
— Commit details, additions, deletions.get_pr_stats(uid, start, end)
— Pull request details.get_issue_stats(uid, start, end)
— Issue details.get_total_received_issue_comments(uid, start, end)
— Total comments received.
Smart Grade Logic
- Metrics Used:
- Total commits
- Lines added and deleted
- Number of PRs and issues
- Public repos and gists
- Followers and following
- Weighted Formula:
score += commits * 2 score += additions * 0.15 score += deletions * 0.1 score += prs * 3 score += issues * 1.5 score += repos * 1.2 score += gists * 0.5
- Grade Mapping:
- 90% (A): score > 70
- 80% (B): score > 50
- 70% (C): score > 30
- 55% (F): score ≤ 30
Visuals
-
User Story Flowchart:
-
API Diagram: