My college friends and I decided to get together for a Christmas party, and like many, we do a Secret Santa gift exchange. However, coordinating the gift assignment felt a bit chaotic. So, I decided to build a Secret Santa generator to make things smoother and more fun.
The goal was simple: generate random matches and ensure that no one ends up with themselves. I wanted it to be easy to use, with a clean interface, and of course, a little fun twist.
The Process
I built the generator using Next.js and used shadcn/ui to make the interface clean and easy to navigate. The app lets them input name, codename and then assigns a Secret Santa for everyone involved in a click of a button. It also prevents repeat assignments, so there's no risk of doubling up. It also has a wishlist management, and can add links to where their wishlist could be bought. I used Tanstack Query and zustand for state management, ensuring it was both simple and performant.
Why I Built It
At first, I wasn’t sure if a tool like this was really necessary, but I quickly realized that having a digital solution makes everything faster and smoother. I wanted something that was fun, useful, and shared in the group for years to come. I even added a little festive animation (in reality, it's just an inside-meme that only members of the group can relate) that plays when the Secret Santa assignments are revealed, making it extra fun for everyone.
Challenges and Lessons
While the idea was simple, the development process had its share of challenges. The most significant one was making sure the matching algorithm worked properly and avoided people drawing their own name (as fun as that would be). It took a few tries to fine-tune the algorithm, but I got it working smoothly in the end.
One thing I learned is how much small, thoughtful details can make an impact. The little "picking/drawing" animation was something I didn’t initially think would matter, but it really brought the app to life and gave it a personal touch. It made the experience feel more magical!
This small side project was one of my favorite things to work on because it wasn’t about solving a complex technical problem—it was about creating something useful and fun for my friends. If all is well, I think we will be using this generator for the years to come.
If you're considering building a small side project, I highly recommend something like this. It’s simple, enjoyable, and gives you the chance to test your skills in a low-pressure way while creating something that your friends or family can genuinely appreciate.