Design-Based Research Capstone

RCR: Poway-Midland Railroad Digital Experience

Transforming the Poway-Midland Railroad from a static informational website into a dynamic, data-driven visitor platform — built by the RCR team as a Design-Based Research capstone.

Interactive train schedule with real-time seat availability
View Feature
Prototype
Project Leads Rebecca, Cyrus, Rishabh

Live Train Schedule & Departure Board

From static text table to live departure board

Real-time departure board with live seat counts per ride
Date switcher — view any past or future operating day
Animated live train position tracker across route stops
Auto-detects operating type (Steam, Cable Car, Speeder)
Flask / Python backend SQLite database REST API Jekyll frontend
Before (Original Site)

Original site: a plain HTML table listing dates and times only. No seat availability, no live status, no way to check ahead.

What We Built

Our version connects to a Flask backend to show real seat counts for every departure. Visitors can check from home before driving out — reducing wasted trips and station crowding.

Impact
Replaced static date table with a live, queryable departure board
Added real-time seat availability for every ride
Gave staff operational data they never had before
View Feature →
Online booking form with ticket selection and confirmation code
View Feature
Prototype
Project Leads Rebecca, Cyrus, Rishabh

Online Reservation & Booking System

First-ever online reservation system for PMRR

Full booking form with passenger info and ticket counts
Unique confirmation code (PMR-XXXXXX) for every reservation
Seat conflict detection — prevents overbooking in real time
Booking history visible on personal profile page
Flask reservations API SQLite reservations DB Confirmation code generation Seat conflict detection
Before (Original Site)

Original site explicitly states: 'No online sales — tickets only available at the depot on ride days.' Visitors must show up and hope seats are available.

What We Built

A complete end-to-end booking flow. Visitors pick their date, ride, and ticket count, and receive a confirmation code they show at the depot. The backend enforces seat limits in real time to prevent overbooking.

Impact
Created PMRR's first-ever online reservation capability
Eliminates risk of visitors arriving to a full train
Provides a digital record of every booking for staff
View Feature →
Machine learning visitor forecast with weather and calendar data
View Feature
Prototype
Project Leads Rebecca, Cyrus, Rishabh

ML-Powered Visitor Forecast

A feature that does not exist anywhere on the original site

Gradient Boosting model trained on seasonal and weather features
Auto-fetches real weather from Open-Meteo API
Detects Poway USD school breaks and US holidays automatically
Hourly crowd prediction with temperature display per time slot
Python scikit-learn Gradient Boosting Regressor Open-Meteo Weather API Holiday & school break detection
Before (Original Site)

Original site: zero visitor volume information. No way to know how busy a given day will be before arriving.

What We Built

Built from scratch using a Gradient Boosting Regressor (R²=0.93) predicting hourly visitor counts from weather, season, school calendar, and event data. Visitors plan smarter; staff prepares for busy days. With real PMRR attendance data, accuracy improves dramatically.

Impact
Entirely new feature — nothing like it on original site
First data tool for visitor planning at PMRR
Model accuracy grows significantly with real park data
View Feature →
Interactive fleet roster with photos, specs, and history modals
View Feature
Prototype
Project Leads Rebecca, Cyrus, Rishabh

Interactive Fleet Encyclopedia

From plain text paragraphs to an interactive digital exhibit

9 pieces of rolling stock with full specs and real photos
Filter by operational status, steam, cable car, or static display
Click-through modal with restoration timeline per vehicle
Covers 1907 Baldwin, SF Cable Car #17, Fairmont Speeder, and more
JavaScript card + modal system Category filter logic Responsive image gallery Jekyll frontend
Before (Original Site)

Original site Equipment page: short text paragraphs per vehicle, no photos, no specs table, no filtering. Hard to navigate and not engaging.

What We Built

Rebuilt as a card-and-modal system where every locomotive and railcar has its own visual profile with photos, technical specs, and a full restoration timeline.

Impact
Replaced text-only list with an interactive visual roster
Added historical photos and restoration timelines for each vehicle
Created a permanent digital archive of the collection
View Feature →
Interactive history timeline with expandable eras and key figures
View Feature
Prototype
Project Leads Rebecca, Cyrus, Rishabh

Interactive History Timeline

From a wall of static text to an engaging interactive story

7 clickable eras from 1880s to today — expand to read full story
Interactive hotspot stage with clickable numbered markers
Key figures cards — Pollard, Porter, Frank Lorey, and more
Historical quote from PMRR historian Kay Prusinskas
Click-to-expand timeline Animated hotspot stage Jekyll markdown CSS transitions
Before (Original Site)

Original site History page: long unbroken paragraphs of text. No structure, no visuals, no interactivity — most visitors will not read it.

What We Built

Reimagined as a layered interactive experience. Visitors click to explore each era at their own pace and uncover the story of how the 1907 Baldwin's true identity was hidden for decades.

Impact
Transformed unread text into an engaging interactive exhibit
Surfaced the full Baldwin #30646 detective story for visitors
Structured educational resource for schools
View Feature →
Volunteer scheduling table with shift sign-up and live stats
View Feature
Prototype
Project Leads Rebecca, Cyrus, Rishabh

Volunteer Crew Scheduling Portal

Replaced manual phone and paper coordination

Full operating calendar auto-generated from schedule data
One-click shift sign-up and cancellation per shift
Live stats — open spots, crew signed up, steam Saturdays
Filter by operation type or your own signed shifts
Dynamic schedule generation LocalStorage persistence Filter and search system Jekyll frontend
Before (Original Site)

Original site: a single 'Volunteer with us!' link leading to a contact form. No scheduling, no shift visibility, no coordination tools.

What We Built

A self-service shift management system where volunteers see all upcoming operations, sign up, cancel, and track coverage — no coordinator phone calls required.

Impact
First-ever digital volunteer scheduling tool for PMRR
Eliminates manual phone and paper coordination
Gives coordinators a live view of all shift coverage
View Feature →
Events page with keyword search and category filter
View Feature
Prototype
Project Leads Rebecca, Cyrus, Rishabh

Events & Announcements Board

From an unformatted list to a searchable announcement board

Searchable events list with keyword and category filter
Categories: Events, Volunteer, Operations, Service
Instant filtering with no page reload
Structured announcement cards with date and summary
JavaScript live search Category filter system Jekyll static frontend
Before (Original Site)

Original site: events listed as plain bold text with no search, no filtering, no categories. Finding a specific event requires reading the whole page manually.

What We Built

Rebuilt as a structured, filterable board. Visitors search by keyword or filter by category to find what they need in seconds.

Impact
Added search and filter to a previously unnavigable list
Structured event data ready for future backend integration
Faster visitor access to relevant announcements
View Feature →
360 degree panoramic views and Leaflet interactive route map
View Feature
Prototype
Project Leads Rebecca, Cyrus, Rishabh

360° Panorama & Interactive Route Map

Virtual access to the park — original site has nothing like this

4 switchable 360° panoramic scenes with drag navigation
Interactive Leaflet route map with animated train marker
Route stops and historic markers labeled on map
Links through to full interactive history page
Pannellum 360° viewer Leaflet.js interactive map OpenStreetMap tiles Animated train marker
Before (Original Site)

Original site: no virtual tour, no map, no way to explore the railroad digitally before or after visiting.

What We Built

Gives visitors a digital preview of the railroad — exploring the track, platform, and locomotives from any device. Especially valuable for schools, mobility-limited guests, and out-of-town visitors.

Impact
Entirely new feature — no equivalent on original site
Accessible virtual experience for mobility-limited visitors
Drives park interest from online audiences
View Feature →
Community notes board with photo sharing and likes
View Feature
Prototype
Project Leads Rebecca, Cyrus, Rishabh

Visitor Notes & Community Board

A community sharing feature the original site has zero of

Visitors post text notes and photos from their visit
Like system — community can upvote favourite posts
Image upload stored via backend database
Notes persist across sessions
Flask notes API SQLite with base64 image storage Like / upvote system Jekyll frontend
Before (Original Site)

Original site: no visitor interaction, no community features, no way to share experiences online.

What We Built

A lightweight community board where visitors post memories and photos from their ride. Creates social proof, builds community, and gives PMRR a living archive of visitor experiences.

Impact
First community and social feature for PMRR
Generates user content that promotes the railroad organically
Gives PMRR a living visitor memory archive
View Feature →
Floating AI assistant chat widget for visitor recommendations
View Feature
Prototype
Project Leads Rebecca, Cyrus, Rishabh

AI Visitor Assistant

A 24/7 visitor guide — nothing like this on the original site

Floating button accessible from every page of the site
Chat interface with visit planning recommendations
Guides visitors to schedule, booking, and history pages
Responds to family, history, and volunteer-related queries
JavaScript chat interface Rule-based response engine Fixed floating widget Jekyll integration
Before (Original Site)

Original site: no help system, no FAQ interaction. Visitors must email or call volunteers for basic questions.

What We Built

A floating AI assistant widget available on every page. Visitors get instant guidance on visiting, booking, history, or volunteering — reducing the volume of emails and calls volunteers handle.

Impact
First visitor help system on any PMRR digital property
Reduces basic inquiry volume for volunteers
Available 24/7 with no staff required
View Feature →
Membership and donation portal with individual and family tiers
View Feature
Prototype
Project Leads Rebecca, Cyrus, Rishabh

Membership & Donation System

Digitised a membership process that was previously contact-only

Individual and Family membership tiers
One-time donation and recurring support options
Digital membership card shown on profile page
Integrated with user account and login system
Flask membership API SQLite user accounts Tiered membership logic Jekyll frontend
Before (Original Site)

Original site: 'Become a Member' leads to a contact form. Annual Family Pass ($50) listed on visit page but with no way to purchase online.

What We Built

A self-service membership and donation portal. Supporters join or donate directly without contacting the railroad — lowering the barrier to supporting a non-profit that depends on community funding.

Impact
Converted contact-only process into self-service digital flow
Lowers barrier to membership for new supporters
Creates a recurring revenue stream for the non-profit
View Feature →
Requires PMRR Collaboration

Next-Phase Features

These features are technically ready for development. Each requires access to PMRR hardware, data, or operational coordination that a formal partnership would provide.

GPS

Real-Time GPS Train Tracker

Requires a GPS unit mounted on the locomotive. Would replace our simulated tracker with live position data — showing visitors exactly where the train is and when it returns to the station.

Requires: Hardware: GPS module + cellular data on locomotive
CAM

Live Camera Feed

A live video stream from the station platform so visitors can watch operations remotely. Requires a camera and stable network connection installed at Old Poway Park.

Requires: Hardware: IP camera + park network access
ML

ML Forecast with Real Attendance Data

Our current model uses weather and calendar proxies. With actual PMRR ticket sales and headcount records, model accuracy would increase substantially — giving staff genuinely actionable predictions.

Requires: Data: historical attendance records from PMRR
AI

Full LLM-Powered AI Assistant

Upgrade our rule-based assistant to a live language model connected to real park data — answering complex questions about schedules, history, and accessibility with accurate, up-to-date answers.

Requires: LLM API key + live park data feed
PUSH

Push Departure Notifications

Visitors scan a QR code at the station and receive a phone alert when the train is 5 minutes from returning — eliminating blind waiting at the platform.

Requires: GPS tracker + notification infrastructure
GRP

School & Group Booking Portal

A dedicated booking flow for schools and community groups with custom pricing tiers, group size management, and direct coordinator communication — replacing the current phone-based group process.

Requires: Coordination with PMRR booking staff