• Gandal Foglia
  • Posts
  • How Overengineering My Secret Santa App Taught Me to Prioritize User Experience

How Overengineering My Secret Santa App Taught Me to Prioritize User Experience

A look back at how requiring user accounts in a seasonal app became a barrier to adoption, and what it taught me about prioritizing user experience over technical ideals.

The Birth of Elfgorithm

As developers, we often start personal projects to explore new technologies. That's how Elfgorithm, my Secret Santa web application, came to be. I wanted to experiment with modern web technologies while solving a real problem: organizing our family's annual Secret Santa gift exchange.

For my family's use case, it worked perfectly. A small group of tech-savvy people who didn't mind creating accounts, and who would reuse them year after year. This initial success in a controlled environment gave me confidence, but it also blinded me to a crucial flaw in my design.

The Technical Decisions

I built Elfgorithm with a robust, modern stack:

const stack = {
  frontend: {
    framework: 'React + Vite',
    ui: 'tailwindCSS + shadcn/ui',
    i18n: 'react-i18next',
    dataManagement: 'React Query'
  },
  backend: {
    auth: 'Supabase Auth',
    database: 'Supabase PostgreSQL',
    email: 'Mailgun'
  }
};

While these technologies worked beautifully together, they led me to an over-engineered solution: requiring every participant to create an account. The reasoning seemed sound at the time:

  • Ensure explicit consent for sending Secret Santa match results (revealing who each person needs to buy a gift for)

  • Avoid abuse (prevent spam and fake participants)

  • Support wishlist feature (allowing users to create and share their gift preferences)

When Reality Hit

The problems emerged when people outside my family tried to use Elfgorithm for their own Secret Santa events. The mandatory account system became a significant barrier in three key ways:

Organizational Friction

  • Event organizers needed to first convince everyone to create an account

  • What should have been a simple "input emails and start" became a multi-step coordination challenge

  • Many groups abandoned the process before even starting the actual Secret Santa

The Group Size Paradox

  • The larger the group, the more exciting a Secret Santa should be

  • Yet larger groups meant higher chances of someone refusing to create an account

  • A single holdout would prevent the entire event from proceeding

Momentum Killer

  • Secret Santa planning often happens in moments of spontaneous holiday spirit

  • The account creation process killed this momentum

  • By the time everyone had accounts (if they ever did), the excitement had faded

Understanding the Mismatch

The fundamental problem wasn't technical - the code worked flawlessly. The problem was that I had built a year-round application for a seasonal, one-time-use case. It's like building a permanent ice rink for a winter holiday party.

Looking back, the ideal solution would have been radically simpler:

  1. No Accounts, Just Events

    • Organizer enters participant emails

    • System generates and sends match emails

    • Each email contains a unique, single-use link to view/update wishlist

  2. Trust and Simplicity

    • Accept that some people might abuse the system

    • Understand that perfect security isn't needed for a holiday gift exchange

    • Focus on making the experience fun and immediate

Where Elfgorithm Stands Today

The application continues to run successfully for my family's annual Secret Santa, serving its original purpose perfectly. However, I've stopped trying to expand it to a wider audience. The current architecture is so tightly coupled with the account system that making it optional would require a complete rewrite.

While I could rebuild it with the lessons learned, the seasonal nature of Secret Santa means the investment wouldn't be justified. Sometimes, the best outcome of a project isn't the product itself, but the insights gained along the way.

The Lasting Lesson

As developers, we instinctively approach problems through a technical lens. We think about security, scalability, and feature extensibility. But for many applications, especially seasonal or occasional-use ones, the most important feature is getting out of the user's way.

The perfect Secret Santa app isn't one with the most features or the best security - it's one that lets people quickly organize their gift exchange while the holiday spirit is high. The technical implementation should serve the user experience, not dictate it.

In the end, this project taught me that the best technical solution isn't always the most technically impressive one - it's the one that best serves its users' needs and context.