This project provides software for a local vttrpg / gaming setup, by managing multiple screens/clients/players/dm to help create a ttrpg experience using hardware, allowing a virtual table screen, scenery screens etc.
This project uses server driven UI, where the server written in Go, The screen (or client) side is using Pixi.js for the rendering of the screens. While connectRpc pins down the protocol between server and client. Each screen or client can connect and either login in as a viewer, device, player, or GM and either get their own screen rendered.
This allows the server and thus GM to control a TV screen on the table as battle map. Or TV or PC monitors to display scenery, maps or anything else. Intheory when also music and lightning is integrated, it will allow you to control the entire game room via browser.
Tech | Usage |
---|---|
Buf | The compiler used by connectRPC and proto to generate the necessary object and services |
ConnectRPC | A collection of libraries and tools to setup grpc communication using proto3 |
Go | The language used for the server stack |
Make | A tool that can read and execute commands from a file, helping with local development |
Nodejs | The stack enabling svelte and generation of browser code |
Playwright | The browser testing suite that powers the clients testing suite and the integration tests |
Proto3 | The protocol language used to connect the client <-> server |
Vscode | The IDE that preferred to be used, all debugging and local development are configured around vscode |
Tech | Usage |
---|---|
Eslint | The linting tool used to check the code quality |
Flowbite | Component library for svelte |
Pixi.js | 2D rendering of screen |
Prettier | The code formatter that is used for all the client side code |
Svelte | Static site generation for the screen |
TailwindCSS | The tool that makes css easier for components |
Tech | Usage |
---|---|
Charm.sh components | Components for TUI applications, styling and logging |
GolangCI lint | The linting tool used for the server, ensuring code quality |
Ginkgo & Gomega | The testing framework used for unit and component tests |
Cobra | The framework used for cli command handling, allowing us to build one binary for all |
Viper | The library / framework that used to build the configuration handling of the server |
Gorm | The library or ORM (object relation manager) used to connect golang object to SQL tables |
Golang Jwt | The library used to make user authentication tokens |