Melo

Private text chat with automatic language translation

Melo is a two-person messaging app that translates text between people who speak different languages. Each person reads messages in their preferred language and can tap to see the original text.

Why I built it

A friend and I would text in different languages. They wrote in Igbo, I wrote in English, and understanding each other meant dealing with the language barrier one message at a time. I wanted to make that feel less like work. Melo puts translation inside the conversation, so both people can chat in their preferred language and reveal the original message whenever they want.

Year2026
TypeMobile app
ClientPersonal project
My roleProduct design, mobile & backend engineering
PlatformiOS & Android
Melo Hero

Instead of copying messages into a separate translation app, people can communicate inside one chat. The goal is to make translation feel like part of messaging rather than an extra step.

11

languages supported

Realtime

chat presence and message updates

No accounts

device-ID-based identity

Challenge

The challenge was keeping conversations responsive while translation requests ran asynchronously. I also had to account for failed requests, API quotas, and connecting two people without requiring a traditional account.

Action

Identity without traditional accounts

Each device gets a UUID and a readable Melo ID, stored in AsyncStorage and synced to Supabase. I derive the conversation room ID from both participant IDs so the same pair resolves to the same room.

Responsive messaging and translation

I implemented optimistic message updates so the sender does not have to wait for the full request cycle. Translation state, retries, Supabase Realtime updates, request coalescing, in-memory caching, and echo detection help handle asynchronous processing and repeated requests.

Realtime chat across 11 languages

I used Expo Router and Supabase Realtime for the chat experience, including typing indicators, presence, and read receipts. Melo supports 11 languages, including English, Spanish, French, Arabic, Swahili, Yoruba, and Korean.

Result

Melo brought messaging, translation, and realtime updates into one mobile experience. Building it helped me work through asynchronous UI states, message synchronization, and the practical limits of external translation APIs.

Stack

Expo SDK 57React NativeExpo RouterTypeScriptSupabase (Postgres + Realtime)AsyncStorage