** Check out the demo video! **

Inspiration

Most social apps let you decide how the world sees you. You choose the photos, write the bio, and build the profile. We thought it would be way more fun if you had absolutely no control.

ScrapShot started with a simple idea: what if your friends built your character from the memories they have of you?

These memories say a lot more about a friendship than a perfectly curated profile ever could, so we turned them into a game.

In ScrapShot, the things people remember about you literally become part of you. Your friends build your scrapbook, those memories become items, and then you get to fight each other with the items from the memories you have collected over the years so you can have a memorable, but fun experience with the people around you for a very long time over time!

What it does

ScrapShot is a digital scrapbook with multiplayer FPS where your friends' memories of you become your character and your loadout.

A user creates a scrapbook and gets a unique invite code to share with friends. Once people join, everyone gets their own character and inventory.

But here's the catch: you cannot build your own character. Other people do it for you.

Friends upload photos of memories involving you and attach them to your character. Our AI pipeline analyzes the photo, finds a meaningful object from that memory, and transforms it into a unique game item that gets added to your inventory.

A night out with drinks can give you a beer bottle, or perhaps a bird poops on you and you get a pet seagull.

Every generated item is stored in your personal chest, while staying connected to the original memory that created it and the photo that your friend uploaded.

As more people add memories, your inventory grows and your character becomes a collection of how the people you know remember you.

Then comes the fun part... Players can take those items into the ScrapShot Arena, get their loadout which is their collection of items, and battle their friends using items that came directly from their shared memories.

When you die, the crazy memory you had pops up on your screen to replay that hilarious memory again.

Your friends build your story. You fight with it.

How we built it

We built Scrapshot with Next.js, React, and TypeScript as the foundation of the application.

The scrapbook itself is designed to feel like an actual interactive object instead of another dashboard. We used Three.js and React Three Fiber to create the 3D book experience and transitions between the cover, scrapbook, and different parts of the application.

Clerk handles authentication and gives every person a persistent identity across shared scrapbooks.

For our backend and persistent data, we use Neon Postgres with Drizzle ORM to manage scrapbooks, invite codes, memberships, memories, inventories, and generated artifacts.

Photos are uploaded through UploadThing and attached to another member of the scrapbook.

From there, Google Gemini powers our AI pipeline. Gemini analyzes each uploaded memory, understands what is happening in the image, identifies a meaningful object, and helps transform that object into a game-ready artifact with its own identity and purpose.

The result is a pipeline that looks something like this:

Friend uploads memory → Memory is attached to you → Gemini understands it → Artifact is created → Artifact enters your inventory → You bring it into battle

What started as uploading a photo ends with that photo becoming part of someone's playable character.

Challenges we ran into

Our biggest challenge was making Scrapshot feel like one connected experience.

There are a lot of systems hiding behind something that looks pretty simple. Authentication, shared scrapbook membership, invite codes, image uploads, AI analysis, generated artifacts, inventories, 3D interactions, and real-time multiplayer game logic all have to agree on who owns what.

The AI pipeline was another interesting problem. Detecting an object in an image is easy enough. Detecting something that actually means something in the context of the memory is much harder.

We did not want every photo containing a table to reward you with the legendary Table of Destruction.

We had to think carefully about how Gemini interprets the context of a photo and chooses something that could become a recognizable, funny, and useful artifact. We also spent a surprising amount of time making a digital book behave like a book actually should.

Accomplishments that we're proud of

We're proud that ScrapShot became more than just an AI image demo.

We built an actual social loop around the technology that engages you and the people around you with the crazy memories, showing the fun times you've had over time.

Someone creates a scrapbook. Friends join it. They contribute memories to each other. Those memories become permanent parts of each person's collection. That collection becomes their game inventory.

Nobody can manufacture the perfect version of themselves because your character only grows when other people remember you.

We're also really proud of connecting so many different parts of the stack into one experience. A photo can travel from UploadThing, through our application and AI pipeline, become structured data in Neon, and ultimately appear as something another player can actually use.

And, most importantly, we successfully found a reason to turn someone's coffee cup into a combat item.

What we learned

We learned that AI becomes much more interesting when it changes what a user can do, instead of only generating something for them to look at.

Gemini is not just generating content in ScrapShot. Its output becomes part of the game's mechanics.

We also learned a lot about designing multiplayer data around real people. Once memories, users, scrapbooks, inventories, and generated items all reference each other, having a clean data model becomes incredibly important.

On the frontend, working with React Three Fiber taught us how different building an interactive 3D experience is from building a traditional website.

Most importantly, we learned that some of the best ideas happen when you combine two things that probably should not go together. Like scrapbooking and fighting your friends.

What's next for ScrapShot

We want ScrapShot to become something that actually grows with a friend group over time.

We'd like to expand the arena into a deeper multiplayer experience where every generated artifact has its own abilities, stats, rarity, animations, and ridiculous interactions.

We also want characters to visually evolve as their scrapbook grows. Instead of simply having an inventory, memorable artifacts could appear directly on your character as equipment, accessories, or cosmetics.

Long term, we imagine opening a ScrapShot you made years ago and seeing hundreds of memories that your friends have added over time.

Except instead of scrolling through another photo gallery, you are looking at a character that could only have been created by the people who know you. And yes, you can still fight them.

ScrapShot is a scrapbook you don't make yourself. Your friends make it for you, one memory at a time.

Built With

Share this project:

Updates