# 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 **completely data-driven** with user-generated content. ## Features SessionZero at its 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 various data types: #### Datasets Datasets are flexible collections of user-defined data, such as items, NPCs, or monsters. - The type and content are completely arbitrary and user-defined. - Datasets contain "entries" with custom fields and values. - Entries can be linked throughout SessionZero, including in Character Templates. #### Characters Characters are made up of two parts: The **Template** and the **Character instance**. ##### Template The template is the blueprint for a character sheet and is completely user-defined. It allows you to: - Create sections with custom fields (e.g., text, numbers, booleans). - Set default values for fields. - Define calculated values using formulas. - Reference entries from one or more Datasets. - Create special list-based sections for things like inventories or spellbooks. ##### Character (Instance) This is an instance of a character created from a template. You choose a template, fill in the values, and all calculated fields populate automatically. ### Game Sessions SessionZero offers a simple yet robust system for managing game sessions. You can manage player characters, handle resources via datasets, use a turn tracker, and more. The application supports several modes: #### Default (Offline) Mode By default, SessionZero works completely offline. - You have total ownership over your locally stored session data. - Manually manage characters for your players or use it for your own session notes. #### Online Player Connect to a SessionZero server to join sessions hosted by others. - Access your character sheet, in-game chat, and session notes. - All data updates in real-time. - Keep private notes in your personal journal for each session. #### Online Game Master Host an online session and invite others to join. - Set a character template for the session. - Manage all session data (NPCs, items, etc.). - Make real-time updates to character sheets. - Use tools like in-game chat, commands, and a turn tracker. ### SessionZeroDB SessionZeroDB is an online repository of user-created SZF data. When enabled, the application can automatically find and download required datasets and templates. ### SZF (SessionZero Format) SessionZero uses a custom, human-readable data format called SZF for all data types. For more details, read the [SZF Docs](https://sessionzero.app/szf-docs.html). ## Philosophy ### Free SessionZero is **FREE**. No account or subscription fees are required for the core application. ### Open Source SessionZero is first and foremost **open-source software**. We believe in the right to see what's 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. ### 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