Roadmap
Relevant source files
The following files were used as context for generating this wiki page:The RPG Character Sheet Builder is currently a "Functional MVP (Alpha)". This document outlines the planned features and technical improvements to evolve the application from its current state into a more robust and feature-rich tool. The roadmap is derived from the project's current architecture, explicit TODO comments in the source code, and logical next steps for a "Local-First" application.
Sources: README.md:11
Core Feature Enhancements
This section covers improvements to existing systems, focusing on stability, scalability, and user experience.
Sheet Persistence and Management
Currently, the application saves the sheet state to localStorage under a single key, and routing for specific sheets is not fully implemented. The plan is to introduce a system for managing multiple sheets, each with a unique identifier.
Sources: src/store/useSheetStore.ts:145, src/App.tsx:19
The proposed flow for sheet management is as follows:
This diagram illustrates the intended routing and data persistence logic for individual character sheets.
Theming System Refactor
The current theming system is functional but has a TODO note indicating the need for a more robust infrastructure as more themes are added. The future architecture will likely decouple theme structure from the hardcoded object in themes.ts to allow for easier creation and customization of themes.
Sources: src/store/useSheetStore.ts:5-6, src/lib/themes.ts
A potential future architecture could involve a more modular structure:
This class diagram shows a potential refactor where a ThemeManager handles loading and applying Theme objects, making the system more extensible.
New Features
This section details new functionalities planned for the application.
Advanced Export Options
The exportUtils.ts file includes a filter function that is not currently used but is designed to exclude specific elements from the exported image (PNG/PDF). A future feature will be to expose this functionality to the user, allowing them to hide elements like grid handles or other non-essential UI components from the final export.
Sources: src/lib/exportUtils.ts:39-44
| Feature | Description | Source File |
|---|---|---|
| Export Filtering | Allow users to exclude certain elements from the exported PNG/PDF by adding a specific class like no-export. | src/lib/exportUtils.ts |
Functional Sheet Title
The top bar contains an input field for the character sheet's title, but it is currently a static element with a default value. A planned enhancement is to connect this input to the global state, allowing the user to name their sheet and have that title persist with the sheet's data.
Sources: src/components/layout/TopBar.tsx:24-28
Technical Debt and Refinements
This section lists tasks related to code cleanup, bug fixing, and performance optimization.
Production Cleanup
The useSheetStore contains an example block for demonstration purposes. This block is marked with a TODO to be removed for production builds to ensure users start with a clean slate.
// src/store/useSheetStore.ts:68-78
export const useSheetStore = create<SheetState>()(
persist(
(set) => ({
// Example block
// TODO: Remove for production
blocks: [
{
i: "1",
x: 0,
y: 0,
w: 4,
h: 2,
type: "text",
data: { text: "Character Name" },
},
],
//...
Sources: src/store/useSheetStore.ts:70
Layout and Responsiveness Review
A TODO in the Canvas.tsx component indicates a need to review the responsive grid layout behavior, particularly how it matches the screen width. This task involves ensuring the grid and its contents adapt correctly across different breakpoints and devices.
Sources: src/components/sheet/Canvas.tsx:7