Trudvang Character Creator

March 27, 2026 Morgan Rogers

Why Trudvang?

If you've spent any time in the TTRPG space, you've probably heard of D&D, Pathfinder, maybe Call of Cthulhu. Trudvang Chronicles is... not one of those. It's a beautifully illustrated, Nordic-folklore-inspired RPG with deep lore, a unique magis system, and - crucially for this project - a character creation process that is dense.

Rolling up a Trudvang character involves multiple steps: choosing a people and archetype, assigning attributes, selecting skills, picking disciplines, and more. It's the kind of thing that begs for a guided digital tool, especially for new players. So I built one.

View the project on GitHub

What I Built

The Trudvang Character Creator is a full-stack character creation app that walks players through a 7-step wizard:

Origin → Archetype → Traits → Skills → Disciplines → Equipment → Review

At each step, the app validates choices, enforces game rules, and feeds selections forward into the next stage. The goal: take a process that normally involves flipping between rulebook chapters and scribbling on scratch paper, and turn it into something guided and intuitive.

Key Features

  • 7-step creation wizard - Each stage of character generation gets its own focused screen
  • Creation Point budget system - Players choose an experience tier (Beginner 300 / Practiced 500 / Experienced 700 CP) that governs how many points they can spend across traits, skills, and disciplines
  • Seven core traits - Charisma, Constitution, Dexterity, Intelligence, Perception, Psyche, and Strength, each ranging from -4 to +4
  • Skills with nested Disciplines and Specialties - Reflecting Trudvang's layered skill system
  • Character dashboard - A saved character sheet viewer so you can revisit and review your creations
  • Admin Panel - For managing game content like Origins, Archetypes, Skills, and Equipment
  • Auth & role-based access - JWT authentication with admin and standard user roles

The Process

This project has been one of those "learn by building" experiences. A few things that shaped how it came together:

The Tech Stack

I wanted to use this project to get hands-on experience with a modern full-stack JavaScript architecture:

  • Frontend: React + React Router + Apollo Client
  • Backend: Node.js + Express(REST API) alongside Apollo Server 4 + GraphQL
  • Database: MongoDB + Mongoose
  • Auth: JWT + bcryptjs for authentication and role-basec access control

Running both a REST API and a GraphQL endpoint side by side was a deliberate choice. REST handles auth and straightforward CRUD, while GraphQL powers the more complex, nested queries that character data demands (think: fetching an Origin with its associated Archetypes, Skills, and Disciplines in one shot).

Starting With the Data Model

Trudvang's character creation rules are intricate. Before writing a single component, I had to map out the relationships - Origins, Archetypes, Traits, Skills, Disciplines, Specialties - and figure out how to represent them in MongoDB in a way the app could reason about. The Creation Point system added another layer: every choice has a cost, and the budget depends on experience tier. Getting the data model right early saved me a ton of headaches downstream.

Multi-Step Forms Are Deceptively Hard

A 7-step wizard sounds straightforward until you need to handle:

  • Conditional logic between steps - Skills, Disciplines, and Specialties are hierarchically dependent; you must invest levels in a parent Skill before you can advance its Disciplines, and likewise for Specialties within those Disciplines
  • Budget validation that spans multiple stages - spending CP on Traits affects what's left for Skills and Disciplines
  • State management across the full flow
  • Navigation - letting users go back and change earlier decisions without blowing up downstream selections

React Router and careful state architecture made this manageable, but it took deliberate decisions to keep things clean as the wizard grew.

Building for an Obscure System

One unexpected challenge: there aren't many digital references for Trudvang. No open APIs, no community databases to pull from. Everything had to be manually structured from the Trudvang Chronicles Player's Handbook (Berggvist & Malmberg, 2017). It was tedious, but it gave me an appreciation for data modelling that I wouldn't have gotten from a more mainstream system. I ended up writing seed scripts (dbInit.js) to populate the database with all the game data - Origins, Archetypes, Skills, Disciplines, Specialties, and Equipment - so the app is playable out of the box.

Where It Stands

The core wizard flow is functional and complete - you can walk through all seven steps and produce a playable character. The character dashboard lets you view saved characters, and the admin panel is in place for managing game content. Auth works, roles work, and the seed data gives you a working app right out of the box.

But there's a difference between functional and finished. Some features need fleshing out, and there are rough edges that need smoothing.

What Lies Ahead

Here's what's on the roadmap to take this from functional to finished:

Creation Budget Selection

The three expeience tiers (Beginner 300 / Practiced 500 / Experienced 700 CP) are defined in the system, but players can't actually choose between them yet during character creation. Building a budget selection step, or integrating it into the first stage of the wizard, is a key missing piece. Once it's in place, the rest of the wizard can dynamically enforce the correct CP ceiling throughout the creation process.

Equipment System

The Equipment step exists in the wizard flow, but it needs work on two fronts:

Seed Data: The equipment database is currently incomplete. A full pass through the Trudvang Chronicles Player's Handbook is needed to populate all gear items - weapons, armor, tools, and consumables - with accurate stats, costs, descriptions, and category tags.

Starting Gear vs. Starting Currency: Trudvang character creation includes an important choice at the equipment stage: each archetype offeres (typically) three preset gear packages tailored to that character archetype. Players can select one of those packages for free, or forgo them entirely and instead receive a starting currency amount to spend freely on individual items. The wizard needs to present this choice clearly by surfacing the archetyp-specific gear options first, with a fallback path to the full equipment shop for players who prefer to build their own kit from scratch.

Character Deletion

You can create and view characters, but deleting them isn't fully wired up yet. Adding proper deletion with confirmation dialogs is a priority for the dashboard.

Admin Features

The admin panel exists for managing game content, but it needs expansion, i.e., better CRUD flows for Origins, Archetypes, Skills, and Equipment, plus user management capabilities.

General Polish

  • UI/UX refinements across the wizard steps
  • Better error handling and edge case coverage
  • Improved responsive design for mobile
  • Code cleanup and refactoring
  • Potential deployment (currently runs locally on Node.js 18+ and MongoDB)

Lessons So Far

A few takeaways from this build that apply well beyond a niche RPG tool:

  1. Niche projects are great teachers. Working without an existing ecosystem forced me to think through every layer of the problem myself.
  2. Multi-step workflows are a real-world pattern. Onboarding flows, checkout processes, application forms - the wizard pattern shows up everywhere. Building one from scratch gave me a deep understanding of the UX and state management challenges involved.
  3. "Mostly done" is where the real work begins. Getting the core flow working was the fun part. Finishing the remaining features, hadnling edge cases, and polishing the experience, that's where discipline matters.

Follow Along

This is an active project and I'll be sharing updates as I work through the roadmap. If you're into TTRPGs, React, or just enjoy watching someone build something for an audience of maybe twelve people, stay tuned.

Trudvang Character Creator on GitHub