THE STORY
As a GM for over a decade, I was frustrated by existing tools that were either too bloated or too limited. D&D is a game about interacting with people—it's really important that you spend as little time fucking around trying to use your notes and as much time as possible actually interacting with the people around you in the game. I wanted to build something that felt natural, was lightning fast, and got out of the way during gameplay. After 3 years of development, Co-GM has 1,500+ users who found it organically, 50+ paying subscribers, and I still get messages from users saying 'I've been looking for a tool that does everything that Co-GM does for ages.'
QUICK STATS
DEVELOPMENT INSIGHTS
"D&D is about interacting with people. It's really important that you spend as little time fucking around trying to use your notes and as much time as possible actually interacting with the people around you in the game. There's only one or two clicks between any single thing in the entire app. It's really important to be able to take notes lightning fast and then have them get organized later. This is all pre-LLMs too—this is a big solo endeavor using my own fucking brain."
TECHNICAL CHALLENGES
Custom Markdown Linking System
The @note_name syntax was a nightmare to implement. When you create that link, it's clickable, and if you edit the name of the link, all the references to it have to also update. It's not like a normal markdown link where you just update the URL—here the text IS the URL, which makes it a lot more complicated. Writing custom markdown where an @ symbol turns something into a clickable link, but then deleting parts of it intelligently updates the link across all notes in the entire campaign.
Custom Calendar System
These were completely customizable calendars. Each GM can create a completely customized calendar for their campaign with their own number of weeks, number of days, number of months, every month with a different number of days. It supported all of that jazz, and that's just like a giant freaking mess. Keeping track of how Monday is a different day of the month, and those days are different per month each year as well. It's hellish. The system handles custom week lengths (e.g., 8-day weeks), custom month lengths (e.g., 13 months, 28 days each), and recurring events (e.g., always the third day of the fourth month of each year, or always the second Monday). All of this required a whole bunch of really annoying modulo math.
Workshop Sharing System
Built a rating system where users could publish calendars, compendia (encyclopedias/wikis), and random tables to a workshop. The data structures were kind of annoying because I was using a NoSQL database—I had to store the score both on the object that was in the store (for performance) and also save the score on the user. When someone subscribes to another user's wiki, all those pages become linkable from their own notes. That's kind of a headache to set up.
KEY FEATURES
- ✦Custom @note_name LinkingAuto-updating references across all campaign notes
- ✦Fantasy CalendarsFully customizable with variable months/weeks/days
- ✦Workshop MarketplacePublish and subscribe to other GMs' content with ratings
- ✦Lightning-Fast UX1-2 clicks between any feature, command+scroll to switch notes
- ✦Scratch Pad SystemHold Command and scroll to slide between notes horizontally
- ✦Random TablesCustomizable random generators for in-game content
IMPACT & RESULTS
- •1,500+ users discovered organically through Google Search
- •50+ paying subscribers with freemium model
- •30 monthly active users still finding it 3 years later
- •Zero marketing budget—all growth from word of mouth
- •User quote: "I've been looking for a tool that does everything that Co-GM does for ages. I can't believe I found this."
- •Still receiving Discord messages: 'Thank you so much for building this incredible tool'
RELATED WORK
Check out Mystica and Mercury Notes for related projects
