# SessionZero Design Doc ***© Bellsworne LLC 2025*** ***Last modified by Christopher Bell on July 14th 2025*** ## About SessionZero SessionZero is a free and open-source TTRPG "companion" application for managing characters, templates, data, and game sessions. It allows you to utilize any TTRPG system by being complately data-driven with user generated content. ## Features SessionZero at it's core is all about managing and creating data. Everything from sets of items or npcs to characters themselves are all user-generated pieces of content that can be used throughout the application. ### Data types The client allows you to Create, View, Manage, Import & Export, and even Download the various data types: #### Datasets Datasets can be anything. Items, NPCs, monsters, etc. The dataset type and the content within are completely arbitrary and user defined. Datasets contain "entries" that have user-defined fields and values of various types that can be grouped under sub-sections within an entry. These can be linked to various things throughout SessionZero, including Character Templates, to allow accessing the data within. #### Characters Characters are made up of two parts: The Template, and the Character instance. ##### Template This is the main sauce of your game. The character template sets up everything about a character, and is completely arbitrary and user defined. You can create sections that have user-defined fields of various types that can have default values, calculated values (using formulas), or references to dataset(s) or dataset types. You can link datasets to a template to be used in dropdown fields. There are also some special section-level features such as making a section have multiple values of a type and optionally adding quantities. (See the SZF documentation for more info) ##### Character (instance) This is the instance of a character template. You choose a template, and then choose all of the values, items, etc. Calculated fields will populate automatically. ### Game Sessions SessionZero sessions are simple, yet robust. You can set a session-specific character template to create and manage player characters, manage 'datasets' for various resources (NPCs, items, locations, etc), use a turn tracker, run various built-in commands, and more. The core application lets you manage your game sessions in a few different modes: #### Default (Offline) mode By deafult SessionZero works totally offline. This means each session you create, you have total ownership over. You can manually add characters for each of your players to keep track of them, and manage all other aspects yourself. You can also just use a session as a player to keep track of session-specific notes. #### Online Player If you have an account and are connected to a valid SessionZero server, you can join sessions created by others. You will have access to your character sheet, in-game chat, session notes, and other data that the GM gives you access to. All characters and session data update in real time as the session plays out. You can also take notes for each session in your personal journal. #### Online Game Master If you have an account and are connected to a valid SessionZero server, you can host an online session and invite others to join you. Set a character sheet template for players to use when creating their characters, manage session data, provide real-time updates to characters, use in-game chat and commands, manage turn order, and more. ### SessionZeroDB SessionZeroDB is an online repository of user-created SZF data that can be downloaded. When enabled, SessionZero can automatically download dependencies from SessionZeroDB (if they exist). ### SZF SessionZero uses a custom data format called SZF (SessionZero Format) for all of the data types mentioned previously. This specification is made to be more easily human readable with less clutter, easy syntax, and overall smaller file size. Read the [https://sessionzero.app/szf-docs.html](SZF Docs) for more information. ## Philosophy ### Free SessionZero is FREE. No account or subscription fees required for the entire application. ### Open Source SessionZero is first and foremost open-source software. We believe in the right of knowing whats going on behind the scenes. ### Offline first By default SessionZero works completely offline. Your data is stored locally, on your machine. No account required. No phoning home. You only need an account when accessing online features (Such as hosting a session). ### No BS No AI chatbots, no ads, no bloat. We promise. ## Online Accounts & Server Connections All SessionZero accounts are created and managed on the official SessionZero servers, which is always free. For hosting and playing in online game sessions, the application lets you choose which server to connect to. This is where the self-host option comes in: * **Self-Hosted Server (Free):** Host our open-source server backend yourself. This allows you to create and join online sessions without a subscription. * **Official Session Servers (Subscription):** For convenience, connect to the official SessionZero servers. Access for hosting and joining sessions requires a monthly subscription. ## Technical Details - Client: Avalonia C# - Server: ASP.NET, PostgreSQL