A hobby iOS app for sharing photo albums with friends and family. Built on weekends to explore shared-album UX patterns with Flutter and a Supabase backend — no ads, no monetisation, just a fun side project.






Overview
Image Blocx is a small iOS side project I built to explore shared photo album experiences. Users create albums, invite collaborators, and add photos that sync across devices. It's intentionally lightweight — the goal was to see how quickly I could ship a polished multi-user photo flow on my own time.
Technical Implementation
Built with Flutter and Dart for iOS, backed by Supabase for authentication, Postgres storage, real-time album updates, and object storage for media. Image uploads are compressed client-side before being pushed to storage, and thumbnails are served via signed URLs so albums stay snappy even over a slow connection.
Why Build It
This one started as an excuse to play with Supabase real-time subscriptions and Flutter's image pipeline in a context that wasn't tied to a production Itinatour release. It's a hobby project in the truest sense — small scope, no deadline, no customers to support, just something I can iterate on when I want to try an idea.
What I Learned
Shipping Small
Keeping the scope deliberately tiny made it obvious how much friction I'd been adding to bigger projects. No roadmap, no backlog — just the smallest usable version, shipped to TestFlight in a weekend. It's a reminder of how quickly you can move when you remove the ceremony.
Supabase Real-Time in Practice
Implementing live album updates with Supabase's real-time channels taught me the practical edges of multi-device sync — ordering, debouncing, reconciling optimistic updates with server state, and choosing when real-time is worth the complexity versus plain polling.
Key Challenges
- Keeping uploads fast and reliable over flaky mobile connections
- Handling multi-device album state without over-engineering sync