diff --git a/CHANGELOG.md b/CHANGELOG.md index 238dd88a..8afe5385 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file. * Gathered all repositories in one Symfony application. * Changed to vite 7 and rolldown. +* Added ADRs 008 and 009. ### NB! Prior to 3.x the project was split into separate repositories diff --git a/docs/adr/006-templates.md b/docs/adr/006-templates.md index a68024e6..caaaa248 100644 --- a/docs/adr/006-templates.md +++ b/docs/adr/006-templates.md @@ -4,10 +4,12 @@ Date: 27-11-2024 ## Status -Accepted +Superseded Written years after the decision was made. +Superseded by [009-remove-remote-components.md](009-remove-remote-components.md). + ## Context The display client should run in a browser. Slide templates should therefore be written in javascript/React. diff --git a/docs/adr/008-mono-repository.md b/docs/adr/008-mono-repository.md new file mode 100644 index 00000000..57e40373 --- /dev/null +++ b/docs/adr/008-mono-repository.md @@ -0,0 +1,46 @@ +# ADR 008 - Mono repository + +Date: 30-06-2025 + +## Status + +Proposed + +## Context + +With the current multi-repository setup, when a new feature is added to the system, it often depends on changes to +multiple repositories, at the same time. +This split across the repositories complicates the development process. + +Another part of this is dependency management and maintenance across multiple repositories. It is important that the +code uses up-to-date dependencies. At the moment, this is especially an issue in the admin, client and templates +repositories that all depend on React and other javascript libraries. By merging these repositories the process of +updating the dependencies will be handled once instead of 3 times. + +## Decision + +We gather the code in `os2display/display-api-service` repository. The `os2display/display-client`, +`os2display/display-admin-client` and `os2display/display-templates` repositories will be merged into +`os2display/display-api-service`. + +The `os2display/display-api-service` repository will be renamed to `os2display/display`. + +The `os2display/display-docs` repository will be kept separate so the user facing documentation can be updated outside +the regular release cycle. + +Symfony routes and controllers will be added for `/client` and `/admin` to handle serving and configuring the screen and +admin clients. This will enable us to move configuration for the two clients to .env and expose directly in html through +twig templates. + +The static javascript build files will be served directly by nginx from `/public`. + +## Consequences + +All the code will be gathered into one repository. This will result in a single point of entry for development. + +Maintaining the javascript parts of the code will be unified. This will make the upgrading tasks easier. + +By unifying the code, features can be gathered into one feature branch. +This will make it easier to track the changes. + +Releases will only involve one tag, instead of multiple tags across repositories. diff --git a/docs/adr/009-remove-remote-components.md b/docs/adr/009-remove-remote-components.md new file mode 100644 index 00000000..f5000fb2 --- /dev/null +++ b/docs/adr/009-remove-remote-components.md @@ -0,0 +1,28 @@ +# ADR 009 - Remove remote components + +Date: 30-06-2025 + +## Status + +Proposed + +## Context + +The [library](https://www.npmjs.com/package/@paciolan/remote-component) for loading remote components we use for +importing the templates is abandoned. + +This makes it harder to keep the React applications up-to-date. Furthermore, remote-components have added +an unfortunate layer that hides javascript errors from the templates. This makes it harder to debug template issues. + +## Decision + +We remove the option of loading external templates into the system (remote components) and replace it with templates +that are a part of the code. The `os2display/display-templates` will be merged with the`os2display/display-api-service` +repository (See ADR-008). + +## Consequences + +Removing remote components will remove the option of importing templates from other locations. Therefore, the templates +need to be a part of the repository code. + +To add your own templates you will have to fork the repository, add your templates and build your own clients.