PyRunner / SoyCaf.net

PyRunner is a web-based game organizer built with Flask for managing Shadowrun pen-and-paper RPG campaigns. It tracks actions, results, NPCs, items, locations, and game mechanics, providing game masters and players with structured organization tools.

Last updated:

Overview

PyRunner (originally named pySchieber) is a specialized web application for organizing and managing Shadowrun tabletop RPG campaigns. It serves as a collaborative tool for game masters and players to track game state, NPC information, locations, and mechanical game systems.

The project is deployed and live at soycaf.net, featuring comprehensive game management capabilities tailored to the Shadowrun system.

Key Features

Campaign Management

  • Actions & Results Tracking: Record player actions and outcomes for each session
  • NPC Database: Maintain detailed records of non-player characters with attributes and relationships
  • Location Registry: Track important locations with descriptions and connections
  • Items & Equipment: Catalog weapons, gear, and valuable items with properties

Game System Implementation

  • Shadowrun Mechanics: Native support for Shadowrun-specific game rules
  • Skill Checks: Automated skill check calculations and result tracking
  • Stocks System: Track in-game assets, money, and resources
  • Tick System: Time management for initiative and action sequences
  • Gang and Corp Management: Track rival organizations and their properties

Session Organization

  • Structured Data Storage: Organized database for all game elements
  • Multiple Campaign Support: Manage multiple concurrent campaigns
  • Player Collaboration: Shared view for players and game masters

Technical Implementation

Architecture

  • Framework: Flask for lightweight, flexible web application development
  • Templating: Jinja2 for dynamic HTML generation
  • Frontend: HTML/CSS for responsive user interface
  • Database: SQLite for development, PostgreSQL for production deployment
  • Containerization: Docker for consistent deployment

Key Design Decisions

  • Modular design with separate modules for game mechanics
  • Clean separation between game logic and presentation
  • Extensible architecture to support multiple game systems
  • RESTful API endpoints for data management

Database Schema

Normalized relational database with tables for:

  • Campaigns
  • Characters & NPCs
  • Locations
  • Items & Equipment
  • Actions & Results
  • Game mechanics state

Skills Demonstrated

  • Flask Framework: Building feature-rich web applications
  • Python Development: Modular, well-structured code
  • Database Design: Relational database schema for complex domains
  • Jinja2 Templating: Dynamic template rendering
  • Game System Knowledge: Deep understanding of Shadowrun mechanics
  • Web Application Architecture: Multi-user web app design
  • Docker Deployment: Containerized production deployment
  • Domain-Driven Design: Organizing complex game system logic

Challenges & Solutions

Challenge: Representing complex Shadowrun mechanics in a web interface Solution: Modular system design with game-specific modules for each mechanic

Challenge: Supporting multiple concurrent campaigns Solution: Campaign-scoped database queries and session management

Current Status

🔄 In Progress - Core functionality implemented and deployed, ongoing feature additions for expanded game system support

Deployment

  • Live at: soycaf.net
  • Container: Docker deployment for easy scaling
  • Hosting: Personal VPS infrastructure
  • Monitoring: Integrated with homelab monitoring stack

Future Improvements

  • GraphQL API for more flexible client queries
  • Real-time collaboration features using WebSockets
  • Mobile-optimized interface
  • Character sheet export/import
  • Automated backup and recovery systems