Visual Story Plotting & World-Building Tool for Creative Writers
Storymaster is a comprehensive PySide6-based creative writing application that seamlessly combines visual story structure planning with detailed world-building capabilities. Perfect for novelists, screenwriters, and game designers who need to organize complex narratives and rich fictional worlds.
- Interactive node-based interface for plotting story beats with drag-and-drop functionality
- Multiple plot support - manage main plots, subplots, and character arcs simultaneously
- Tension mapping with visual flow indicators (Rising, Flat, Point, Lower)
- Customizable node shapes - rectangles, circles, diamonds, stars, hexagons, triangles
- Linked-list navigation for easy story flow management
- Integrated scene notes and beat descriptions
- Individual character development tracking with dedicated arc management
- Arc point system for plotting character growth and transformation
- Character-to-node connections linking story beats to character development
- Arc type customization for different character journey patterns
- Character management - detailed actor profiles with relationships, backgrounds, classes, and races
- Faction system - complex organizational structures with hierarchies and conflicts
- Location catalog - comprehensive setting database with descriptions and connections
- Historical timeline - track events with multi-entity involvement
- Object repository - manage items, artifacts, and world elements
- Dynamic relationship mapping between all entities
- SQLite backend - completely offline, portable, and backup-friendly
- MVC architecture - clean separation of concerns with SQLAlchemy ORM
- Multi-user support - user accounts with complete data isolation
- Project isolation - multiple stories/worlds in organized workspaces
- Professional dark theme - eye-friendly interface for long writing sessions
- Cross-platform compatibility - Windows, macOS, and Linux support
The fastest way to get started - no setup required!
# Install and run with uvx (Python 3.8+ required)
uvx run git+https://github.com/Bohndiggin/storymaster.git
# Alternative: Install with pip
pip install git+https://github.com/Bohndiggin/storymaster.git
storymasterThis method automatically handles dependencies, database setup, and launches the application!
For contributors and developers who want to modify the code:
git clone https://github.com/Bohndiggin/storymaster.git
cd storymaster
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # Linux/Mac
.venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
# Initialize database
python scripts/init_database.py
# Load sample data (optional)
python scripts/seed.py
# Start Storymaster
python storymaster/main.pyDownload ready-to-run executable from our releases:
- No Python installation required
- All dependencies included
- Just download, extract, and run
storymaster.exe - Available in GitHub Releases
Portable application for all Linux distributions:
- Download the
.AppImagefile from releases - Make executable:
chmod +x Storymaster-x86_64.AppImage - Run directly:
./Storymaster-x86_64.AppImage - Works on any Linux distribution without installation
storymaster/
โโโ storymaster/
โ โโโ model/ # Data layer
โ โ โโโ database/ # SQLAlchemy models and schema
โ โ โโโ common/ # Shared model components
โ โ โโโ litographer/ # Story plotting data models
โ โ โโโ lorekeeper/ # World-building data models
โ โโโ view/ # UI components (PySide6)
โ โ โโโ common/ # Shared UI elements & user management
โ โ โโโ litographer/ # Story plotting interface
โ โ โโโ lorekeeper/ # World-building interface
โ โ โโโ character_arcs/ # Character development interface
โ โโโ controller/ # Business logic
โ โ โโโ common/ # Shared controllers & user management
โ โโโ main.py # Application entry point
โโโ tests/ # Comprehensive test suite
โ โโโ model/ # Database and logic tests
โ โ โโโ database/ # Schema and test data
โ โ โโโ litographer/ # Story plotting tests
โ โ โโโ lorekeeper/ # World-building tests
โ โโโ fixtures/ # Test utilities and data
โโโ assets/ # Application assets
โ โโโ storymaster_icon.ico # Windows executable icon
โ โโโ storymaster_icon.svg # Vector icon (cross-platform)
โ โโโ storymaster_icon_*.png # Various sizes for system integration
โโโ scripts/ # Build and utility scripts
โ โโโ build_executable.py # Cross-platform executable builder
โ โโโ build_standalone.py # Standalone executable builder (recommended)
โ โโโ build_fast.py # Fast development build
โ โโโ build_appimage.py # Linux AppImage builder
โ โโโ build_rpm.py # Linux RPM package builder
โ โโโ build_macos.py # macOS app bundle builder
โ โโโ run_tests.py # Lightweight test runner
โ โโโ run_comprehensive_tests.py # Comprehensive test suite with coverage
โ โโโ init_database.py # Database initialization
โ โโโ migrate_database.py # Database migration tool
โ โโโ seed.py # Sample data loader
โโโ storymaster.spec # PyInstaller configuration
โโโ storymaster.spec.rpm # RPM package specification
โโโ requirements.txt # Python dependencies
- Create Project - Start with a new story workspace
- Add Plots - Create main plot and subplots using the Plot menu
- Build Structure - Add story nodes with custom shapes and connections
- Organize Sections - Group scenes into acts or chapters
- Add Details - Include notes, tension levels, and scene descriptions
- Design Characters - Create actors with detailed backgrounds
- Build Locations - Establish settings with rich descriptions
- Create Factions - Define organizations and their relationships
- Track History - Record significant events and timelines
- Manage Objects - Catalog important items and artifacts
Access via the Plot menu:
- New Plot - Create additional storylines or character arcs
- Switch Plot - Navigate between different plot threads
- Delete Plot - Remove unused or completed plots
- Open Project - Switch between different story worlds
Access via the User menu:
- New User - Create additional user accounts for multi-user environments
- Switch User - Change active user without restarting the application
- Manage Users - Add, switch, or delete user accounts
- Data Isolation - Each user maintains separate stories, settings, and data
# Clone repository
git clone https://github.com/Bohndiggin/storymaster.git
cd storymaster
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # Linux/Mac
.venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
# Initialize database
python scripts/init_database.py
# Load sample data
python scripts/seed.py
# Run application
python storymaster/main.py# Run all tests
python scripts/run_tests.py
# Run pytest tests
pytest tests/ -v
# Run specific test modules
pytest tests/model/litographer/ -v
pytest tests/controller/litographer/ -v
# Run comprehensive tests with coverage
python scripts/run_comprehensive_tests.py# Format code
black .
# Sort imports
isort .
# Type checking (if mypy is installed)
mypy storymaster/# Initialize database
python scripts/init_database.py
# Load sample data
python scripts/seed.py
# Handle schema updates
python scripts/migrate_database.pyStorymaster provides multiple distribution options for different platforms and use cases:
# Standalone executables (recommended for distribution)
python scripts/build_standalone.py
# Traditional PyInstaller build
python scripts/build_executable.py
# Linux AppImage
python scripts/build_appimage.py
# Fast development build
python scripts/build_fast.py
# Platform-specific builds
python scripts/build_rpm.py # Linux RPM packages
python scripts/build_macos.py # macOS app bundles- Windows: Standalone
.exewith all dependencies - Linux AppImage: Universal binary that runs on any distribution
- Linux RPM: Native packages for Red Hat-based systems
- macOS: Native
.appbundles with installer DMG - Cross-platform: Portable executables for development/testing
All build systems use proper icons from the assets/ directory:
storymaster_icon.ico- Windows executablesstorymaster_icon.svg- Cross-platform vector iconstorymaster_icon_*.png- Various sizes for system integration
- SQLite backend - Single file database (
storymaster.db) - Portable storage - Copy
.dbfile to backup entire project - Offline operation - No internet connection required
- Relational integrity - Foreign key constraints and data validation
- Sample data included - Example characters, locations, and story structure
Simply copy storymaster.db to preserve all your work:
cp storymaster.db backup/storymaster_backup_$(date +%Y%m%d).dbEnvironment Problems:
ModuleNotFoundErrorโ Ensure virtual environment is activatedDatabase connection failedโ Runpython scripts/init_database.pyPySide6 import errorโ Reinstall withpip install PySide6
Database Issues:
- Corrupt database โ Delete
storymaster.dband runinit_database.py - Missing tables โ Run
python scripts/init_database.pyto recreate schema - Performance issues โ Consider archiving old projects
UI Problems:
- Blank interface โ Check console for PySide6 errors
- Node positioning issues โ Clear cache and restart application
- Menu not responding โ Verify database connection
- ๐ Check CLAUDE.md for detailed technical documentation
- ๐ Report bugs at GitHub Issues
- ๐ก Request features via GitHub Issues with the "enhancement" label
- ๐ Review sample data to understand the data model
We welcome contributions! Please see our development workflow:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow existing code style (Black formatting)
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with PySide6 (Qt for Python) for the user interface
- Database powered by SQLAlchemy ORM
- Inspired by professional story development tools and writing methodologies
Start crafting your next great story today! ๐โจ
For detailed technical documentation, see CLAUDE.md