2026 · Web applicationPersonal
Photo challenges
Web app for photo challenges between participants: sign-up, photo upload, gallery, leaderboard and slideshow.
view projectSPEC 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