This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend
What I Built
I built MemoryVault for my family.
Over the years, families collect hundreds of little things that mean a lot — stories, recipes, photographs, personal notes, funny incidents, emotional moments, and memories that only one person may remember.
But these things get scattered.
Some are buried in WhatsApp conversations. Some are sitting somewhere in a phone gallery. Some are written down in notebooks. Some are stored as random documents. And some exist only in someone's memory.
Eventually, finding one particular memory becomes surprisingly difficult.
That's why I built MemoryVault.
MemoryVault is a private family memory vault where family members can store:
- Stories
- Recipes
- Notes
- Documents
- Photos
- Memories connected to specific family members You can search and filter memories, connect them to the people they are about, and ask questions about what you've saved. For example: "What do we remember about our family trips?"
or:
"What recipes have we saved?"
MemoryVault retrieves relevant memories and provides them as context to a locally running AI model, which can then answer the question using the family's own memories.
I didn't want to build another generic AI chatbot.
I wanted to build something that would actually be useful to the people closest to me.
Memories are easy to collect, but surprisingly easy to lose.
MemoryVault is my attempt to give those memories a home.
Demo
Live Demo
👉 Live
The application is deployed on Render and can be explored as a working full-stack application.
Screenshots

Code
👉 GitHub
The repository contains the complete React frontend and Express backend, along with the MongoDB integration, authentication, memory management, and local AI integration.
How I Built It
MemoryVault is a full-stack TypeScript application built with:
- React + TypeScript + Vite — frontend
- Tailwind CSS + Framer Motion — UI and animations
- Node.js + Express + TypeScript — backend
- MongoDB + Mongoose — persistent storage
- Gemma 3 4B — open-weight AI model
- llama.cpp — local inference runtime
- Render — deployment
- GitHub Copilot — development workflow Local AI with Gemma The most important architectural decision was to make the AI local. MemoryVault uses Gemma 3 4B, running through llama.cpp. When a user asks a question, MemoryVault doesn't simply send that question to an external AI API. Instead, the application first searches the memories stored in MongoDB and retrieves the relevant ones. The flow is: User question → Memory retrieval → Context building → llama.cpp → Gemma 3 4B → Answer + supporting memories The backend communicates with llama.cpp through its OpenAI-compatible API. This means MemoryVault does not require OpenAI, Anthropic, Gemini, or another hosted LLM API for its AI functionality. MongoDB MongoDB is the persistent storage layer of MemoryVault. It stores:
- Users
- Family spaces
- Family members
- Memories
- Memory metadata
- Relationships between memories and people This gives MemoryVault a structured way to preserve and retrieve family memories. Privacy by Design Privacy was one of the reasons I chose local inference in the first place. These aren't generic documents. They are family stories, personal experiences, photographs, recipes, and emotional moments. I didn't want adding an AI feature to automatically mean sending those memories to a third-party LLM provider. With Gemma running locally through llama.cpp, AI inference can happen on the user's own machine. That's the approach I wanted for MemoryVault: Bring the AI to the memories, rather than automatically sending the memories to the AI. GitHub Copilot I also used GitHub Copilot during the development of MemoryVault as part of my development workflow. It helped me during implementation and iteration while I focused on the application's architecture, privacy requirements, user experience, and the problem I wanted to solve for my family. Why Does Open Innovation Matter? This project made me think differently about where AI should run. For many applications, using a closed AI API is the easiest option. You send some data to an API, receive a response, and move on. But what happens when the data is deeply personal? With MemoryVault, the data isn't just business documents or random text. It's someone's family history. Stories about people we love. Personal experiences. Photographs. Recipes. Emotional moments. Using an open-weight model like Gemma gave me another option. Instead of: Family memories → Cloud API → Closed model → Answer I could build: Family memories → MemoryVault → Local retrieval → llama.cpp → Gemma 3 4B → Answer Open models made it possible for me to experiment with AI while keeping AI inference local. They also give developers more control over the technology they are building with. I can choose the model, run it myself, control the inference environment, and change the retrieval logic without making a proprietary AI provider a mandatory part of the architecture. For MemoryVault, that matters because privacy isn't an extra feature. It's part of the reason the application exists. Open innovation gave me the ability to ask: Can we bring AI to personal data without automatically sending personal data to someone else's AI?
For this project, the answer is yes.
Prize Categories
🏆 Best Use of Gemma
MemoryVault uses Gemma 3 4B as its local open-weight AI model.
Gemma is directly involved in the core Ask Your Vault experience.
When a user asks a question, MemoryVault retrieves relevant family memories from MongoDB, provides that context to the local Gemma model through llama.cpp, and returns an answer based on those memories.
Gemma isn't just an additional feature — it is part of the core experience of MemoryVault.
🤖 Best Use of GitHub Copilot
I used GitHub Copilot during the development of MemoryVault as part of my development workflow.
I didn't start this project because I wanted to make another AI chatbot.
I started it because memories are fragile.
A recipe can disappear.
A story can be forgotten.
A photograph can get buried.
A small moment that meant everything to someone can become impossible to find.
MemoryVault is my attempt to make those things a little harder to lose.
A private place for the stories, people, recipes, photographs, and emotional moments that make a family what it is.
That's what I built for my family. ❤️


Top comments (0)