
Overview
Lingua lets people who do not share a language message each other normally. Each person writes and reads in their own language, and translation is applied automatically as messages are sent.
A fully functional MVP: passwordless sign in, user search, chats with full history, read receipts, multi-device sync, and language and theme settings. Messages and their translations are encrypted at rest with AES-256-GCM.
Tested in a closed beta where users held genuine cross-language conversations on their own devices, rating both translation quality and overall usability.
Stack
- React Native
- Expo
- TypeScript
- Zustand
- AWS CDK
- Lambda
- API Gateway
- Express
- WebSockets
- Neon Postgres
- Prisma
- DynamoDB
- S3
- Cognito
- AES-256-GCM
- Secrets Manager
- GCP Translation LLM
Decisions
Choosing a translation provider
Three providers were compared before picking one. Scores on a standard translation benchmark came out near identical, so the choice came down to how each one handled short, casual, informal text, which is what a messaging app actually sends.
No end-to-end encryption
Translation runs server side, so the backend has to be able to read message content. End-to-end encryption is not compatible with that, so messages and translations are encrypted at rest and in transit instead.
Email codes instead of SMS
SMS is the standard choice for passwordless sign in and would be the right one in production. It carries a per-message cost though, which was not worth paying across months of development and testing on a university project, so one-time codes are sent by email instead.
Results
- 13
- Testers
- 10
- Languages
- 4.9
- Rating