BLT icon indicating copy to clipboard operation
BLT copied to clipboard

πŸ† Feature Request: Engaging Project Leaderboard with Comprehensive Stats

Open DonnieBLT opened this issue 10 months ago β€’ 58 comments

We propose developing a dynamic project leaderboard that not only showcases GitHub metrics but also integrates additional statistics to provide a holistic view of project performance. The leaderboard will be fun, engaging, and visually appealing while delivering in-depth insights. It should capture a wide range of statistics from GitHub (such as stars, forks, commits, pull requests, issues, etc.) and incorporate supplementary data (e.g., code quality scores, community engagement, social media influence, and external service integrations).

Feature Details: β€’ GitHub Metrics: β€’ Stars & Forks: Display real-time star and fork counts. β€’ Commits & Pull Requests: Count recent commits and pull requests to indicate development activity. β€’ Issues & Bug Reports: Monitor open vs. closed issues, average resolution time, etc. β€’ Releases: Show latest release dates and version progression. β€’ Additional Statistics: β€’ Code Quality: Integrate static analysis scores or code coverage reports from tools like SonarQube or Codecov. β€’ Community Engagement: Track metrics such as contributor count, discussion activity, and recent community events. β€’ Social Media Influence: Incorporate data like Twitter mentions, LinkedIn followers, or blog traffic if available. β€’ External Integrations: Optionally pull in metrics from related platforms (e.g., package downloads from npm, PyPI, or similar repositories). β€’ Leaderboard Features: β€’ Visual Presentation: β€’ A dynamic, animated leaderboard with progress bars, badges, and graphs. β€’ Each project entry displays its logo, name, and key stats at a glance. β€’ Fun animations to highlight significant changes (e.g., a project overtaking another or achieving a milestone). β€’ Filtering & Sorting: β€’ Users can filter projects by category, language, or organization. β€’ Sorting options based on various metrics (e.g., most stars, best code quality, highest community engagement). β€’ User Interaction: β€’ Hover effects or tooltips that reveal deeper insights. β€’ Options for users to β€œfavorite” projects or view detailed profiles. β€’ Responsive Design: β€’ Optimized for both desktop and mobile viewing. β€’ Data Aggregation & Refresh: β€’ The leaderboard should update periodically (or in real time, if feasible) by pulling data from: β€’ GitHub APIs for core repository metrics. β€’ External services for code quality, community metrics, and social media influence. β€’ Caching strategies may be implemented to ensure performance and avoid API rate limits. β€’ Technology Stack: β€’ Backend: Django (or similar framework) to manage data aggregation, caching, and API integrations. β€’ Frontend: A modern JavaScript framework (React, Vue, or plain HTML5/CSS3 with animations) for an engaging, real-time UI. β€’ Database: PostgreSQL (or a comparable database) to store project metrics and historical data for trend analysis.

AI Agent Coding Instructions:

You are an AI-assisted coder tasked with building an engaging project leaderboard for our GitHub repository/project statistics. Your responsibilities include:

  1. Repository & Data Integration:

    • Clone and set up the repository.
    • Integrate with the GitHub API to fetch essential project metrics (stars, forks, commits, pull requests, issues, and releases).
    • Integrate with external services (or simulate data) for additional stats such as code quality, community engagement, and social media influence.
    • Implement caching strategies to manage API rate limits and ensure fast data retrieval.
  2. Backend Development:

    • Create a Django app (e.g., "leaderboard") to aggregate and process the data.
    • Develop models to store the project metrics and historical data.
    • Build scheduled tasks (using Celery or Django's built-in scheduler) for periodic data updates.
    • Expose RESTful endpoints or WebSocket connections to provide real-time data to the frontend.
  3. Frontend Development:

    • Design a responsive, animated leaderboard interface using a modern JavaScript framework or Django templates enhanced with JavaScript.
    • Display project entries with logos, names, and key statistics in an engaging format (e.g., animated progress bars, graphs, badges).
    • Implement filtering, sorting, and hover effects for detailed insights.
    • Ensure smooth transitions and fun animations when leaderboard rankings update.
  4. Testing & Validation:

    • Write unit tests for the backend data processing and API integrations.
    • Create integration tests to verify that data flows correctly from the backend to the frontend.
    • Validate the responsiveness and usability of the leaderboard UI.
  5. Documentation:

    • Document the leaderboard architecture, configuration options, and data sources.
    • Provide inline code comments and update the README with setup instructions and usage examples.
    • Outline how to adjust the data refresh intervals and add new metrics if needed.

Generate the scaffolding code, including models, views, templates, API endpoints, and unit tests for this project leaderboard feature.

Acceptance Criteria: 1. Data Aggregation: β€’ The leaderboard successfully fetches and displays a wide range of GitHub metrics along with additional external statistics. β€’ Data refreshes periodically without manual intervention. 2. Visual & Interactive Interface: β€’ The leaderboard presents project stats in a fun, engaging, and visually appealing manner. β€’ Animations and interactions (e.g., tooltips, filtering, sorting) work smoothly across devices. 3. Real-Time Updates: β€’ The leaderboard reflects changes in metrics promptly (using either real-time updates via WebSockets or frequent polling). β€’ Significant metric changes are highlighted with animations. 4. Code Quality & Testing: β€’ The implementation follows coding standards, with clear documentation and inline comments. β€’ Unit and integration tests cover key functionality, ensuring reliability and maintainability. 5. Extensibility: β€’ The design allows for easy addition of new metrics or integration with additional data sources in the future.

DonnieBLT avatar Feb 01 '25 08:02 DonnieBLT

@DonnieBLT this idea is going to be for GSoC, right? So, do we need to assign ourselves or not?

nitinawari avatar Feb 01 '25 09:02 nitinawari

This is open to contribution now. Would like to have this one before GSOC starts so we can use it during.

DonnieBLT avatar Feb 01 '25 09:02 DonnieBLT

ok

nitinawari avatar Feb 01 '25 09:02 nitinawari

/assign

nitinawari avatar Feb 01 '25 09:02 nitinawari

Hello @nitinawari! You've been assigned to OWASP-BLT/BLT issue #3314. You have 24 hours to complete a pull request.

github-actions[bot] avatar Feb 01 '25 09:02 github-actions[bot]

/unassign

nitinawari avatar Feb 01 '25 09:02 nitinawari

/assign

nitinawari avatar Feb 02 '25 02:02 nitinawari

Hello @nitinawari! You've been assigned to OWASP-BLT/BLT issue #3314. You have 24 hours to complete a pull request.

github-actions[bot] avatar Feb 02 '25 02:02 github-actions[bot]

@DonnieBLT i want to ask which project structure will be better

  1. BLT/ β”œβ”€β”€ leaderboard/ <--- app β”‚ β”œβ”€β”€ migrations/ β”‚ β”œβ”€β”€ static/ β”‚ β”‚ β”œβ”€β”€ leaderboard/ β”‚ β”‚ β”‚ β”œβ”€β”€ frontend/ <-- React App β”‚ β”œβ”€β”€ templates/ β”‚ β”‚ β”œβ”€β”€ leaderboard/ β”‚ β”‚ β”‚ β”œβ”€β”€ index.html β”‚ β”œβ”€β”€ views.py β”‚ β”œβ”€β”€ models.py β”‚ β”œβ”€β”€ urls.py β”‚ β”œβ”€β”€ admin.py β”œβ”€β”€ BLT/ β”‚ β”œβ”€β”€ settings.py β”‚ β”œβ”€β”€ urls.py

or 2. BLT/ β”œβ”€β”€ leaderboard/ β”‚ β”œβ”€β”€ views.py β”‚ β”œβ”€β”€ models.py β”‚ β”œβ”€β”€ urls.py β”‚ β”œβ”€β”€ admin.py β”œβ”€β”€ frontend/ <-- Separate React App β”‚ β”œβ”€β”€ src/ β”‚ β”œβ”€β”€ public/ β”œβ”€β”€ BLT/ β”‚ β”œβ”€β”€ settings.py β”‚ β”œβ”€β”€ urls.py

nitinawari avatar Feb 02 '25 02:02 nitinawari

No react app

DonnieBLT avatar Feb 02 '25 11:02 DonnieBLT

In the issue, mentioned that we can use React. So, do we not have to use React?

nitinawari avatar Feb 02 '25 11:02 nitinawari

Yes plain HTML5 is fine. HTMX can be used too if needed

DonnieBLT avatar Feb 02 '25 11:02 DonnieBLT

⏰ This issue has been automatically unassigned due to 24 hours of inactivity. The issue is now available for anyone to work on again.

github-actions[bot] avatar Feb 04 '25 00:02 github-actions[bot]

⏰ This issue has been automatically unassigned due to 24 hours of inactivity. The issue is now available for anyone to work on again.

github-actions[bot] avatar Feb 04 '25 00:02 github-actions[bot]

/assign

nitinawari avatar Feb 04 '25 02:02 nitinawari

Hello @nitinawari! You've been assigned to OWASP-BLT/BLT issue #3314. You have 24 hours to complete a pull request.

github-actions[bot] avatar Feb 04 '25 02:02 github-actions[bot]

⏰ This issue has been automatically unassigned due to 24 hours of inactivity. The issue is now available for anyone to work on again.

github-actions[bot] avatar Feb 05 '25 13:02 github-actions[bot]

⏰ This issue has been automatically unassigned due to 24 hours of inactivity. The issue is now available for anyone to work on again.

github-actions[bot] avatar Feb 05 '25 13:02 github-actions[bot]

⏰ This issue has been automatically unassigned due to 24 hours of inactivity. The issue is now available for anyone to work on again.

github-actions[bot] avatar Feb 05 '25 13:02 github-actions[bot]

/assign

nitinawari avatar Feb 05 '25 16:02 nitinawari

Hello @nitinawari! You've been assigned to OWASP-BLT/BLT issue #3314. You have 24 hours to complete a pull request.

github-actions[bot] avatar Feb 05 '25 16:02 github-actions[bot]

⏰ This issue has been automatically unassigned due to 24 hours of inactivity. The issue is now available for anyone to work on again.

github-actions[bot] avatar Feb 07 '25 00:02 github-actions[bot]

⏰ This issue has been automatically unassigned due to 24 hours of inactivity. The issue is now available for anyone to work on again.

github-actions[bot] avatar Feb 07 '25 00:02 github-actions[bot]

⏰ This issue has been automatically unassigned due to 24 hours of inactivity. The issue is now available for anyone to work on again.

github-actions[bot] avatar Feb 07 '25 00:02 github-actions[bot]

⏰ This issue has been automatically unassigned due to 24 hours of inactivity. The issue is now available for anyone to work on again.

github-actions[bot] avatar Feb 07 '25 00:02 github-actions[bot]

Image @DonnieBLT I see that you’ve added the stats dashboard. Now, I need to extend it.

nitinawari avatar Feb 09 '25 11:02 nitinawari

@nitinawari that is something different I am working on

DonnieBLT avatar Feb 09 '25 11:02 DonnieBLT

Okay. Also, since the leaderboard path is occupied by the global leaderboard, on which path should we display these stats?

Additionally, do I need to show data for all OWASP projects or just the BLT project repositories?

nitinawari avatar Feb 09 '25 11:02 nitinawari

/project_leaderboard and it will be for all projects

DonnieBLT avatar Feb 09 '25 11:02 DonnieBLT

@coderabbitai please code this

DonnieBLT avatar Mar 16 '25 03:03 DonnieBLT