Skip to content
/ LCR Public

Ever forgot the question you solved on LeetCode ages ago ???? No revision ???? Well I got your back buddy ๐Ÿ˜‚๐Ÿ’œ

Notifications You must be signed in to change notification settings

utakarsh23/LCR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

43 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ LeetCodeRevs

Java Spring Boot MongoDB WebSocket CLI Support Languages

A powerful personalized DSA revision system that assigns daily coding questions based on your performance and topic understanding. Built with real-time notifications, submission support, and a native Java CLI interface, this system ensures consistency, growth, and streak maintenance for LeetCode-style problem-solving.

Supports Java, C++, and Python.


๐Ÿ‘ค For Users (CLI)

โœ… Key Features

  • ๐Ÿ” Login once โ€” persistent sessions via cookies
  • ๐Ÿ“ฎ Automatically assigned questions every 24 hours
    • Performance-based (based on your historical weights)
    • Topic-based (weaker topic priority)
  • ๐Ÿ”ƒ Automatically fetches latest LeetCode questions using internal API
  • ๐Ÿ“ Auto-generate code templates with test case stubs
  • ๐Ÿ’ป Supported Languages: Java, C++, Python
  • ๐Ÿ”” Real-time notification alerts for:
    • New daily assignments
    • Streak reminder if not solved by night
  • โœ… CLI Submission Runner (coming soon)

๐Ÿงพ Commands

Command Description
lcr -login Login and start session
lcr -getDailyQues1 --lang java Get performance-based daily assigned question
lcr -getDailyQues2 --lang cpp Get topic-wise weak area assigned question
lcr -check Check if user session is valid
lcr -submit Submit code and check against test cases (coming soon)


Internals & Architecture

Assignment Logic

  • Every day, two questions are auto-assigned to the user:

    1. Performance-based assignment:
      • Uses a weight-based probabilistic algorithm to prioritize weaker questions.
    2. Topic-based assignment:
      • Based on the least-performing topic area using past submission metadata.
  • The system automatically fetches the latest LeetCode questions and metadata (title, link, tags, difficulty, etc.) using a scraping/parser utility.

  • Each questionโ€™s weight is updated after every submission depending on:

    • Time taken to solve
    • Number of retries
    • Difficulty
  • Question pool avoids repetition until sufficient time has passed or weak weight re-emerges.


Tech Stack

Layer Tech Used
Backend Spring Boot, Spring Security, MongoDB
CLI Client Java 17, Picocli, HttpClient
Notifications STOMP WebSocket (SockJS) + React Toastify
Caching Caffeine
Submission Judge0 API (planned)
LeetCode Sync Internal Scraper / API Puller for question sync

Notifications System

  • Real-time alerts are sent using WebSocket & STOMP.
  • Users receive:
    • Assignment push every morning
    • Reminder push if not solved by night
  • Notifications are shown in-app and via system notifications in frontend.
  • CLI version may add push-like terminal alerts in future (TBD).

Future Plans

  • โš™๏ธ Online Code Submission Runner (via Judge0 API)
  • ๐Ÿ“ˆ Graphical dashboard (track topic progress & time trends)
  • ๐Ÿ•’ Streak tracking system
  • ๐Ÿ“ฆ Better CLI integration with a built-in code executor
  • ๐Ÿง  Adaptive recommender system using ML for question difficulty

About

Ever forgot the question you solved on LeetCode ages ago ???? No revision ???? Well I got your back buddy ๐Ÿ˜‚๐Ÿ’œ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages