Mouhami
Legal SaaS for law firms: voice-driven document drafting, client and case management, invoicing, with a companion mobile app.
- My Role
- Full Stack Engineer
- Timeline
- Jun 2026 — Aug 2026
- Status
- Shipped

Mouhami is a practice-management platform shaped around how lawyers actually produce documents: they dictate. A lawyer speaks in Arabic, a self-hosted Whisper server transcribes the audio as it streams in over a WebSocket, and the text lands directly in a structured legal-document editor — dictation is the primary input method, not a bolt-on.
Around that drafting flow sits the daily machinery of a firm: clients and cases organised by region and municipality, and invoice generation. A React Native companion app carries the same navy/gold RTL design system, with a centre-mic dictation UI.
The problem to solve
The problem was twofold: input and interface direction. The lawyers Mouhami is built for draft in Arabic, and making dictation the primary input method demands streaming Arabic transcription that feeds straight into an editable legal document — handled here by a self-hosted Whisper deployment rather than a third-party speech API. The interface also had to be right-to-left by design rather than a translated left-to-right layout.

How it was built
Dictation runs as a streaming pipeline: audio travels from the browser or the mobile app over a secured WebSocket (wss) to the self-hosted Whisper server, and the transcribed Arabic text is inserted into a structured legal-document editor rather than a raw text box.
Client and case records are organised by region and municipality, with bulk selection and per-client detail pages, and invoices are generated from the platform. Everything ships in a navy/gold RTL design system that extends to the React Native app, whose dictation screen centres on the mic button.
What it does
Voice-first drafting
Lawyers dictate in Arabic; a self-hosted Whisper server transcribes the stream over WebSocket and feeds the text straight into the document.
Structured legal editor
Transcribed text lands in an editor built for legal documents, not a plain text area, so drafts keep their structure.
Clients and cases
Client and case management organised by region and municipality, with bulk selection and per-client detail pages.
Per-seat plans
Firm subscriptions are priced per seat, with a role for each member of the firm.
Invoice generation
Invoices are generated from the platform as part of the firm's day-to-day workflow.
Companion mobile app
A React Native app with a centre-mic dictation UI, in the same navy/gold RTL design system as the web client.

A closer look


Built with
Frontend
Next.js drives the web client — its routing and rendering model suits an app that mixes a heavy interactive document editor with conventional screens for clients, cases, and billing.
TypeScript spans client, server, and mobile, so domain types — cases, invoices and subscriptions — stay consistent end to end.
Mobile
React Native let the companion app — including the centre-mic dictation screen — be built for mobile from one codebase while reusing the platform's navy/gold RTL design language.
Backend
Fastify keeps the API layer fast and structured — schema-validated routes for clients, cases and subscriptions with minimal overhead.
Data
PostgreSQL holds the relational core — firms, seats, clients, cases, invoices, and subscriptions are interlinked records where foreign keys and transactional integrity matter.