Luke a Pro

Luke Sun

Developer & Marketer

๐Ÿ‡บ๐Ÿ‡ฆ
RosettaChat multilingual chat landing page

RosettaChat

production
SaaSAPILaravelReactAstroPostgreSQLRedisDockerCloudflareRealtimeWebSocketAITranslationChat

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.app and app.rosettachat.app run on Cloudflare Pages, while api.rosettachat.app reaches 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.

Related Projects

Submeto - Form submissions without the backend

Submeto

A backend-as-a-service platform for collecting form submissions without writing server code.

SaaSAPIPHPLaravel +7
TickBase market data API landing page

TickBase

A developer-first market data aggregation platform for FX rates, precious metals, historical time-series, and API-key gated data access.

SaaSAPIGoLaravel +10
MarkNest
ongoing

MarkNest

A distraction-free Markdown writing and sharing platform with built-in media management and access control.

Next.jsLaravelPostgreSQLRedis +2
BizTrust Academy

BizTrust Academy

A learning management system for tracking employee courses, documenting reflections, and measuring real-world implementation of learnings.

SaaSLMSPHPLaravel +4
Kakeibo personal finance tracking landing page

Kakeibo

A collaborative personal finance SaaS for individuals, households, and small teams to track accounts, transactions, categories, reports, and shared money workflows.

SaaSFinanceAPILaravel +9