Skip to content

Platform

The Syntec One platform is the metadata-driven engine and the Base package. Entities, fields, views, and forms are defined as data and rendered by a generic engine, so most functionality is configured rather than coded. Modules live in their own repos and consume the platform through the Module SDK.

Stack

  • PHP / Symfony 7.4 LTS on FrankenPHP (worker mode).
  • PostgreSQL 16 (storage-driver default; a DB-portability seam is preserved).
  • Everything runs in Docker — no PHP/Composer on the host.

How it fits together

Browser / Module  ──HTTP──►  Controllers (app/src/Controller/Api)
                                   │
                                   ▼
                             API services (app/src/Api)  ── OpenAPI (/api/docs)
                                   │
                                   ▼
                             Engine (app/src/Engine)  ── generic CRUD over metadata
                                   │
                  ┌────────────────┼─────────────────┐
                  ▼                ▼                 ▼
            Metadata          Security           View / Form
        (entities, fields,  (RBAC, field- &    (resolvers that turn
         views, forms)       row-level perms)   metadata into UI specs)
                  │
                  ▼
            PostgreSQL (data + the metadata that describes it)

A request names an entity and an operation; the engine reads that entity's metadata, applies security, runs the query, and returns JSON. The same metadata drives the generated REST API, the view grids, and the forms.

Where things live (app/src)

Directory Responsibility
Engine Generic CRUD over metadata (EntityRepository), query building, translations
Metadata Entity/field/view/form model + Persistence/Bootstrap (schema + Base seed)
View ViewResolver, filter compiler, variant/filter stores, raw-SQL views
Form FormResolver (turns form components into a render spec)
Security Roles, field- and record-level permission resolution, security context
Auth EdDSA JWT, Argon2id passwords, login/refresh
Api / Controller/Api API services and the HTTP routes (incl. OpenApi generation)
Schema Physical-schema introspection/indexing into metadata
I18n Language resolution and *_lng companion translations
Audit · Email · Menu · Sql · Config Audit trail, mail, menu tree, named SQL, settings

Next

  • Getting started — run it locally, run the tests, bootstrap the DB.
  • Concepts — entities, views, forms, security, translations, packages.

API reference: the running platform serves Swagger UI at /api/docs and the raw document at /api/openapi.json (generated by OpenApiGenerator — every route is represented there).