Skip to content
2026 · Web applicationPersonal

Photo challenges

Web app for photo challenges between participants: sign-up, photo upload, gallery, leaderboard and slideshow.

view project

SPEC SHEET

2026year
developerrole
soloteam

The context

An app for running photo challenges between participants: everyone signs up, uploads their shots, then browses the gallery, the leaderboard and the slideshow. It also served as a testbed for comparing several backend frameworks on the same API.

What I built

A React 19 / Vite 8 SPA in strict TypeScript, with React Router for navigation and Framer Motion for animations. It consumes a REST API with JWT authentication. The app is also packaged for Android and iOS with Capacitor from the same codebase, and deployed on Vercel.

  • Sign-up and login with JWT
  • Photo upload, with client-side conversion of HEIC (iPhone) files
  • Gallery, leaderboard, winner banner and slideshow
  • Android and iOS apps via Capacitor, sharing the same React code
  • REST API rewritten in Express, NestJS, Laravel and Symfony to compare the frameworks (local only)
  • Continuous deployment on Vercel with GitHub Actions
ReactViteTypeScriptCapacitor

Got a project in mind ?

Chat with the AI assistant