Multilingual Knowledge Platform
A private French-, Arabic- and English-language document library with personal libraries, search, recommendations and an administrative publishing workflow.
Three languages, one architecture — RTL is a design decision, not a CSS patch.
01Context
A community maintains a large body of texts in French and Arabic, shared informally and hard to find.
02Problem
A private, trustworthy library where members read, annotate and save — and administrators publish with review and history.
03Constraints
- French-first, full Arabic RTL, English
- Member data separated from admin operations at UI, API and rules layers
- Works on weak mobile connections
- Private content must not leak through offline caches
04My role
What I personally built
- Architecture and route structure for FR/AR/EN
- Firestore and Storage authorisation rules
- Resource lifecycle: staging → draft → published → archived
- Document upload contracts, versions and audit events
- Offline/PWA caching with account-change clearing
- Unit, component and browser-test foundations
What others owned
- The client community owns the content and editorial decisions
05Architecture
Architecture explorer
The business flow — what happens, in plain words.
01 / 04
Member — Reads in their language.
06Key decisions
Authorisation enforced in three layers
- Because
- UI, server API and Firebase rules each fail closed.
- Trade-off
- Rules must be kept in sync and tested.
07System
Next.js routes per locale, Firebase Auth, Firestore and Storage protected by tested security rules, server APIs via the Admin SDK, audit events for every administrative mutation, and a PWA shell with safe offline retry.
08Challenges
- Mixed Arabic/French metadata in one document model
- Testing security rules in the emulator
- Cache invalidation on account switch
09Outcome
Feature-complete for interface review; production release gated on client infrastructure and acceptance items tracked in the delivery backlog.
10What I learned
Honest delivery tracking — separating code work from external release gates — builds more trust than a green dashboard.
11Stack
- Next.js
- TypeScript
- Firebase Auth
- Firestore
- Cloud Storage
- Security Rules
- PWA
- Playwright
- Vitest
- Sentry
- Vercel
12Evidence
- Private client repository
Confidentiality · Private community platform; the client is not named.