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.
| Year | 2026 |
| Type | Mobile app |
| Client | Personal project |
| My role | Product design, mobile & backend engineering |
| Platform | iOS & Android |

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

Melo Splash Screen

Melo Onboarding

Enter Your Name
Choose Avatar

Language Selection

Melo Chats List

Melo ID Card

Melo Chat View

Melo Chat ID

Melo Chat ID Detail

Add a Friend

Profile Settings

Profile Settings Detail

Profile Settings Menu
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.