felt is a virtual tabletop webapp written in Go with a vanilla Javascript frontend and using MongoDB for data storage.

Screenshot of Felt showing a hexgrid map on which a party of 4 humans and an alien dog thing facing off against two giant centipedes. Various UI windows are overlayed, some of them collapsed, showing the dice roller with dice log, and admin windows showing map and token management interfaces.

felt is game-system agnostic, being suitable for various types of TTRPGs, like D&D, World of Darkness, GURPS, etc. Gamemasters can register an admin account, upload maps, craft tokens, and use felt to facilitate puzzle scenes, battle scenes, exploration/investigation scenes, and more. In addition to the token system, it features a built-in dice roller and log as well as a shared status display. The websocket connection enables instant updates between clients and the frontend is extremely lightweight (~210KB), themeable, and responsive.