The starting point
Every new type of content usually means a developer changes the database and the admin screens. The goal was a system where administrators define new collections and fields themselves, and forms, lists and validation follow from that definition.
What we were responsible for
We built the platform: the backend services, the shared authentication library, the admin interface and the monorepo that holds them.
What we built
-
Collections defined in the interface
A collection is metadata — a list of typed fields. Ten field types are supported, from text, numbers and dates to rich text, files and references to other records.
-
One handler per field type
Each field type has its own service for validation and storage, picked by a factory, so a new type does not touch the others.
-
Records, search and dashboards
Records live in MongoDB. The admin interface lists them with search filters and paging, notifies on changes and charts the data on a dashboard.
-
Shared authentication
A library every service uses: user accounts in PostgreSQL, signed JWT tokens and a security filter built on Spring Security.
-
File service
Uploads go through their own service, backed by a cloud media store.
The result
The content and file services, the authentication library and the admin interface are built in one Nx monorepo, with container images for the services.
