Inspiration

Archives are usually seen as dusty boxes of old paper. We wanted to make archiving active, instant, and accessible.

We noticed two critical problems with how we interact with history today:

  1. History is invisible: You might be standing on a historic corner right now and not even know it.
  2. Data Deserts: Famous cities have tons of photos and documentation, but rural areas and side streets have almost none.

We built Souvénir to solve this. We wanted a tool that lets you snap a photo to instantly get a "Timeline" of your location, and a game that challenges you to go to un-archived places to fill in the map.

What it does

Souvénir is a "Contextual Time Capsule" app that functions in two main ways:

1. The Contextual Timeline When you take a picture, the app doesn't just save the image. It uses your GPS to generate a readable timeline of that exact location:

  • News: It pulls what is happening right now at this location (via the Tavily API).
  • History/Events: It fetches significant events from the past (via Wikipedia/Wikidata).

2. Archival Quests To fix "Data Deserts," we turned preservation into a game.

  • The app calculates a radius (~5km) around you.
  • It finds "low-info" zones which are places nearby with zero recent contributions.
  • It generates a Quest challenging you to go to that location and snap a picture for the archive.
  • Users earn currency/points for completing quests and can climb the contribution leaderboards.

How we built it

  • Backend (Python): We used FastAPI to handle all the logic and API routing.
  • Context Engine: We integrated the Tavily API to fetch live, accurate news context for specific locations.
  • Frontend: Built with React and TypeScript for a responsive mobile experience, hosted on Render.
  • Data & Storage: We used Firebase/Firestore to store user profiles, active quests, and the archive contributions.
  • Security: Authentication is handled via JWT and Firebase Auth.

Challenges we ran into

  • Identifying "Data Deserts": writing the logic to efficiently calculate "low-info zones" within a dynamic 5km radius was tricky. We had to ensure the database queries were fast enough to generate quests in real-time without lagging the app.
  • Contextual Relevance: Filtering the data from the Tavily API and Wikipedia to ensure the timeline showed relevant local history rather than just generic noise required fine-tuning our search parameters.

Accomplishments that we're proud of

  • Gamifying Preservation: We are really proud of the "Quest" system. Turning a chore (archiving) into a competitive game with leaderboards feels like a fun way to solve a serious problem.
  • The "Instant" Timeline: Seeing the app successfully pull live news and historical context the moment a photo is taken felt like magic.

What we learned

  • API Integration: We learned a lot about orchestrating different data sources (Tavily for news, Firebase for user data) into a single, cohesive frontend experience.
  • The value of Metadata: We learned that an image is worth a thousand words, but an image plus location data, time, and context is worth infinitely more to an archive.

What's next for Souvénir

  • Group Quests: We want to add "Raids" where you can team up with friends to archive entire neighborhoods together.
  • Offline Mode: We plan to cache quests locally so users can travel to rural spots and archive them without needing active cell service.

Built With

Share this project:

Updates