Inspiration

Every group event we go to ends the same way. Someone says "send me those pics," our group chat fills with half the photos, a few of us AirDrop to each other, and the best shot of us lives forever on someone else's camera roll. Google Drive requires everyone to have enough space in their Drive to upload pictures, not everyone in our friend group has an iPhone so we can’t use a shared album, and no one wants to download a separate app. And even when we do manage to collect everything, finding the photos we're actually in means scrolling through hundreds of blurry crowd shots.

We wanted something as easy as tossing photos into a bin. Scan a code, dump our pictures, find ourselves, and let the whole thing disappear after the weekend. That became dump, and each event room is a dumpster.

What it does

dump is our mobile web app for collecting photos and videos from everyone at an event, with nothing to install and no account to make.

  • Open a Dumpster in seconds. We can create a room from the site or by texting our number (for example, Create dumpster "Mt. Si Hike" 48h). We get a link and QR code to share, plus a one-tap Copy Dumpster Link button.
  • Drop everything in. Our friends upload photos and videos straight from their phone's browser.
  • Find ourselves. Every face in the Dumpster shows up in a gallery at the top. We tap a face to see only the photos and videos that person appears in.
  • Search anything. One search bar covers objects in photos ("dog," "cake," "tent"), text that appears in images (signs, shirts, banners), and words spoken in videos.
  • Get pinged when we show up. We add our name, number, and a quick selfie, and we get a text when new photos of us are uploaded or when someone says our name in a video.
  • Moments, grouped. Our app bundles photos and videos taken at the same time and place, and flags duplicate uploads so the feed stays clean.
  • The Dumpster Fire. We can react to anything with any emoji, but the 🔥 Dumpster Fire reaction is special: it powers a leaderboard of the event's most chaotic, funniest moments, ranked entirely by our own group's reactions.
  • Gone when it's over. Each Dumpster self-destructs after 24, 48, or 72 hours. Media, records, and face data are all deleted, and we each get a heads-up text before it happens.

Our Dumpsters have no hosts or admins. Everyone in a room has the same power, including the ability to delete any photo or video.

How we built it

Frontend. We built dump with Next.js and Tailwind CSS as a mobile-first PWA. We leaned into a raw, high-contrast, editorial look built around our signature green and our logo, deliberately steering away from the glassy gradient style common in AI-era apps.

Dumpster links. We generate dumpster URLs with high-entropy random IDs so our dumpsters can't be guessed or enumerated.

Vision (Perceptron). Our uploads go into an async pipeline that sends media to Perceptron's vision models for face clustering, object tagging, in-image text recognition, and bounding boxes. Face clusters drive our people gallery and selfie matching; tags and OCR text feed our search. We layer bounding-box highlights underneath all labels and controls so they never cover text.

Moment clustering. We group media into the same moment when it falls within a time window and a geographic radius, using haversine distance on EXIF coordinates:

Dumpster Fire ranking. We rank items by their count of 🔥 reactions, with [tie-break, e.g., total reactions] as the tie-breaker. Every other emoji is just for fun.

Messaging (Photon 2.0). Our Photon agent handles text-to-create commands, face and name-mention alerts, and expiration warnings over SMS/iMessage.

Data and infrastructure.

  • MongoDB stores our Dumpster configs, selfie vectors, face clusters, tags, OCR text, and transcripts.
  • Vultr hosts our background workers and the processing queue for vision and transcription jobs.
  • Backboard streams new uploads and reactions in real time so every phone in the room updates instantly.
  • TigerData tracks our upload velocity and engagement as time-series metrics and runs the cleanup queue for expiring rooms.

Privacy auditing (VEYZL). We wired VEYZL into our GitHub PR workflow to flag privacy risks around facial data retention and verify that our 24/48/72-hour deletion timers actually purge media, records, and face vectors.

Challenges we ran into

  • Anonymous but notifiable. We removed the idea of a host entirely and don't record who creates rooms or uploads media, but our face alerts still require a phone number and selfie. Keeping that opt-in data scoped to a single Dumpster and making sure it dies with the room took careful schema design on our end.
  • Deletion that actually deletes. Ephemeral is easy to promise and hard to guarantee. Our media files, database documents, face vectors, and metrics live in different systems, so our cleanup worker has to sweep all of them reliably on schedule.
  • Layering visuals over UI. Our bounding boxes initially covered labels and buttons. Enforcing a strict z-index hierarchy across our gallery and detail views fixed it.
  • Writing for our users, not for ourselves as engineers. Our first copy was full of technical phrasing. We rewrote everything so it describes what Dump does, not how it works.

Accomplishments that we're proud of

  • Going from scanning a QR code to uploading photos takes [X] seconds, with nothing to download.
  • Our single search bar finds a face, a dog, a word on a banner, or a name said in a video.
  • Our leaderboard is fully community-driven, so the Dumpster Fire reflects what our group actually found funny.
  • We built a visual identity that feels like ours rather than a template.
  • We integrated [X] sponsor and infrastructure tools into one coherent product in a single weekend.

What we learned

  • How to build an async media pipeline that keeps our UI fast while heavy vision and transcription work happens in the background.
  • That privacy is easier to design in from the start than to bolt on. Choosing not to collect host or uploader identity made many of our later decisions simpler.
  • How perceptual hashing and spatiotemporal clustering can turn a messy pile of uploads into something organized.
  • How much design restraint matters: removing jargon and generic UI patterns made our app feel more human.

What's next for dump

  • Sticker packs: turning our favorite moments into a shareable sticker pack for each event.
  • Event map: pinning our photos to an interactive venue map using location data and landmark recognition.
  • Recap texts: sending a highlight digest of the Dumpster Fire winners before the room expires.
  • Offline uploads: queuing uploads on spotty festival connections and sending them when signal returns.
  • Export before expiry: letting each of us save our own photos in one tap before the Dumpster disappears.

Built With

  • backboard
  • mongodb
  • nextjs
  • perceptron
  • proton
  • tigerdata
  • vezyl
  • vultr
Share this project:

Updates

Submission history