Inspiration

Daily games like the Wordle, Krillion, and Duolingo encourage people to flex their mental muscles all the time. Why can't we do the same for LeetCode? CS students are rarely motivated to complete LeetCode unless they have an interview coming up. By turning LeetCode into a daily challenge, students will be more motivated to practice and will be more prepped for interviews when they come.

What it does

LeetClaus assigns you 25 LeetCodes to complete in the month of December. You can specify what difficulty you would like to receive, and LeetClaus will not assign you anything you have recently submitted for, or already been assigned. Completing a LeetCode turns your present green!

How we built it

LeetClaus was built primarily in Python using a Flask backend, HTML/CSS/JS for the front end and Jinja for templating, and Docker to run it. I used MongoDB to hold user data and logins, and bcrypt to hash and salt user info. I also decided to play around with ElevenLabs for sound effects when registering and submitting.

Challenges we ran into

  • LeetCode doesn't have a well documented API, which was the first problem I ran into. I solved this by using (this repo)[https://github.com/alfaarghya/alfa-leetcode-api?tab=readme-ov-file] which is a LeetCode API and hosting it with Docker along with my website. Using this, I was able to interact with LeetCode and actually see what users have completed so far.
  • So...I lost my debit card a while back, so I ran into the challenge of hosting my website since all hosting website requires a card. Until I get my card from the bank, we're hosting local. ## Accomplishments that we're proud of
  • The pixel art has a special place in my part, I came up with idea of santa flying around on a rocket and I'm happy with how it turned out in the end. It was also nice to take brain breaks from coding to draw :P
  • I'm really proud of the account system and the leetcode tracking system. I'm pretty thorough with the password strength and security, with passwords needing to be over a certain length, have numbers, and a special character. I also made sure that all usernames are unique since they act as the primary key for any searches done. Apart from that I used BCrypt to hash and salt my passwords.

What we learned

  • I definitely levelled up my Jinja template skills. I had some experience from past projects, but I really learned that Jinja can do so much.
  • I got to work with some JS as well, as a mostly Python programmer, it was a much needed exercise.

GoDaddy Registry Name

Unfortunately I couldn't pick a GoDaddy Name, but I was going to use leetclaus.study

What's next for LeetClaus

  • The first thing I want to add is the ability to add friends and see leaderboards. A point system for friends to compete against eachother would be great.
  • I want it to be so each present has Santa visit a new planet, moon, or star to deliver presents. I was trying to fit this in but unfortunately I did not have the time to research 25 moons, planets, and stars.
  • I would like to try to find a way to verify LeetCode users, or at least a reporting system if someone takes your LeetCode account.
  • Finally, I'd like a Stats page to see you current leetcode stats.
Share this project:

Updates

Submission history