BublHub
Event ticketing + community ecosystem (web + mobile + backend)
Overview
BublHub is a platform for organisers to publish events, sell tickets, and build communities that drive repeat attendance. It combines ticketing with a retention layer that helps event brands grow over time.
Problem
Organisers often stitch together multiple tools for promotion, ticketing, attendee management, and community engagement. That creates friction, inconsistent UX, and weak retention loops.
Highlights
- Built the platform end-to-end across mobile, web, and backend workflows
- Moved the backend away from Firebase to reduce lock-in and improve control
- Improved code quality and maintainability with clearer service boundaries and structure
- Published builds to app stores and tightened release readiness for launch
Timeline
How the project evolved — decisions, migrations, and capability growth.
Started building BublHub by shipping real flows and learning what mattered most: the core journeys, the data model, and the interaction model.
- Built initial mobile-first flows and tested real user journeys
- Iterated on event structure, profiles, and navigation patterns
- Focused on end-to-end execution over theory
Moved from experiments to foundations: reusable UI patterns, clearer architecture, and stronger system thinking across web and mobile.
- Defined reusable UI primitives and consistent interaction patterns
- Improved separation of concerns to keep the codebase scalable
- Refined information architecture around organiser and attendee flows
Focused on shipping a stable baseline: release packaging, core flows, and improving consistency across screens.
- Strengthened onboarding and profile completion flows
- Improved reliability and UX consistency across the product
- Published builds to app stores and refined release readiness
Rebuilt backend foundations to improve control, reduce vendor dependency, and raise code quality across the system.
- Migrated away from Firebase to reduce lock-in and improve control
- Redesigned collections, permissions, and workflow boundaries
- Introduced serverless workflows and clearer service boundaries
- Improved code quality and maintainability across the app
Finishing the release baseline and building payout-ready workflows with Stripe, while continuing to harden the platform structure.
- Stripe onboarding and account status handling
- Platform fee + payout workflow planning
- Ongoing UX polish and reliability improvements
Approach
- Designed user journeys first, then built reusable UI patterns to keep web and mobile consistent
- Built the product as a real system: clear navigation, predictable state, and a UI language that scales
- Evolved backend responsibilities around data model clarity, permissions, and serverless workflows
- Reduced vendor lock-in by redesigning the backend approach and improving long-term flexibility
Outcome
- Shipped the core platform foundations: authentication, profiles, event structure, and shared UI patterns
- Improved maintainability with cleaner service boundaries and a more deliberate data model
- Implemented payments foundations with Stripe and structured onboarding flows for organisers
- Hardened the platform for launch with stronger structure, clearer flow, and higher code quality
How I build products
I aim for clean UX, strong defaults, and systems that stay easy to work in as the product grows. I care about predictable state, reusable components, and backend workflows that map to real product operations.
- UX decisions are treated as system decisions
- Maintainable patterns over clever shortcuts
- Clear boundaries between UI, domain logic, and backend workflows
What’s next
Once the baseline is solid, the next layer is community and organiser tooling: features that build retention and identity, not just one-off ticket sales.
- Community layer + organiser tools
- Improved discovery and personalisation
- Reliability, performance, and release cadence improvements

I build end-to-end: UI that feels intentional, backends that are predictable, and workflows that map to real operations. If you’ve got a role or project in mind, I’m happy to talk.
