Skip to content

Repositories

The Syntec One codebase is a polyrepo: a set of small, single-purpose repositories rather than one monorepo. They live on Bitbucket under git@bitbucket.org:syntec-it/ and resolve each other over SSH (Composer VCS for backend, npm git-deps for frontend) — so any dev environment builds from Bitbucket with no sibling checkouts required.

The pattern

Every functional unit (the base platform, and each module) is three repos:

Suffix Kind Role
syntec-one-<unit> Composer library Importable backend — PHP/Symfony code + seed packages.
syntec-one-<unit>-admin npm library Importable frontend — Angular UI (ui/{widgets,hooks,slots,routes}.ts).
syntec-one-<unit>-base Dev-env app Installable dev environment (Docker) that mounts the two libs for authoring and pulls everything else from Bitbucket.

A customer/install app is the build-up of the base plus the chosen modules.

Base platform

The engine every module builds on.

Repo Package Purpose
syntec-one-core syntec/platform-core (Composer) Backend engine — metadata-driven REST API, auth (EdDSA JWT + field-level RBAC), the entity / view / form / menu / hook engines, and package import/export.
syntec-one-admin @syntec/one-admin (npm, ng-packagr) Frontend engine — the admin SPA packaged as an Angular library. Exposes provideSyntecAdmin(...), syntecAdminRoutes, and the four module-extension surfaces (widgets, hooks, slots, routes). Ships a committed dist/ git-dep.
syntec-one-base Base authoring app; runs the base backend + SPA at :8080 / :4200. Mounts local ../syntec-one-core for authoring and syntec:package:export base.
syntec-one-admin-base The base frontend app (module-less) at :4200 — the thin app that module/customer frontends are scaffolded from. Consumes @syntec/one-admin + @syntec/one-sdk.

CRM module

The reference module — proves the extension framework end-to-end.

Repo Package Purpose
syntec-one-crm syntec/crm (Composer) CRM backend lib — packages/ (entities, menu, seed data) + src/. No Docker; imported into a database with package:import crm.
syntec-one-crm-admin syntec-one-crm-admin (npm) CRM frontend lib — ships ui/{widgets,hooks,slots,routes}.ts (lead-score widget, lifecycle hooks, dashboard card + route). No Docker.
syntec-one-crm-base CRM dev environment at :8082 / :4202 — mounts both CRM libs for authoring; imports core (Composer VCS) and the admin engine (npm git-dep) from Bitbucket.

Shared & infrastructure

Repo Package Purpose
syntec-one-sdk @syntec/one-sdk (npm) Generated TypeScript API client (from the core OpenAPI spec). Consumed by every frontend as a git-dep; handles 401 auto-refresh. Ships a committed dist/.
syntec-one-docs This documentation portal (MkDocs-Material). Aggregates each repo's docs/ at build time via scripts/sync-docs.sh.
syntec-one-redis Shared local Redis service (cache / session backing) for the dev stacks.

Branch & release model

  • dev is the working line — all day-to-day work happens here.
  • main is the release line (Bitbucket's default branch).
  • A release ("bump minor/major") merges dev → main. The first release cut every product repo to 0.2.0; the -admin libraries track their own PATCH cadence (e.g. syntec-one-admin at 0.1.x).
  • Dev installs pin #dev / *@dev; a production install should pin main or a version tag so it gets released — not bleeding-edge — code.

Retired / not yet built

  • Retired: syntec-one-platform (the original monorepo) — split into core / sdk / base and deleted. syntec-one-crm-platform (a migration-pilot artifact) — deleted; the CRM family is exactly crm + crm-admin + crm-base.
  • Planned: syntec-one-dealership{,-admin,-base} (the second module, to prove module→module dependencies) and the customer clone-and-rename template repos.