Overview
RosettaChat is a multilingual online chat product built around one core idea: every participant should be able to write naturally in their own language while everyone else reads the conversation in theirs. Translation is not treated as an external helper or copy-paste workflow; it is part of the message delivery flow.
This is a self-directed SaaS product that I planned, designed, implemented, deployed, and maintain. It supports real-time group communication, direct chat, temporary rooms, and an open API so developers can build online chat rooms or integrate translated messaging into their own products.
Product Architecture
- Monorepo product surface โ The project is split into a Laravel API (
apps/api), a React Router v7 authenticated web app (apps/webapp), and an Astro marketing website (apps/website). - API-first backend โ The Laravel 12 backend exposes the same REST API to the web app and external integrations, with Sanctum authentication, API tokens, webhooks, Scribe API docs, Laratrust permissions, and Cashier billing support.
- Chat domain model โ Workspaces, channels, messages, threads, direct conversations, temporary rooms, invites, usage quotas, and attachments are first-class backend modules instead of UI-only concepts.
- Translation pipeline โ Message creation dispatches queue jobs through Redis. Workspace channel messages use the workspace language set; direct messages use the receiverโs preferred language. Translations are stored separately from original messages and pushed back through realtime updates.
- Realtime layer โ Laravel Reverb powers WebSocket updates for channel messages, translation completion, typing and presence-oriented UI behavior.
- Encryption and retention โ Workspace and direct chat content use application-level envelope encryption boundaries. Scheduled jobs handle retention, expired temporary rooms, translations, attachments, and guest sessions.
- Production deployment โ
rosettachat.appandapp.rosettachat.apprun on Cloudflare Pages, whileapi.rosettachat.appreaches a VPS through Cloudflare Tunnel. The backend runs as prebuilt GHCR Docker images with Caddy, PHP-FPM, Reverb, queue worker, scheduler, PostgreSQL, and Redis.
Key Features
- Real-time multilingual chat โ Participants can collaborate without agreeing on one shared team language.
- Original and translated views โ Readers can see the translated message while keeping the original one tap away.
- Direct chat and temporary rooms โ Supports both persistent communication and short-lived rooms for lightweight sessions.
- Workspace channels โ Public, private, and password-protected channel options for organized conversations.
- Open API โ Developers can quickly build online chat rooms or connect translated messaging to external workflows.






