2025System design and multi-tenant

Multi-tenant architecture and smart routing

Technologies

NestJSPostgreSQLVue.jsVue i18nLocale routing

Features

Test suite covering multi-tenant and multilingual routing scenarios

Overview

Design and development of a multi-tenant architecture built to manage multiple sites or application instances inside the same platform, while preserving logical data separation and configuration flexibility. The system also integrates smart multilingual routing, with language-structured URLs such as /it, /en, and /fr, enabling stronger translation handling and better SEO indexing.

Role

Designed the architecture and built the backend and frontend logic required to support multi-tenancy and multilingual routing, with strong attention to scalability.

What I did

Designed a multi-tenant architecture able to handle multiple projects or clients inside the same system. Implemented smart backend routing to identify tenant, language, and application context. Structured URLs with language prefixes for clearer, more professional localization. Integrated Vue i18n for frontend translations. Used Pinia only where it was genuinely useful, to centralize tenant configuration, current language, and user context. Defined a modular backend structure to separate tenant logic, routing, and project configuration.

Problems solved

Managing multiple projects in the same platform

Without a multi-tenant structure, each project would require a separate codebase or infrastructure. The implemented architecture allows multiple tenants inside the same system, keeping configuration and data isolated while sharing the same application infrastructure.

Professional multilingual routing

Many systems handle language only on the frontend or through query params. With the routing implemented here, language becomes part of the application structure and URL, improving architectural clarity, SEO indexing, and consistent translation handling.

Project scalability

By separating tenant logic, configuration, and routing, the system was designed to scale with new projects or new languages without invasive codebase changes.