Aug 22, 2025
2 min read
KCL D&D App
A digital companion for the KCL D&D Society.

A comprehensive digital companion for the KCL Dungeons & Dragons Society. This application serves as an organisational tool to enhance the users’ experience, providing features for character management, party organisation, campaign tracking, and achievement systems. It is not a replacement for pen-and-paper play, but rather a magical addon that complements traditional D&D sessions at the university.
- The repository: https://github.com/mkutay/dndsoc
- Website: https://kcldnd.uk
As I mentioned in my manifesto to be the President of the society, I started working on the web app in late March, and it has come a long way, with 30 thousand lines of code — probably the biggest thing I’ve created.
It is made with Next.js as the full-stack framework, with full type safety all around, even when accessing the database. Speaking of, it uses a self-hosted Supabase instance with schema migrations defined in the repo.
I’ve given a lot of thought about the minute things, the exact things that will make or break the usage of the app. The app is very responsive and works on all screens. The feature set is very extensive: associate’s sign up, journal, polling system, resouce pages, achievements system, character management, party organisation, and a when2dnd page for organising online sessions. The app also includes a very extensive dashboard for users: everything in one place.
Users of the app can have one of three roles: admin, DM, and player. Each of them have different access permissions, also defined as RLS policies in the database. In addition, we can consider these roles as subsets of each other, as a DM can also have a player page, with characters of their own — because a player might want to be a DM in the next term, for example.
I’m also going to add a trades system for different PCs to exchange items between them, could be between parties too! Of course, with DMs controlling the exchange in every step so that there isn’t any broken items in the story.
§