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
❗️Comments from CTE: We invested significant effort in preparing the schedule system, but our guests showed more interest in other functions of the website. We might reduce this part if Poway-Midland Railroad's users prefer just buy the tickets at the office. We will put more attention on our user's real needs.

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
❗️Comments from CTE: The woker shows a good interest in the ML forecast feature. We just need their information to complete this.

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
❗️Comments from CTE: Our visitor said this is useful for volunteers to check the schedule and sign up for shifts. We should reach out to PMRR volunteers to get more feedback on this feature and make it more user-friendly for them.

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
❗️Comments from CTE: The vistor suggested us to check more comments from google to make the website more user-friendly. We should read what real users say to improve our website community.

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
❗️Comments from CTE: A PMRR worker told us the AI is really useful because a lot of people ask many questions every day, and it takes a lot of the workers' time. We should put more attention on improving the AI of our website.

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 →

👍 What Went Well

  • We did well in having conversations with our guests — engaging with them in a friendly and natural way, which created a positive atmosphere.
  • We managed our time effectively throughout the presentation and interaction, ensuring smooth transitions between topics and respecting the overall schedule.

📝 What Needs Improvement

  • We didn't prepare enough on organizing our words when presenting or explaining features.
  • Although we invested significant effort in preparing the schedule system, our guests showed more interest in other functions of the website. This taught us that we should better align our preparation with user expectations.

💬 Key Feedback Received

  • PMRR Worker Feedback: GPS tracking feature may not be necessary — site is small and visitors can easily see the train coming.; AI is really useful because a lot of people ask many questions every day, taking up workers' time. We should put more attention on improving the AI.
  • Google Reviews of Poway-Midland RR: Reading what real users say helps make the website more user-friendly.; Examples: make the news easier to update, so the worker and visitors can work and have fun more convenient.

📋 Future Plan for Our Website

  • ✅ Add functionality on admin page to easily update train schedules and news.
  • ❌ Remove the planned GPS tracking system — not needed for this context.
  • ✅ Regularly check online comments and reviews of PMRR to guide future improvements.

🎯 Conclusion

Overall, we had a great time with our guests. The experience was not only enjoyable but also highly educational. We learned to listen more closely to user needs, to validate technical ideas before building them, and to use real feedback — from both workers and online reviews — to build a simpler, more useful website.

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.

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
❗️Comments from CTE: John Brock says they are going to add a web cam based off of our input. We should conduct an on-site inspection.
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
❗️Comments from CTE: Based on worker feedback that AI saves significant staff time, this upgrade is a top priority.
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
DASH

Staff Login & Management Dashboard

Flask-Login authentication framework — manages staff sessions, protects restricted routes, and prevents unauthorized access to administrative tools. SQLite user credential store — maintains staff account records and verifies login credentials during authentication. Reservation management interface — queries the reservations database and displays customer booking records, ticket quantities, departure details, and confirmation codes. Volunteer records dashboard — retrieves volunteer sign-up data from the database and presents staffing information for upcoming operating days.

Requires: PMRR staff database + administrative approval
❗️Comments from CTE: Add functionality on the admin page to easily update train schedules and news.