# Contributing ## Development ### Architecture The software suite comprises two main components that are designed to work together on the same network. The _Display Block_ is responsible for displaying content on a monitor. The _Control Block_ controls multiple Display Blocks via a user interface. One Display Block can be controlled by multiple Control Blocks. - `control/`: Go code for the Control Block. - `frontend/`: The actual frontend written in SvelteKit. - `display/`: Go code for the Display Block. - `nixos/`: NixOS configuration for a self-updating, ready-to-use Linux system for the Display Block. This is not necessary for using PLG-MuDiCS. - `shared/`: Shared code and assets for the Control and Display Block. ### Technologies - **Go** for the base code in both the Control and Display Block. - **SvelteKit** in prerender mode for the frontend of the Control Block. - **TailwindCSS** for styling the frontend of the Control Block. - **Chromium** browser for handling most media display in the Display Block and serving the frontend of the Control Block. - **LibreOffice** for handling more complex documents in the Display Block.