c-code-x / codex-website

https://codex-website-nu.vercel.app
5 stars 17 forks source link

Feature Request: Tailored Problem Practice Sheet from Codeforces #74

Open Jaideep-C opened 11 months ago

Jaideep-C commented 11 months ago

Issue Description

Context:

As fellow members of CodeX, I'm excited to share an idea for our Competitive Programming (CP) group. Picture this: a feature that empowers each one of us to effortlessly create a personalized problem practice sheet directly from Codeforces, focusing on a specific rating range.

Here's why this feature would be a game-changer for our CP group:

  1. Targeted Skill Improvement:

    • Ever felt the need to hone your skills in a particular rating range? With this feature, you can tailor your practice to match your current level and challenge yourself to the next one.
  2. Latest Contest Insights:

    • Stay ahead of the game by accessing problems from the most recent contests. The feature will intelligently order problems so that you can grasp the latest patterns and strategies employed in the recent contests.
  3. Efficient Problem Management:

    • No more sifting through irrelevant problems. Easily distinguish between problems you've solved, attempted, or haven't touched. It's a streamlined approach to managing your problem-solving journey.
  4. Customizable Tag Visibility:

    • Make the practice environment truly your own. Choose to see or hide problem tags based on your preferences. Whether you want a minimalist interface or a detailed breakdown, it's all in your hands.

Imagine the convenience and efficiency this feature would bring to our CP group members. It's not just a tool; it's a catalyst for our individual growth as competitive programmers.

Let's consider integrating this feature into our website, leveraging the power of the Codeforces public API to take our CP experience to the next level. Your thoughts and feedback on this idea are crucial, so let's discuss and shape the future of our CP group together!

Issue Details

Feature Requirements:

  1. Fetch Problems by Rating Range:

    • Users should be able to fetch all problems from recent contests within a given rating range (e.g., 1100 to 1200).
    • The fetched problems should be ordered based on the most recent contests, providing insight into the latest contest patterns.
  2. Distinguish Problem Status:

    • Users should have the ability to distinguish between problems they have solved, attempted, and so on.
    • This feature enhances the user experience by providing a clear overview of their progress.
  3. Toggle Problem Tags Visibility:

    • Users should be able to control the visibility of problem tags.
      • Hide Tags: Hide all problem tags.
      • Show Only for Solved: Display tags only for problems that the user has solved.
      • Show for Everything: Display tags for all problems.

Implementation Details:

Additional Notes:

How to Replicate:

N/A

Priority:

High

Labels:

Jaideep-C commented 11 months ago

This is a sample html page which I generated for reference

image
Jaideep-C commented 11 months ago

However, these features alone may not suffice; hence, we should consider incorporating additional functionalities. I am contemplating the following:

1. Mock Contest Problem Generator

Generate a tool for creating mock contest problems tailored to specific criteria, such as ensuring none of the participants has solved problems within a designated rating range. This feature facilitates the seamless organization of engaging mock contests among friends.

2. Upsolve Problem Recommender

Develop a functionality that suggests the next upsolve problem based on user preferences and a specified difficulty range. This enhancement aims to optimize the upsolving experience by providing targeted and challenging problem recommendations.

3. Spam Prevention with Rate Limiting

Implement rate limiting mechanisms to prevent users from spamming the system. This involves setting constraints on the frequency of user actions to maintain fair usage, enhance user experience, and protect the system from misuse.

4. Codeforces API Data Storage

Integrate a feature enabling the saving of data from the Codeforces API to a database or JSON format. This capability reduces the number of API calls, optimizing system performance, and allowing for efficient data retrieval and analysis without overloading the API server.

Harsha9554 commented 11 months ago

I think I can work on backend part of this feature request. I will be working on the backend part of the feature request that involves developing a logic to filter Codeforces submissions based on the user's handle, minimum problem rating, maximum problem rating, and number of previous contests.

To give you more details, I plan to use the Codeforces API and this specific contest.list handle to fetch the user's submissions and contests data. I will then filter the submissions based on the minimum and maximum problem rating, as well as the number of previous contests. Finally, I will return the filtered submissions using TypeScript and follow necessary guidelines to develop a Next.js API.

Please let me know if you have any questions or concerns. I look forward to hearing back from you soon. @Jaideep-C

Jaideep-C commented 11 months ago

@Harsha9554 Need more info regarding the design of the API. Can you create an issue on the backend work? Also please mention the API design in the same issue.