geyser: modular concepts and construction
The geyser repository demonstrates how to take the classic Faithful Geyser Shiny example and systematically modularize it. It is published as both an R and Python package to illustrate multi-language Shiny module patterns, server/UI component separation, and WebAssembly deployment using Shinylive.
Progressive Modularization Flow
The repository demonstrates a step-by-step transition from monolithic Shiny code to decoupled multi-module architecture:
graph TD
Monolith[1. Old Faithful Monolith] --> Split[2. UI & Server Function Split]
Split --> Call[3. Function Call Module]
Call --> Mod[4. Shiny Module Server/UI]
Mod --> Conn[5. Connected Modules]
Conn --> AppPages[appPages: Modules over Pages]
Conn --> AppRows[appRows: Modules in Grid Rows/Cols]
Conn --> AppTwin[appTwin: Reused Modules]
Conn --> AppMain[app: Nested Modules]
Mod --> Py[5. Python Shiny Modules]
Published Documentation & Interactive Demos
Documentation, live interactive demos, and slide decks are hosted online at https://byandell.github.io/geyser/:
Developer Guides
- Architectural Overview (
DEVELOPER.md)
High-level design blueprint, package structures, and directory layouts. - R Developer Guide
Detailed guide for constructing and connecting Shiny modules in R. - Python Developer Guide
Guide for building modular Shiny for Python applications (shiny.express&shiny.ui).
Interactive Shinylive Demos
Explore live Shinylive applications running directly inside your browser without requiring a backend server:
- Demos Gallery
Overview of all browser-executable demos. - Build Module Demo
Interactive demonstration of single-module construction. - Connect Modules Demo
Multi-module composition showing data flow across reactive components. - Python Module Demo
Browser-based Python Shiny module demo. - Quarto Shinylive Demo
Embedded Shinylive widgets rendered inside Quarto documents.
Presentations & Slide Decks
- R Shiny Modules Presentation (
geyserShinyR)
Quarto slide deck covering R Shiny module mechanics. - Python Shiny Modules Presentation (
geyserShinyPython)
Quarto slide deck covering Shiny for Python module design patterns.
Source Code & Repository
- GitHub Repository: byandell/geyser
- Module Tutorial Code: Sample code for module construction in
inst/build_moduleandinst/connect_modules.