Vernacular
Multi-tenant publishing for writers who work in regional languages.
Provisions a branded, language-configured publication for each author. Tenant-scoped authorization on every request keeps tenants apart, and read-heavy public sites run separately from the admin.
- Spring Boot
- Fastify
- React
- TypeScript
- Multi-tenancy
- Sentry
The problem
Writers who publish in regional languages are poorly served by generic blogging tools. Each author needs a branded publication configured for their language, and readers want to read and interact in the language they prefer.
Putting many authors on one platform raises the stakes: one tenant must never be able to see or change another tenant's data.
Approach
Vernacular provisions a branded, language-configured publication for each author on a shared multi-tenant platform. Provisioning and administration run on Spring Boot, the public author sites run on Fastify, and the frontend is React with TypeScript. Every API request is checked against the tenant it belongs to.
How it works
Public author sites
Fastify (Node.js): lightweight and built for read-heavy reader traffic.
Admin and provisioning
Spring Boot: complex forms, provisioning workflows and data access.
Frontend
React with TypeScript.
Tenant-scoped authorization
Tenant identity and credentials validated on every API request. Default deny.
Key decisions
Split public reads from admin work
Spring Boot for the admin backend, for its strong ORM and efficient complex queries. Fastify for the high-volume public reader sites, because it is lightweight and suited to read-heavy traffic. Complex provisioning workflows run without affecting reader-facing performance.
Authorization that fails closed
Tenant identity and credentials are validated on every API request, and the model is default-deny. It is designed to be testable, so cross-tenant leaks are caught before they ship.
Security
- Tenant-scoped authorization on every API request, validating tenant identity and credentials.
- Default deny: a request that can't prove which tenant it belongs to gets nothing.
- Unauthorized cross-tenant access attempts raise a Sentry alert.
Observability
Sentry alerts on unauthorized access attempts, so a probing or misconfigured client gets noticed instead of silently rejected.
Results
Each author gets a publication in their own language, tenant isolation is enforced on every request, and public traffic stays separate from administrative workloads.