Skip to main content

Architecture

FNZ follows a monorepo architecture. This implies packages depend on each other. The following documents the packages, and their use-cases:

NameDescriptionPort
@fnz/typesAll domain types used throughout the backend and frontend
@fnz/coreCommon functions / test drivers used throughout the app
@fnz/docsAPI guide, written in Docusaurus3001
@fnz/partner-abcBackend code, used to integrate partner ABC. Create new packages for additional partners.
@fnz/backendBackend app5173
@fnz/frontendFrontend app3000

Monorepo dependency management is handled by lerna and npm workspaces. Lerna allows one to effortlessly declare dependencies between tasks, simplifying the build process. To reference how different build processes depend on each other, review the file nx.json.

For example, in order to preview the backend, run the following in the top-level directory:

npx lerna run dev --scope=@fnz/backend

Dependencies

As a monorepo, dependencies are hoisted to the top-level directory.

Deployments

Deployments are done through Github Actions, running lerna for deployment.