CantoGo

A Cantonese learning platform designed to help speakers master pronunciation, tones, and reading through interactive lessons.

CantoGo Platform Screenshot

Overview

CantoGo Home Page

CantoGo is a comprehensive Cantonese learning platform built to help speakers master the language's unique pronunciation and tonal system. The platform provides interactive tools for learning Jyutping, the standard romanization system for Cantonese.

The platform features three core learning modules: Initials and Finals for building pronunciation foundations, Cantonese Tones for understanding pitch variations, and Cantonese Reading for practicing pronunciation through text passages.

Key Features

◈

Initials and Finals System

Systematic learning of Jyutping initials and finals with interactive tables, pronunciation guides, and example characters for practice.


CantoGo Jyutping Chart
◈

Tone Learning Module

Visual representation of Cantonese's six basic tones with waveform displays and example character practice to master pitch variations.


CantoGo Tone Game

To tackle the learning challenge of Cantonese's "nine tones and six contours," I also developed an app called ToneCanto, which uses innovative waveform visualization to make abstract tones visible, comparable, and easy to master.


ToneCanto Waveform Visualization
◈

Reading Practice

Text passages with automatic Jyutping annotation, traditional character conversion, and interactive reading exercises.


CantoGo Pronunciation Practice

Background

This project was born from a personal need—helping my sister learn Cantonese to adapt to life in Hong Kong. Moving to a new city is challenging enough, but facing a language barrier makes it exponentially harder.

I wanted to build a practical tool that could make learning Cantonese more accessible and systematic. Instead of relying on scattered resources, learners can now access structured lessons on pronunciation, tones, and reading practice all in one place.

Working with my dad, we developed this platform as a family project. It combines technical implementation with real-world language learning needs, turning a personal challenge into a practical solution that can help others facing similar situations.

CantoGo Tone Pair Lesson

Technical Implementation

The platform is built with modern web technologies:

  • Frontend: Clean, responsive interface optimized for both desktop and mobile learning sessions
  • Interactive Elements: Dynamic tables, audio playback, and visual aids for tone representation
  • Data Management: Structured datasets for Jyutping initials, finals, tones, and example characters
  • Text Processing: Automatic Jyutping annotation and traditional character conversion

Why I Built This

Language learning tools often feel clinical and disconnected from real human needs. I wanted to build something that came from a genuine place—helping family adapt to a new environment.

Cantonese is particularly challenging for learners because of its tonal system and lack of standardized romanization resources. By creating a focused, systematic approach to learning Jyutping and tones, I hoped to lower the barrier to entry.

This project reinforced my belief that the best software solves real problems for real people. It's not about the fanciest tech stack—it's about understanding a need and building something that genuinely helps.

Reflection

Before this project, programming meant games to me — something I built for fun, for myself, for the joy of making a system come alive. CantoGo did not replace that joy; it widened it. I realized code can also be a way of taking care of the people closest to me.

Watching my family actually use something I built, and knowing it made a real difficulty in their daily life a little easier, felt different from any game I have shipped. It was not applause or downloads — it was the quiet happiness of being useful to someone I love.

What I want to carry forward: I will keep making games, but I no longer see them as the only thing code is for. Whenever someone around me struggles with something, my first thought now is "could I build a small tool for this?" That shift in how I see programming — from self-expression to care — is the most meaningful thing this project gave me.

THE SHIFT How I see programming — from making games to taking care of family. BEFORE · CODE AS PLAY BUILD GAMES + FOR MYSELF Fun · Self-Expression · Practice AFTER · CODE AS CARE HELP FAMILY + REAL NEED Useful · Warm · Quietly Happy