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