11. Htmx

Date: 2024-08-20

Status

Accepted

Context

For an interactive user interface in the web, Javascript is inevitable. As this is a very small project, for now mainly written and supported by a single person, we want to aim for the maximum of technical simplicity.

Decision

We will use the library “htmx” to provide an interactive user interface for the user.

Consequences

  • Django urls, views and templates will be tightly coupled with htmx so there is a strong dependency to htmx

  • the dependency to htmx could be reduced by implementing a fall-back (e.g. when javascript is deactivated in the user’s browser)

  • the whole project-code stays in one single repository (compared to a separate front-end)

  • using hypermedia as the engine of application state (HATEOAS) as central concept of the (internal) structure

  • the project will stay a standard Django “multi-page application” (MPA) instead of a JSON-Data-Provider coupled with a SPA-Frontend