Technical data catalog platform
Replacing a legacy tool with an in-house platform, built from scratch.
Key figures
- people in the team
- 7
- test coverage required
- 80%
Context
A large industrial group manages technical data spread across physical media and online storage. The legacy tool offered limited search and integrated poorly with the rest of the information system.
My role
I own the architecture, the technical decisions, the cross-cutting modules and the code review of a team of seven.
Solution
A React and TypeScript interface, a Python API and a PostgreSQL database. Authentication goes through the company identity provider, and permissions are decided on the server: the interface merely hides what is already forbidden.
Two cross-cutting modules keep duplication out: a single file pipeline driven by a rules table, and one search engine shared by every domain. An event stream keeps users informed of long-running jobs.
Key features
A single file pipeline
Every document type declares its rules: no business case bypasses a check, and none adds an endpoint.
Server-side permissions
Filtering happens inside the query, never afterwards.
Real time without flooding the browser
One tab holds the event stream and rebroadcasts it to the others, working around the per-site connection limit.
Historical data migration
Table by table, with rejects logged with their reason and validation statistics.
Engineering challenges
- 1
Architecture boundaries checked by the linter
Each layer declares the layers it may depend on; continuous integration fails when one is crossed.
- 2
End-to-end tests across two repositories
The pipeline pairs branches from both repositories and starts the real API against an ephemeral database.
- 3
Quality gates computed on the diff
An informative audit over the whole repository, a blocking gate on changed files, one summary comment per pull request.
- 4
Schema integrity guardrail
A fingerprint of the generated schema prevents starting against a stale development database.
Tech stack
- Frontend
- ReactTypeScriptViteTanStack QueryMUI
- Backend
- PythonFastAPISQLModelPydantic
- Data
- PostgreSQL
- Security
- OpenID ConnectCoffre-fort de secrets
- Infrastructure
- Conteneurs OCINginxGitHub Actions
- Quality
- pytestVitestPlaywrightRuffmypyESLint
A project of this scale?
Let's talk about your context: I'll tell you frankly what is feasible, and how long it takes.