TMS Perevod4

Case studies / Web app · TMS

The TMS that runs a translation agency.

A concrete example of our custom web app development: a complete Translation Management System, built by our team for the group’s translation bureau. Orders, clients, translators, quotes and invoices in a single platform — live in production every day.

tms.perevod4.ru ↗

tms.perevod4.ru
TMS order board at tms.perevod4.ru: every order with its status, client and deadline

The problem

Running an agency on spreadsheets and email doesn’t hold up.

A translation bureau handles hundreds of orders a month: every order has a client, a language pair, a specialisation, files, a quote, an assigned translator, a deadline and an invoice. Keeping all of that on spreadsheets, chats and email means only one thing: sooner or later something slips through — and what slips is a delivery.

What was needed was a single system, not ten disconnected tools. One place where every order has a status, every client a record, every translator a workload and every job its invoice.

Our answer

A complete TMS, built by us.

We designed and developed a dedicated Translation Management System: a web app where the order, the payment, the assignment, the delivery and the accounting all flow through. It is the group’s internal operating system — we use it every day. And this is the same engineering we put into the custom web apps we build for our clients.

A single source of truth: orders, clients, translators, files, payments
Every action on an order recorded in a chronological log
Four roles — client, translator, project manager, administrator
File access only through a protected endpoint, never static in the clear

What we built

The features, from the first quote to the last invoice.

01Quote calculator. Rates by language pair, service type and specialisation; the price is worked out before the order, with a fallback to the base rate.
02Three-step order wizard. The client picks the pair, the service and the specialisation, attaches the files and sees the estimate. Then pays.
03File analysis. Upload of docx, pdf, xlsx and txt with character counting and language and encoding detection in the background.
04Payment and confirmation. Card for individuals, invoice for companies; the manager confirms with the final price, everything logged.
05Manager workspace. Dashboard with statistics, a full order record, assignment of translators and reviewers, chat with the client inside the order.
06Translator directory. Listing, email invitations, activation, workload per person.
07Glossaries. General, per client and per project, with export for work in external CAT tools.
08AI-assisted translation. An in-house layer of ours: translation memory, machine translation and post-editing across whole documents.

Inside the system

Real screens, from the system in production.

tms.perevod4.ru
Client record in the tms.perevod4.ru TMS with the order history

Every client has a record: details, past orders, payments and documents all in one place.

tms.perevod4.ru
Invoices and accounting section of the tms.perevod4.ru TMS

Invoices are generated by the system as PDFs, with the payment history linked to the order.

@massimoalefBot
Telegram Mini App of the TMS opened inside the chat, with the list of orders

One more detail

The TMS inside Telegram too.

We brought the main features into a Telegram Mini App: orders open right inside the chat, with nothing to install. It is a kind of integration that few in Italy still offer — and one we know how to build, because we have already built it for ourselves.

How it’s built inside

An architecture built to last.

A layered backend (router → service → repository → model): the business logic lives in the services, never in the controllers or the models. A frontend organised by feature, with a single source of truth for the data. The slow operations — file analysis, PDF generation, email — go through a queue, so the interface stays responsive.

BackendPython 3.12 + FastAPI — typing, documented API, native async
DataPostgreSQL 16 — full-text search, JSONB fields, native enums
QueueCelery + Redis for background jobs and caching
AuthJWT RS256, refresh in an httpOnly cookie, four roles
FrontReact + Vite + TypeScript, TanStack Router and Query, Tailwind
FilesAbstracted storage with a type allowlist and path traversal protection
Testspytest on the backend, Vitest and Playwright on the critical flows
DeployDocker Compose, HTTPS with automatic certificates, file backups

The phases

Built in phases, without redoing anything twice.

Each phase delivers something usable and sets up the next. The same method we use to bring clients’ projects online: first the foundations, then the flow that brings value, then the rest.

01Foundations. Project structure, role-based authentication, design system, first version of the database.
02Client order flow. Catalogues, rates, calculator, file upload, order wizard, payment, email.
03Manager workspace. Dashboard, order record, translator directory and assignment, chat with the client.
04Translator workspace and finances. Incoming tasks, deliveries, the bureau’s financial picture.
05Glossaries and AI-assisted translation. Translation memory, machine translation and post-editing across whole documents.

The result

In production, every day.

2 years

in production, without going back to spreadsheets

180

orders handled per month, over 2,000 a year

14

administrators, project managers and partner agencies working in it

REMARKA GROUP PROJECT — VERIFIABLE AT tms.perevod4.ru

Interested in this project?

Need a custom app or website? Let’s talk.

We design and develop custom websites and web apps for companies and professionals. Tell us your idea: a quote in 24 hours, at a fixed price.