Skip to content

AMT-0004 Software Stack for AMT

Context

For building our own AMT solution, we need to choose a software stack. During our earlier POCs and market research, we gathered insight and information on technologies to use and which not to use.

During further discussions and brainstorm sessions, a software stack was chosen that accommodates our needs best.

While more fine grained requirements are listed elsewhere, some key requirements are:

  • The tool is locally runnable with docker.
  • The tool is runnable as user as a local Docker solution.
  • The tool is runnable on a cloud platform based on Kubernetes.
  • The tool supports multiple organizations, teams and projects.
  • The tool supports Oauth2.

Assumptions

We stick to suitable programming languages. As most AI related tooling is written in Python, this language is the logical choice for our development as well.

Currently, we do not see the need for a separate web GUI framework. it is preferred to bundle backend and frontend in one solution.

As part of a Dutch government organization, we need to adhere to all Dutch laws and standards, like:

Decision

Programming language

We will support the latest 3 minor version of Python v3 as programming language and Poetry for dependency management.

Backend

The Python backend will use the following key dependencies:

Frontend

We will use server-side rendering of HTML based on HTMX. For our main styling, we use Rijkshuisstijl. This is implemented by using design tokens, so that other organizations can use their own styling when using our tools by linking their own tokens.

When available, we use components from the NL Design System. If a component is not available, we will build it ourselves and contribute it to the NL Design System. We will publish the components that we use in our Storybook, which is hosted on the BZK GitHub repository.

Testing

We will use pytest for unit-testing and VCRPY and Playwright for module and integration tests.

Database

We will use SQLModel or SQL Alchemy with SQLite for development and postgreSQL for production.

Risks

As HTMX is relatively more limited than other UI frameworks, it may lack features we require but did not anticipate.

Consequences

We have clarity about the tools to use and develop our AMT tool.