© 2024

JOHNNY CHOI

Thursday January 16 2025

Mobile App Developer | Backend Developer | Web Developer | System Designer

banner

Mahjong la is a cross-platform Mahjong calculator app, allowing users to easily calculate and track their Mahjong game scores on various devices.

ROLE:

Owner

UI/UX & System Designer

Mobile App Developer

Backend Developer

Distribution:

Public

Platform:

iOS, iPadOS, Android

url:

TECH:

Dart

Dart

Flutter

Flutter

Bloc

Bloc

Firestore

Firestore

Firebase

Firebase

Fastlane

Fastlane

Github Actions

Github Actions

git

git

Conventional Commits

Conventional Commits

Background

Modes

Mahjong la is my hobby project. My Mahjong buddies wanted me to create an app to track game scores. Since Flutter was popular at the time and caught my interest, I decided to take on the challenge and develop this cross-platform app. It was my first experience with a cross-platform framework, and initially, I believed cross-platform frameworks like React Native and Xamarin had inferior performance compared to native solutions. However, I was impressed by Flutter's performance and how easy it was to build the app with it.

Design

Modes

Light & Dark Modes

The app provides a light theme and a dark theme, allowing you to choose the one that best fits your preference or environment.

Key Features

Sync

Real-Time Data Sync Across Devices

Powered by Firestore, a real-time sync database, all users across different devices participating in the same game can instantly view the latest scores as updates occur in real-time. This feature ensures that everyone stays informed immediately.

Sync

Quick Join Game

You have two options to join a game: you can either scan a QR code or scan by Google Nearby. Google Nearby utilizes Bluetooth technology to enable communication between different platforms, ensuring that Android users can seamlessly join iOS users' games, and vice versa.

Sync

Unique ID Pattern

Every user has their own unique ID with the pattern (username + # + system generated 4-digits number). This ID structure is inspired by Discord, allowing users to choose their preferred username without concerns of ID collisions. Users can utilize these IDs to easily add friends within the app.

Sync

Bilingual Interface

The app offers two interface languages: English and Traditional Chinese.

© 2024