Face-Recognition API Backend for an Event-Photography Platform
A stock-image / visual-content marketplace
Overview
The core API backend for an event-photography platform built around facial recognition: event organizers upload the photos from an event, and attendees retrieve the pictures they personally appear in by matching their own face. Built on AdonisJS (Node.js) with PostgreSQL and AWS Rekognition.
The Challenge
An event-photo platform has two sides to serve: organizers who upload large volumes of imagery per event, and attendees who want only “photos of me” without scrubbing through thousands of shots. That requires reliable face detection and matching across albums, a person/face index, and social features like feeds, messaging, and sharing, all behind a clean, authenticated API.
What We Built
An AdonisJS API (adonis-api-app) structured into Controllers, Models, Middleware, Services, and
Commands. Controllers cover auth, profiles, photos, albums/invitations, mobile, and billing
(PhotoController, ProfileController, AuthController, InvitationController,
MobileController, FacturiController, AwController, ApiController). The data model
(Lucid ORM over PostgreSQL) includes Album, Photo, AlbumPhoto, Face, Person,
PeopleSearchResult, Eveniment (event), Relation, Subscribe, Device, and profile/token
entities, encoding a full face-search-over-events domain. A rekognition.js service and the
node-rekognition / AWS Rekognition integration handle face detection and matching, with original
media on S3. Social and engagement features come via GetStream (activity feeds) and ConnectyCube
(chat/messaging), plus the Facebook Marketing SDK for distribution. The repo ships with a
Dockerfile, docker-compose.yml, and build.sh for containerized deployment.
Technologies & Approach
AdonisJS gave a batteries-included MVC backend (auth, Lucid ORM, migrations) on Node.js. PostgreSQL stored the relational album/photo/face graph; AWS Rekognition provided managed, production-grade face detection and search rather than a hand-rolled CV pipeline; GetStream and ConnectyCube added social feeds and chat without building them in-house. Docker made the service reproducibly deployable.
Outcome / Impact
Delivered the AI-powered backbone of the event-photography platform, turning an organizer’s bulk event upload into a person-indexed gallery where each attendee finds their own photos by face, with social and messaging features layered on top.
Capabilities Demonstrated
- Face-detection and face-search pipelines with AWS Rekognition
- Relational media/event domain modeling (albums, photos, faces, people) in Lucid ORM
- Full authenticated API on AdonisJS with controllers for media, profiles, billing, invitations
- Social feeds and chat via GetStream and ConnectyCube
- Containerized deployment with Docker and S3-backed media storage