Inspiration
We wanted to create something that could make people feel a little better in just a few moments. Not every problem needs a big solution. Sometimes, a small reminder of hope or encouragement is enough to brighten someone’s day. We were inspired by the simple joy of opening a fortune cookie and wanted to turn that experience into something personal, interactive, and powered by AI.
What it does
Luckily is an AI-powered digital fortune cookie. Users share what they’re feeling or what’s on their mind, and AI generates a personalized fortune based on their mood, along with a small actionable “tiny challenge.”
Users can then crack open an animated fortune cookie to reveal their message. They can also save meaningful fortunes to their Fortune Jar, favorite them, view their history, receive a Daily Fortune, and share fortunes with others.
How we built it
Luckily was built with Node.js and Express for the backend, EJS for server-side rendering, and Vanilla JavaScript and CSS for the frontend and animations. We used SQLite to store fortunes and history.
For the AI component, we integrated the OpenRouter API to understand the user's mood, identify a relevant category such as relationships, career, or personal growth, and generate both a personalized fortune and a practical challenge.
The cookie experience uses CSS 3D transforms and SVG, along with particles, animations, and a dark-and-gold visual style to recreate the feeling of opening a real fortune cookie.
Challenges we ran into
One of our biggest challenges was making the AI-generated responses feel genuinely personal rather than like generic motivational quotes. We had to think carefully about how to structure the information sent to the AI so that the fortune and challenge were relevant to the user's mood.
We also had to balance the technical complexity of the interactive cookie animation with the simplicity of the overall experience. Since fortune generation relies on an external AI API, we also had to account for loading states and make sure users understood that they should wait rather than repeatedly submitting requests.
Accomplishments that we're proud of
We’re proud that we turned a simple idea into a complete interactive experience rather than just an AI text generator. The combination of personalized AI responses, the 3D cookie animation, lucky challenges, and Fortune Jar makes the experience feel playful and intentional.
We’re especially proud that Luckily fits the spirit of the Happiness Track: using technology not necessarily to solve a massive problem, but to create a small, positive moment for someone.
What we learned
We learned that good AI experiences are about more than simply connecting an API. The way we frame the user's input, structure the AI's task, and present the result can make a huge difference in how meaningful the experience feels.
We also learned a lot about combining backend functionality, database storage, API integration, and frontend animation into one cohesive product — while keeping the user experience simple.
What's next for Luckily
We’d love to make Luckily even more personal and engaging. Future ideas include improving the AI's ability to understand emotions and context, adding more types of challenges, introducing streaks or rewards for completing challenges, and making the Daily Fortune more personalized over time.
We could also explore richer social features, accessibility improvements, more interactive cookie animations, and potentially a mobile app.
Ultimately, we want Luckily to remain what it was designed to be: a small pocket of positivity that people can return to whenever they need a little encouragement.
Log in or sign up for Devpost to join the conversation.