[$250] Build a Contribution Leaderboard for External Contributors
Please make sure to read this through the below Guidelines before attempting the problem statements
Contribution Guidelines Bounty Program Guidelines Terms of Contest
Context:
We've been seeing growth in external contributions but are facing challenges in effectively incentivizing regular contributors. To recognize and support these contributors, we want to build a leaderboard that tracks and displays contributions from external contributors only. This leaderboard will encourage further community involvement by recognizing top contributors and rewarding them.
User Stories:
-
External Contributor:
As an external contributor, I want to see my ranking and the number of points I've earned so that I can track my progress and compare it with others. -
Admin:
As an admin, I want to ensure the leaderboard only includes external contributors and accurately assigns points to specific issues, ensuring fair competition and excluding internal contributions. -
User:
As a user, I want to view the top external contributors to recognize their efforts and be inspired to contribute more. When I view the leaderboard, I should be able to see the specific contributions each individual has made.
Features:
Leaderboard Display:
- A dynamic leaderboard showing the top external contributors, their rankings, and the number of points earned.
- Option to filter leaderboard results by time frame (daily, weekly, monthly) and contribution categories.
- Ability to view individual contributions made by each external contributor.
Contribution Tracking:
- Automatic tracking of external contributors’ activities via GitHub API.
- The ability to assign points to specific issues tagged by admins.
- Fetch data from GitHub on pull requests, commits, issues resolved, and other relevant contributions, but only for external users.
Point Assignment System:
- Admins can tag specific issues for the leaderboard to track.
- Admins can assign different point values to issues based on complexity, priority, or strategic importance.
- Points are awarded to contributors after the successful merging of pull requests or resolution of tagged issues.
User Profiles:
- Each contributor will have a profile page displaying their total points, ranking, and contributions made.
- Option to link to contributors’ GitHub profiles for transparency and community engagement.
Admin Dashboard:
- Admins can manage the leaderboard, assign points to issues, and exclude internal users.
- Ability to filter contributors by time frame and activity categories.
Technical Requirements:
Frontend:
- A responsive web interface that integrates with the existing platform UI/UX.
Backend:
-
Airtable Integration:
Use Airtable as the primary database for storing user data, contribution details, point assignments, and leaderboard information.- Configure an Airtable base with tables for Contributors, Issues, Points, and Leaderboard rankings.
- Implement API calls to fetch, update, and manage data in Airtable.
Integration:
- GitHub API integration for real-time data on external contributions.
- Secure authentication and authorization mechanisms for admins and contributors.
Performance Requirements:
- The leaderboard should update in near real-time as contributions are made and validated.
- Efficient handling of API calls and data processing to avoid performance bottlenecks.
Security Requirements:
- Secure authentication via GitHub for users and admins.
- Protection against web vulnerabilities (e.g., preventing unauthorized access, data validation).
Acceptance Criteria:
- A dynamic leaderboard is displayed that ranks external contributors by points.
- Internal contributors are automatically excluded.
- Points are accurately assigned to specific issues and tracked in real-time.
- Admins can manage points, contributors, and trends from the dashboard.
Hello @neerajkumar-n, I would love to contribute by working on the issue #6093. Could you please assign it to me under the upcoming Hacktoberfest. I'm eager to help and make meaning contributions.
@Rushhaabhhh - I have updated the problems with the Guidelines, request you to gothorugh this and confirm before assigning. Thanks
Hey @neerajkumar-n, I have read through all the guidelines and I am ready for the project. i have a doubt tho, the leaderboard needs to be made separately and not in the hyperswitch repo right?
Yes @Rushhaabhhh. However, please make sure that this repo has all the relevant Licences so it can be used by Hyperswitch.
At least for this project, would request you to follow Hyperswitch's brand color which can be picked from our Website.
I have assigned the issue to you. Please comment if there are any doubts here or in our community channels
@neerajkumar-n I have a few doubts regarding the project :
-
Tech Stack Choice : I am proficient in the MERN stack, so would it be acceptable to use React for the client-side, Node.js for the server, and Airtable as the database? Or is there a specific tech stack that we are required to use for this project?
-
Authentication and User Roles :
- Should the application support both email-based login/signup authentication and GitHub login, or should GitHub login be the only option?
- How should the app distinguish between different user roles like contributors, admins, and regular users?
- Is it necessary for the user to log in before viewing any data, or should there be a landing page that restricts certain information while allowing some public access?
-
Hacktoberfest Eligibility : Is this contribution valid and eligible for Hacktoberfest?
-
Bounty Distribution : Could you clarify how the bounty or any form of reward will be distributed for the contributions made?
-
Any specific requirements from your side other than the mentioned ones ?
Looking forward to your guidance and feedback on these questions to proceed accordingly! Thanks again for assigning the issue.
hey @neerajkumar-n , i would love contributing to this issue please assign me this issue
@Robinaditya1045 - This issue is already assigned, however - we have many issues which are open to contribute:
https://github.com/juspay/hyperswitch/issues?q=is%3Aissue+is%3Aopen+label%3Ahacktoberfest+no%3Aassignee
@neerajkumar-n I accidently unassigned myself, can you please assign me again and adhere to the doubts asked so I can start working on it. Thank you
@neerajkumar-n What is the procedure for handling bounty issues? Is it that only the person assigned can contribute, while others must wait for the assignee to be unassigned if they are unable to complete the work? If so, what is the time frame for unassignment if the assignee is not able to finish the task?
@neerajkumar-n Can you please answer the doubts so that I can start working on the issue.
@Rushhaabhhh - here you go:
Tech Stack Choice : Your preference
Other questions.
- Github based Login alone
- Ideally there should be just 2 users: Contributors & Admins. This is differentiated by ACLs: Admin & Contributor
- The users should have Public view access.
- Yes, you can create a PR with the Repo details along with the How to's info which can be marked as accepted.
- Sure, will update the Bounty Program Guidelines. Will drop a note here once done. In a nutshell, we verify/ask you to showcase the built product over a call. Once verified, we will collect the required details for the bounty and the communication will be over the email as the process is further handled by the Finance team to transfer the Money [please make sure to read terms of contest from the issue].
Hope this answers your question.
can you assign this to me?
@neerajkumar-n Okay! Will update you with the first draft in a day or two to proceed further.
can you assign this to me?
@RajVerma97 - @Rushhaabhhh is already working on this.
Hey @Rushhaabhhh Kindly share the progress here, Thanks!
https://github.com/user-attachments/assets/4ec45d10-f5f6-40ae-ab56-65fd573237fe
@neerajkumar-n, @gorakhnathy7
Current Progress :
- Implemented designs inspired by Hyperswitch for the Hero, Features, and Leaderboard sections.
- Integrated GitHub authentication with successful login and data fetching.
- Implemented functional navigation bar and footer section with links and buttons.
Next Steps :
- Open to UI feedback and suggestions for further refinement of the sections. Guidance needed on further UI changes and requirements to improve the overall user experience.
- Will continue iterating on the design to ensure a more unique, polished feel.
- Integration and implementation of github api for data fetching to show leaderboard.
@Rushhaabhhh -
Can you tell me:
- Where I can define Contributor vs Admin?
- UI is decent, wouldn't require much changes
- What does View Details entail?
- Can we just have Leaderboard Page and signup option in the same page itself?
- How does points distributions work? Is there any backend where it's defined?
@neerajkumar-n -
- While the implementation is still in progress, roles can be assigned in two main ways :
- Manual Selection : Admins can manually update specific users to admin via a backend admin interface.
- GitHub Organization : Using the github api, users in the GitHub organization are automatically assigned the admin role.
-
The View Details link takes you to the user’s profile page. Let me know if you need any enhancements to the profile view.
-
Yeah sure, I'd love to know more about the flow. How many pages are we looking at, and what sections do you envision on each page?
-
Points are handled by the backend through APIs. Admins can tag issues with a points value (based on complexity or priority). When an external contributor resolves an issue or submits a merged PR, points are automatically assigned.
I hope this answers your questions, if you have any further questions or need refinements, let me know!
@neerajkumar-n -
Current Progress
- Implemented dynamic leaderboard on landing page with search bar, time filter and sort
- Set up data fetching and data saving on Airtable
- Developed the profile page displaying user details
Assistance Needed
As we approach the final stages of this project, I have a few critical questions that need clarification to ensure a smooth progression :
-
User Classification : What criteria should we use to categorize users as external or internal? I have encountered working professionals from Hyperswitch who have contributed to the repository ; could you clarify this distinction?
-
Admin Determination : How do we identify who qualifies as an admin? Will you provide a predefined list of admins, or should I implement a system for admin login? Understanding this will help in efficiently managing user permissions.
-
Points Distribution System : Could you elaborate on the points distribution system? Specifically, how will points be allocated? For example, will points be awarded for each completed issue, according to specific labels, or through another method? Clear guidelines on this will aid in creating a fair and motivating points system.
I am nearing the submission of the project, I look forward to your guidance as we finalize the development.
@Rushhaabhhh - Let me get back to you with this by EOD tomorrow. If any of your questions requires urgent attention, please do connect over our community channels.
@neerajkumar-n Any updates on the doubts ??
@Rushhaabhhh -
Here you go:
- Will update soon here.
- Admin Determination: This should be controlled by an Admin Panel. You create/assign the Admin Role to one User and he/she will be SuperAdmin and will be able to assign Admin roles to users.
- Points Distribution System:
Unlabelled Points per Completed Issue: Contributors will earn a 5 points for each issue they complete. This ensures that participants are rewarded for resolving problems and making tangible contributions. Label-Based Points Allocation: Issues will have different labels (e.g., "Easy," "Medium," "Hard"), each corresponding to a distinct point value. For example:
- Easy: 5 points
- Medium: 10 points
- Hard: 20 points
Good to Have for point 3:
Bonus Points for First-Time Contributors: New contributors can receive extra points for their first pull request, promoting inclusivity and encouraging newcomers to participate.
Special Points for Key Contributions: Points may be awarded for special achievements, such as creating new features, fixing critical bugs, or providing significant code improvements. These contributions will be identified and approved by the maintainers.
@neerajkumar-n , @gorakhnathy7 -
https://drive.google.com/file/d/1hAEOpx81l5lPHt1JKi9ndQqExSZw2Ihw/view?usp=drivesdk
- Please review the current website UI and suggest any improvements or adjustments.
- Leaderboard Storage : Should leaderboard data be stored in Airtable, and if so, should it dynamically update or how ?
- Role Management : Who will be the superadmin responsible for assigning other admins?
- Points System : Is the current distribution correct, or should it be revised?
- Base Points : 5
- Label Points : Easy - 5, Medium - 10, Hard - 20
- First-Time Contributor Bonus : 15
- Special Labels: Feature - 25, Critical Bug - 30, Major Improvement - 20, Enhancement - 15, Security - 35, Performance - 20
- Submission Process : Are there specific instructions for code deployment, licensing, and linking to the issue? Currently, I am using the Apache License, as provided in the Hyperswitch repository. Please clarify the timeline and steps for final project submission.
@neerajkumar-n Any updates on the project ?
@Rushhaabhhh - Checking this today.
Incase you don't see responses here, recommend you to reach out to us on Slack. Thanks.
@Rushhaabhhh - can we connect over Slack? I have a few questions regarding Github Connect.