Personal Project · Jan – Mar 2024

TXBus

Texas bus schedule aggregator

PythonReactThreadPoolExecutorFetch APIJSON
Visit Live Site

6+

Transit Operators

65%

Faster Load Times

40+

Active Users

TXBus app screenshot
01

Overview

TXBus aggregates real-time bus schedules from multiple Texas transit operators into a single, unified interface. Instead of visiting each company's website separately, users enter their travel details once and instantly see all available routes — sorted and ready to book.

02

Features

Smart Search

Search by departure city, arrival city, date, and passenger count across 6+ Texas operators simultaneously.

Dynamic Sorting

Sort results alphabetically by operator or by price — low to high or high to low.

External Booking

Clicking a result opens the operator's booking page directly — no middleman checkout.

Responsive Design

Optimized for desktop and mobile so students and travelers can use it anywhere.

03

How the Backend Works

01

City ID Mapping

A JSON file maps city names to operator-specific IDs. Each transit company uses a different internal identifier for the same city.

02

URL Construction

For each operator, the backend constructs a custom request URL with the correct date format, city IDs, and passenger count per that API's schema.

03

Parallel Fetching

ThreadPoolExecutor fires all operator API calls concurrently. Results merge as they arrive, cutting total load time by 65%.

04

Data Normalization

Raw responses vary by operator — different JSON structures, date formats, and price representations. A normalizer maps everything to a consistent schema.

05

Filtering & Delivery

Trips with price = 0 are filtered out. The unified list is returned as JSON to the React frontend for display and sorting.

04

Tech Stack

Frontend

React.js · useState & useEffect hooks · Fetch API

Backend

Python · ThreadPoolExecutor · requests

Data

JSON city ID maps · regex parsing · date formatting

Deployment

Production — launched to 40+ active college users

05

Gallery

Search View
Results View