Skip to content

Latest commit

 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

ParkMaster

A real-time theme park wait time dashboard that tracks ride wait times across Walt Disney World parks. The app polls live data from the Queue-Times API, stores historical wait time records, and displays current ride statuses in a clean, auto-refreshing interface.

Tech Stack

Backend

  • NestJS — A structured Node.js framework that provides dependency injection, modular architecture, and built-in support for scheduling. Chosen for its opinionated project structure that keeps the codebase organized as it grows.
  • Prisma — Type-safe ORM for PostgreSQL. Generates a fully typed database client from the schema, so queries are validated at compile time and migrations are handled declaratively.
  • PostgreSQL — Relational database for storing parks, lands, rides, and wait time history. The structured relationships between parks, lands, and rides map naturally to a relational model.

Frontend

  • Angular — Component-based frontend framework. Chosen for its strong typing, built-in routing, and reactive patterns with Observables that pair well with the polling-based data model.
  • RxJS — Handles asynchronous data streams throughout the frontend. The async pipe in templates automatically subscribes to Observables and cleans up on component destruction, preventing memory leaks.
  • Tailwind CSS — Utility-first CSS framework for styling without writing custom CSS files. Speeds up UI development by composing styles directly in templates.
  • TypeScript — Used across both frontend and backend for type safety and better developer experience.

Architecture

The app is split into two independent halves:

  1. Data ingestion (backend/src/queue-times/) — A scheduler polls the Queue-Times API every 2 minutes for each park, upserting lands and rides into the database and recording wait time history.
  2. Data serving (backend/src/parks/) — A REST API reads from the database and serves park/ride data to the frontend.

The database acts as the intermediary — the two sides are fully decoupled.

Getting Started

Prerequisites

  • Node.js
  • PostgreSQL

Backend

cd backend
npm install
npx prisma migrate dev
npx prisma db seed
npm run start:dev

Frontend

cd frontend
npm install
npm start

The frontend runs at http://localhost:4200 and the backend at http://localhost:3000.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages