← All work
Product · 2019–20

Web Frontend for a Face-Search Event-Photography Platform

A stock-image / visual-content marketplace

Overview

The React web frontend for a face-search event-photography platform. Organizers use it to bulk- upload an event’s photos; attendees use it to browse galleries and find the pictures they appear in via facial recognition. It handles large uploads, rich gallery and lightbox browsing, in-browser face detection, and social activity feeds against the platform’s AdonisJS API.

The Challenge

The platform lives or dies on two experiences: organizers must push many high-resolution event images quickly and reliably, and attendees must effortlessly surface “photos of me” out of thousands, then browse galleries and engage socially, all in a responsive web UI.

What We Built

A React app (src/ with components, containers, logic, styles, and a dedicated uppy module) using Kea (kea, kea-thunk) for state and Bulma/rbx for UI. Uploads are powered by the Uppy stack (@uppy/core, @uppy/dashboard, @uppy/aws-s3, @uppy/aws-s3-multipart, @uppy/xhr-upload) for resumable, direct-to-S3 multipart transfers, alongside FilePond with EXIF orientation and image-preview plugins. Face detection runs client-side via face-api.js. Browsing uses react-grid-gallery, react-photo-gallery, react-images, and FsLightbox. Social features come from react-activity-feed (GetStream), with react-facebook-login for auth and react-autosuggest search. The app is containerized with a Dockerfile and build.sh.

Technologies & Approach

React + Kea kept state predictable; Uppy and FilePond solved the hard parts of large multi-file, direct-to-S3 uploads; face-api.js enabled face cues in the browser to complement server-side Rekognition; GetStream’s React components delivered ready-made social feeds. Bulma/rbx gave a clean, fast component layer.

Outcome / Impact

Shipped the full consumer web experience for the marketplace, robust bulk uploading, polished gallery/lightbox browsing, and integrated social feeds, on top of the face-recognition backend.

Capabilities Demonstrated

  • Resumable, direct-to-S3 multipart upload UX (Uppy, FilePond)
  • In-browser face detection with face-api.js
  • Photo gallery and lightbox interfaces at scale
  • Social activity feeds via GetStream React components
  • Componentized React + Kea architecture, containerized for deployment
More work See all →