Inspiration
Our days blur together. We take hundreds of photos and check off hundreds of tasks, but by December most of the year is a haze. Scrapbooking and journaling help people remember, but they take time most students don't have. We wanted something that makes remembering your year effortless: you live your days, and the app quietly turns them into a scrapbook you'll actually want to look back on.
What it does
TickIT is a scrapbooking calendar app. You start the year with a mood board of words, images, and an intention. Each day, a little companion character walks along a path as you check off your tasks, and celebrates with you when you finish. Throughout the day, you snap photos into a junk journal.
At the end of each month, TickIT turns your photos, tasks, and notes into a scrapbook recap: a title, a short story of your month, highlights, and handwritten-style captions for your best photos. At the end of the year, it creates a year-in-review reflection that ties back to your mood board. You can share any recap as a link that opens a scrapbook page with taped photos, which works for anyone, no app needed.
How we built it
The app is built with React Native and Expo, with a sprite-animated character whose position along the day's path comes from your task progress.
The backend is Node.js and Express, with MongoDB Atlas storing tasks, notes, and recaps, and GridFS storing photos and audio. Recaps are written by Google's Gemini API, which looks at the month's photos alongside your tasks, notes, and mood board, and returns a structured story that we lay out as scrapbook pages. The backend also supports ElevenLabs narration for recaps. Shared recaps are rendered by the server as scrapbook-style web pages.
Challenges we ran into
- Gemini overload during testing. Our first real recap failed because Gemini was experiencing high demand. We added automatic retries with increasing wait times and a fallback model, so a busy moment doesn't break a recap.
- We leaked a secret. Our
.envfile with our database password was accidentally pushed to our public GitHub repo. We changed the password immediately, removed the file from tracking, and fixed our.gitignore, and learned why the order of those steps matters. - Keeping AI honest. Early on, we worried the AI would fill gaps with made-up memories, which would feel wrong in a personal journal. We gave Gemini strict rules to only describe what's actually in your photos and tasks, and to never judge unfinished tasks. When we tested it with almost no data, it wrote about a "quiet, peaceful month" instead of inventing events.
- Setup struggles. Getting Node.js, database authentication, and our project structure working took real time for a team with many first-time hackers.
Accomplishments that we're proud of
- A full end-to-end loop: tasks and photos go in, and a personalized, AI-written scrapbook comes out as a shareable web page.
- Designing for privacy and responsible AI from the start: no accounts, each device only sees its own data, photos are only sent to AI when you ask for a recap, sharing is off by default, share links are unguessable and hidden from search engines, and the AI is instructed not to guess who people are.
- A share page that actually feels like a scrapbook, with taped photos, handwritten captions, and link previews that look good in group chats.
- A character that makes finishing your day feel rewarding instead of stressful.
What we learned
- How to design a backend around a mobile app: device IDs instead of accounts, photo uploads, and returning everything a screen needs in one response.
- How to get reliable, structured output from an AI model using a JSON schema, and how to validate it before trusting it.
- That responsible AI is mostly small design decisions: what the AI is told not to do, what's private by default, and what happens when things fail.
- Git and security habits we won't forget, especially protecting secrets.
What's next for TickIT
- More user control over AI: editing AI captions before sharing, deleting recaps, a clear "Written by AI" label everywhere, and a one-tap "delete all my data."
- Custom character voice with ElevenLabs narration for every recap.
- Deployment on our own domain so share links work for everyone.
- Gentle scheduling help, like the character suggesting when to fit in a task based on your past days.
- Shared scrapbooks for friend groups and clubs to build a year together.
Built With
- ethical-ai
- expo.io
- gemini
- github
- google-gemini
- html5
- ios
- javascript
- journaling
- mental-wellness
- mobile-app
- mongodb
- mongodb-atlas
- productivity
- react-native
- scrapbooking
Log in or sign up for Devpost to join the conversation.