Inspiration
What it does
How we built it
Challenges we ran into
Accomplishments that we're proud of
What we learned
What's next for JOY QUEST
Inspiration
Most of us know what would make a rough day better: call an old friend, take a short walk, look at photos from a good trip. But when we’re tired, stressed, or bored, we can’t think of any of it, and generic advice like “go for a walk” never gets acted on. We also noticed that our phones are full of happy moments we never look at again.
The hackathon theme was “using technology to find joy,” so we asked: what if technology handed you three small, specific things to do today, and kept your happiest memories safe so you can find them when you need them?
What it does
JOY QUEST is a web app set on a hand-painted ship at sea, where joy is something you sail out and find.
Daily quests: You tell the app your mood, how much time you have, your budget, and what you enjoy. It gives you 3 small, doable “joy quests” for the day. You can swap any quest, and each one you complete earns a pearl. Memory notebooks: You save happy moments as little leather notebooks. The front has a photo, and the back holds the details: the story, who was there, where, and your mood tags. Photos and text stay on your own device. Open a random memory: On a low day, one button opens a random notebook, and the app adds a short, gentle message and one tiny suggested action. Relive it quests: The app can turn a memory into a quest, like calling the friend from the photo. Streaks and progress: Each day you complete a quest lights a star on your star map, and pearls fill your treasure chest. Extras: [Pearl of the Day, weekly reflection, kindness bottle, letter to your future self. Keep only what you built.]
JOY QUEST is for fun and everyday wellbeing. It isn’t therapy, and if someone mentions serious distress, it stops the game and encourages them to reach out to someone they trust or a local helpline.
How we built it Frontend: HTML, CSS, and JavaScript with Three.js for the 3D effects: a layered painted scene with parallax, animated water, a chest that opens, and notebooks that flip in 3D. The artwork is [original SVG illustrations / our own generated paintings]. We designed the look around a painterly ship-and-sea world, inspired by Hack Club’s Atlantis. Backend: Python and Flask. It validates every request, applies a safety check for self-harm language, rate-limits requests, and talks to the AI. AI: [Name of the API, e.g. Google Gemini] through its free tier. Our backend asks it to return structured JSON (quests, reflections, titles and tags), then checks and repairs the response before sending it to the browser. If the AI call fails or the limit is reached, a demo mode serves pre-written quests, so the app never breaks. Memory storage: Notebooks live in the browser’s IndexedDB, with photos resized and compressed on the device. Backup and restore are available from the settings screen. Privacy by design: Photos never leave the device. Only text the user chooses to share is sent to the AI, and we don’t log it on the server. Hosting: [Where it’s deployed, e.g. Render / Vercel / local demo.] Challenges we ran into Choosing an idea that fit the theme. We started with other project ideas and dropped them because they didn’t really answer “finding joy.” Free API limits. We moved to a free-tier AI, so we had to protect against rate limits with caching, request limits, and a fallback demo mode. Reliable AI output. Getting the model to return clean JSON with exactly 3 quests took prompt tuning and a parsing and retry layer. Making it not look AI-generated. Our first interface was generic. We rebuilt it around a painterly, handmade style with a custom art direction. Storing photos. Browser storage has strict size limits, so we compress images and keep them in IndexedDB instead. Safety and privacy. We had to decide what the AI should never see (photos) and how the app responds if someone is struggling. [Add one real challenge of your own, such as a bug, a time crunch, or a tool that didn’t work.] Accomplishments that we’re proud of A memory notebook feature that feels personal, with a real 3D flip and a random “open a memory” moment that works smoothly. A cohesive painted world where every object on the deck is a real, accessible button. A backend that never leaves the user stuck, thanks to the validation, retries, and demo-mode fallback. Putting privacy first: photos and memories stay on the user’s device. [Add something true, like “finishing a polished, working demo in a weekend as a team of N” or “learning Three.js for the first time”.] What we learned How to make an AI return structured, trustworthy output, and why you need a fallback when you depend on a free API. How to build 3D scenes in the browser with Three.js and keep them smooth on phones. How to store and compress images locally with IndexedDB. That design direction matters: a clear visual idea made the project feel finished. That building for wellbeing requires care, from honest disclaimers to safety checks. What’s next for JOY QUEST Sync across devices with optional, end-to-end encrypted backups, so memories survive a lost phone. Shared notebooks for families and friends, so you can create joyful memories together. Gentle reminders and seasonal quest packs (festivals, monsoon, exams). More languages, starting with Hindi, so more people can use it. Voice mode and better accessibility for people who prefer speaking to typing. Quests from the real world, like nearby parks or events, once we can handle location privacy responsibly.
Log in or sign up for Devpost to join the conversation.