Photo Jam

Cross-platform community photography app

Photo Jam is a cross-platform community photography app that connects photographers through weekly lessons, structured photo challenges, and live virtual review sessions. Members submit photos around weekly themes, then meet over video to discuss and critique each other's work — creating an active feedback loop that passive tutorials and social media can't replicate.

Technical Approach

Built with Flutter for simultaneous iOS, Android, and web deployment from a single codebase. The backend runs on Appwrite (BaaS) providing authentication, real-time database subscriptions, and serverless functions for privileged operations. WebSocket-driven realtime updates power live gallery feeds, comment threads, and notification delivery without polling.

Subscription management uses RevenueCat to unify Apple IAP, Google Play, and web billing into a single entitlement system. A custom membership sync service reconciles RevenueCat state with the database while preserving admin and facilitator role overrides. Riverpod provides reactive state management throughout, with stream providers for realtime data and family providers for parameterized queries.

Key Decisions

Flutter over React Native for true single-codebase deployment to all three platforms. Appwrite over Firebase for self-hostable infrastructure with first-class realtime subscriptions. RevenueCat over direct Stripe integration to handle the complexity of cross-platform subscription billing — App Store, Play Store, and web payments each have different receipt formats, renewal behaviors, and refund flows that RevenueCat abstracts away.


Gallery

Live on all platforms — available on iOS, Android, and web at photojam.net