game night
Game night
iOS Mahjong Meet-up — step into the living room
Everything that glows has a story — click around the room
Shuffling the tiles…
drag to rotate · scroll to zoom · esc to exit
Mahjong-Meetup is a feature-rich iOS social platform connecting players with local events and competitive leaderboards. I architected a scalable system integrating Firebase for authentication and real-time data, implemented advanced visualisations using radar and line charts, and engineered a multi-service layer handling location services, geocoding, and media management.

The app demonstrates full-stack iOS development capabilities including complex UICollectionView implementations, RESTful API integration, and thoughtful UX design.
Showcasing a creative and modern design — the dashboard, event cards, and event details as they appear on device. Dashboard Event card Event details Event details 2
I architected this iOS application from scratch, implementing a service-oriented design with Firebase integration and singleton pattern services for authentication, database operations, and location services.

I engineered complex UICollectionView interfaces with multiple custom cells and integrated professional charting libraries for data visualisation.

I solved critical edge cases around event filtering and state management while delivering a seamless user experience across six feature modules.
Real-time Firebase synchronisation introduced me to asynchronous programming challenges. I debugged state management issues, implemented proper error handling, and learned to think about edge cases like cancelled events and network failures.

I built real-time Firestore synchronisation with intelligent error handling, so every event, score, and RSVP stays live across the community.
Early on, I recognized that scalability and maintainability were critical, so I invested time in designing a service-oriented architecture. I implemented singleton pattern services for authentication, database operations, and location handling — decisions that paid dividends as the project grew in complexity.

Alongside auth and data, a polymorphic game system keeps scoring rules tidy behind a single interface.
The geocoding feature tested my problem-solving skills. I initially used CoreLocation, then expanded to the Nominatim API for better coverage, implementing intelligent fallback strategies and caching mechanisms to optimise performance.

That's what guides players from a pin on the map to a seat at the table.
Integrating professional charting libraries was a turning point; seeing player statistics transform into interactive radar charts and score trajectories made the data meaningful. Leaderboard My score
Building Mahjong-Meetup was a transformative experience that took me from concept to a fully-functional iOS application. I started by defining the core problem: creating a community platform for Mahjong players to discover events and track performance. This clarity shaped every architectural decision that followed.

The UI development proved challenging but rewarding. I built dynamic UICollectionView interfaces with multiple custom cell types, learning to balance aesthetics with functionality.

Throughout development, I discovered that great apps aren't just about features — they're about solving real problems elegantly. This project taught me that persistence, thoughtful architecture, and attention to detail transform ambitious ideas into polished, production-ready applications.

Personal project · Mobile Application Developer · August 2025 — December 2025
Want to work together? If you like what you see and want to build something, get in touch over a cup of tea — or a round of Mahjong.
That laptop on the console is running another story: a full-stack environmental reporting system built for Acoem Australasia — Python, Flask and Pandas turning raw monitoring data into automated client reports on Linux infrastructure.
The teal book on the shelf is Atelier — a CEFR-graded French learning platform built with Next.js and React: 240 lessons across 48 modules, a 20-type exercise engine, custom JWT auth and a fully bilingual FR/EN interface. Live at french.chrisverse.uk.