Image 1 — Toy Story 5 (RHJ's Storybook Style)
Image 2 — Toy Story 5 (RHJ's Storybook Style)

Toy Story 5 (RHJ's Storybook Style)

A placeholder while we wait patiently for RHJ's Storybook poster.

u/spiral_larips — 3 days ago

Bought a 2024 R/T with 19k for 21k today....

Reading this subreddit and watching some YouTube video, now I feel like I am the stupidest person for falling for this car...

reddit.com
u/spiral_larips — 7 days ago
▲ 1 r/foss+1 crossposts

Character Keeper (a system agnostic place to keep all your TTRPG characters)

I've been building a self-hosted character sheet manager for TTRPGs (not a ton of self hostable options currently), and it's gotten to a point where it's worth sharing.

I'll be upfront about this from the start: this project has been built heavily with AI assistance (Vibe/Slop, call it what you will). I'm not a professional developer, I have limited background in VB.NET and SQL. I have used Claude throughout, from architecture decisions down to individual features. I'm mentioning this because AI not often well received and Ive been self hosting long enough to see issues arise from it. The ideas, the decisions about what to build and why, and the hours of testing are mine. The AI helped me get there faster than I could have on my own.

The Sheet Bundle Idea:

The thing I'm most proud of architecturally is how game systems work. Most character sheet tools I've used you dont own the data and/or are typically for one system. I wanted something a little different: a game system is just a folder that has a HTML file for the sheet layout, a CSS file for the style, a JSON schema describing the data, and a manifest with some metadata, the app picks it up automatically. No code changes, no rebuild, no touching the core app at all.

Others features include: Assigning Campaigns, Character Statuses, External Sharing, Dice & Dice Logs, Attachments, Theming and more…

I am looking for anyone wanting to collaborate on Sheet Bundles. I would also love to have someone who actually knows what they're doing take a proper look, If that's you, reach out!

GitHub Link

u/spiral_larips — 2 months ago

Character Keeper (a system agnostic place to keep all your TTRPG characters)

Character Keeper

I've been building a self-hosted character sheet manager for TTRPGs (not a ton of self hostable options currently), and it's gotten to a point where it's worth sharing some deatils. I'll be upfront about this from the start: this project has been built heavily with AI assistance (Vibe/Slop, call it what you will). I'm not a professional developer, I have a background in VB.NET and SQL. I have used Claude throughout, from architecture decisions down to individual features. I'm mentioning this because I thats not often well recived and Ive been self hosting long enough to see issues arise from it. The ideas, the decisions about what to build and why, and the hours of testing are mine. The AI helped me get there faster than I could have on my own. On that note, security. I've run OWASP ZAP against it and done multiple rounds of AI-assisted code review focused specifically on auth, sharing, and data handling. I'm reasonably confident in where it stands, but I want to be honest: I'd love to have someone who actually knows what they're doing take a proper look before this goes fully public. If that's you, reach out.

TLDR: it's a web app (React, Node & json) for managing TTRPG characters, it runs on your own server, and once I'm happy with it, it's going to be released FOSS. I hate subscriptions, and just wanted to own my character data. Looking to gauge interest of others to collaborate on Sheet Bundles and/or security reviews. I have never done this sort of thing before and nervous to post it out in the public... but I am proud of what I have made here and I think of r niche product it could be of use to others.

https://preview.redd.it/g359gscn758h1.png?width=1406&format=png&auto=webp&s=930b26d57074ceb4b1db8ee24f43c88286902ecf

https://preview.redd.it/7waj2scn758h1.jpg?width=1290&format=pjpg&auto=webp&s=8dcf3c8068572d4201b7547b9599a4f87b604839

The bundle idea

The thing I'm most proud of architecturally is how game systems work. Most character sheet tools I've used you dont own the data and are typically for one system. I wanted something a little different: a game system is just a folder that has a HTML file for the sheet layout, a CSS file for the style, a JSON schema describing the data, and a manifest with some metadata, the app picks it up automatically. No code changes, no rebuild, no touching the core app at all.

The renderer that ties it all together doesn't know anything about Savage Worlds, or D&D, or Pathfinder. It just reads the bundle's HTML, looks for some data attributes on the elements (this input binds to this field, this button adds a row to that list, etc.), and wires it up to live state. That's what makes it sustainable to add new systems over time, and it's also what's going to make it possible to let a community build and share their own bundles down the road, sheet design becomes something anyone comfortable with HTML and CSS can contribute, not something that requires understanding React or the app's internals. That's gated behind some security work first (treating bundle HTML as untrusted input, basically), but the architecture is already shaped for it.

Right now I've got a few systems built out this way, with a full one for Savage Pathfinder, D&D 5e (2014), and Risus: The Anything RPG.

https://preview.redd.it/tsjhovwk758h1.png?width=1201&format=png&auto=webp&s=624d2a547b0bb3acec02984c8d7f04fb8b773bce

https://preview.redd.it/qzqggwwk758h1.png?width=2472&format=png&auto=webp&s=50049d214cd77a558f4cbef9a12ebf8104df3858

https://preview.redd.it/nns6hvwk758h1.png?width=2504&format=png&auto=webp&s=a73242a82e7325b258c9b4db7a50baf1f93a90c0

https://preview.redd.it/p1o1lwwk758h1.jpg?width=1290&format=pjpg&auto=webp&s=79324b1318a5ebe8ce7d92b49ea85300db1977af

https://preview.redd.it/vx3wiwwk758h1.jpg?width=1290&format=pjpg&auto=webp&s=3b06870c4a19eb5ff8ee8dc75c467c0b050798a6

Running a campaign

For GMs, there's a campaign layer on top of individual characters. A GM creates a campaign, gets a join code, and players attach their characters to it. Once a character is in a campaign, the GM gets visibility into that character's sheet without taking ownership of it or being able to edit it out from under the player. It's read access scoped to "characters in my campaign," for GMs who needs to glance at party resources or check someone's status mid-session without needing to message anyone.

Tracking character status

Characters aren't just active or not. I made it into a small set of states; active, inactive, retired, deceased, shelved. Switching states goes through one consistent menu action rather than having separate buttons scattered around, and the same control works to bring a character back to active, so there's no separate "restore" flow to remember.

https://preview.redd.it/zd91kxpp758h1.png?width=1420&format=png&auto=webp&s=a7f90be2fbc0800e27a767d17a83c1bb5b20efe5

Sharing outside the app

Not everyone you want to show a sheet to needs (or wants) an account. There's a share link system that generates a unique URL for a single character, with a permission level, read or read/write, and an expiration window you pick when you create it. Useful for handing a sheet to a GM running a one-shot, or letting a player update their own gear list without logging in on their phone at the table. Links can be revoked early, and they only ever expose the one character they were generated for, nothing else about your account or your other characters.

https://preview.redd.it/jseb2ksq758h1.png?width=1422&format=png&auto=webp&s=31be4ac8284632182d152592ae945fdbb06d509c

How it's all stored

No database. Each character is its own .json file, organized by user. That was a deliberate choice, it means backups are just copying files, the data is human readable if you ever need to poke at it directly, and there's no schema migration step when the app changes.

Session, notes work as a per-character log, date stamped entries for what happened, loot, NPCs, and any loose threads the party needs to follow up on and they're stored as a seperate .json file next to the character rather than crammed into the main character file. That keeps the character file itself small and fast to load even after years of session history piles up (lucky few that can campaign that long), since the app only needs to read the full session log when you're actually looking at that tab.

Getting your data out

Characters export as JSON, sheet images, portrait image, and a markdown file with session notes all zipped into a single file, so the data is portable and not locked inside the app.

Hopeful Future Features

These are not a guarantee, but they are things that I want for myself

  • Expand my the default Systems included (aka Sheet Bundles). Planning; D&D (3e & 2e), some WoD sheets (VtM, WtA, & DtF) and Pathfinder 1e.
  • PDF export
  • A simple, non-intrusive, dice tray
  • A GM Campaign World Wiki

https://preview.redd.it/g6bcbmct758h1.png?width=1434&format=png&auto=webp&s=ebcdf63734edfbc3ef295601dbf02b735e6bde8e

https://preview.redd.it/qwpm8lct758h1.png?width=1430&format=png&auto=webp&s=3690d72e7202aa82ce25eb1d3da1caab5aff64a6

reddit.com
u/spiral_larips — 2 months ago