At my children's school charity market, we had a small paper box filled with ideas for celebrating New Year. People picked an idea, received a sweet, and reacted to the surprise. It was a simple interaction, but it made people smile.
I wanted to make a digital version of that experience. During evening coding sessions, I built a New Year's Ideas Generator: a small web app that offered a suggestion without asking people to plan the entire celebration first.
Preserve the interaction that worked
The paper version did not need instructions. Pick something from the box and see what you get. That clarity was the part worth carrying into the application.
It would have been easy to turn the idea into a large planning tool. But a planning tool asks for decisions before it gives you anything. The original interaction did the opposite: it offered a starting point, and the person could decide what to do with it.
The app's purpose was to make that first step easy. The surprise mattered, and so did the ability to try again.
Add useful constraints without losing the playfulness
Not every celebration idea suits every situation. Someone with a small budget or a quiet evening ahead should not have to keep rejecting elaborate suggestions.
The release included filters for budgets and energy levels. It also supported English and Russian, reflecting the languages in our family. Sharing made it possible to pass an idea to someone else rather than leave it on one screen.
These were modest features, but each helped preserve the original experience in a different setting. The filters made suggestions more relevant. The language choice made the interaction accessible to more of the people I had in mind. Sharing carried some of the social element of the market into the app.
Let the presentation serve the moment
I added animations and confetti because the interaction was about a celebration. A little movement made sense here. It was part of the response to receiving an idea, rather than a separate demonstration of what the interface could do.
The application used Next.js 14, TypeScript, and Tailwind CSS. I published it as a free, open-source project and made it usable across devices. Those are details of the original release, not a claim that this is the stack every small project should choose.
A small project can have a clear reason to exist
My children were the first testers and the inspiration for the idea. The project started with something I had watched people enjoy, rather than a search for a feature list to implement.
That is what I want to remember about it. Useful side projects do not always start with a large market or an elaborate plan. Sometimes they start with a small interaction that deserves to travel a little further.
The challenge is to notice what made it work, then avoid burying that quality under the implementation.
See the original launch and project links, or explore more projects.