Back to all projects

Anı Kutusu

Event-photo platform

A web application where guests upload photos through a QR code and event hosts collect them in a shared gallery.

Anı Kutusu overview: event photography and management platform; venue and event management, QR code media uploads, and shared gallery.
Guest contributions become a shared event gallery.A promotional visual of the web application.
Who is it for?
Event hosts and guests sharing photos
My contribution
Independent project · Full-stack development
Period
Initial version: 2025 · Later moved to a shared Go backend

The need to solve

Event photos are scattered across guests. Participation needs to be simple while uploads and viewing permissions stay scoped to the event.

What it enables

Share a QR link for an event, collect guest photos and view them in a gallery with event-specific access permissions.

What I built

I developed guest photo uploads through a QR code and the event gallery. Within the shared server infrastructure, I implemented rules that restrict photo access to the relevant event’s permissions.

Explore development details

For readers interested in the technical approach: workflows, technologies and implementation decisions.

How does the process work?

A simple QR guest experience is backed by event scoping, direct object uploads, completion validation and cleanup.

Main flow

  1. Prepare the event and gallery

    Create an event-linked gallery and QR sharing link.

  2. Join the event through QR

    The guest’s event token determines the upload and gallery-access scope.

  3. Validate the upload intent

    Check file type, size and event scope before issuing an upload intent.

  4. Upload the file directly

    Use a presigned URL to send the file straight to private MinIO storage, bypassing the application server.

  5. Complete and associate the upload

    Validate the object and ownership on completion; associate the media with the event gallery.

  6. Open the gallery with authorized access

    Provide media links within the guest token or authorized user-session scope.

Alternative and supporting processes

If an upload remains incomplete

  1. Expire the upload intent

    Expired or incomplete upload intents enter the cleanup process.

  2. Clean up orphan objects

    Remove objects that were never associated with the gallery through orphan cleanup.

When the event owner accesses the gallery

  1. Verify the session

    Validate the event owner’s JWT / OTP session.

  2. Apply the permission scope

    The shared backend limits media and gallery access to the user’s permissions.

Guest contributions become a shared event gallery.A schematic illustration of how the product works.

The approach

  • Built event and gallery management with QR-linked guest media uploads, using event tokens to scope access.
  • Implemented upload intents, direct uploads to private MinIO through presigned URLs and completion validation; added file-type/size and media-ownership checks.
  • Implemented OTP/JWT sessions and authorized media access on the backend shared with Mezuniyet Yıllığım; developed cleanup of expired upload intents and orphan objects.

Technologies

  • Next.js
  • Go
  • TypeScript
  • PostgreSQL
  • Redis
  • MinIO
  • Docker Compose