RUBus is a web app tracking the Rutgers University bus system.
RUBus is the leading alternative to the official Passio app and has tens of thousands of unique monthly users geo-located across the Rutgers campuses. In September 2025, the first month of public release, it responded to over 7 million SSL requests, delivered 38 million socket messages to all clients, and served over 100 GB of bandwidth. This was reached solely by word of mouth with minimal advertising; I expect usage to grow significantly in the future.
Passio is the bus service provider Rutgers switched to in 2023. RUBus attempts to solve many of the issues students complain plague the Passio GO! apps and website; such as having a laggy, difficult-to-use UI with inaccurate bus ETAs and routes. RUBus relies on basic bus data from Passio (positioning, capacity), but calculates all other data (ETAs, time stopped, etc.) itself. This has made RUBus by far the most accurate bus app available to Rutgers students as the other unofficial apps also rely on Passio's wrong ETAs.
RUBus features real-time bus locations and ETAs, the latter proprietarily calculated on server so accurately that ETAs can even be shown down to the second. Time stopped and past breaks are shown, providing insight into potential breaks. All data is updated live. UI elements have deep customization, even with the option to use the bus marker styles from the past bus apps Rutgers used over the years. Individual routes can easily be selected.
A chatbot for answering complex questions is also available. It's capable of answering questions about what buses stop at what stops, what routes connect buildings, bus arrivals, when a user should leave to reach a destination, service times of routes, delays, service changes, network busyness, and more. This natural language capability is especially useful for new students not yet familiar with buses or buildings. Kimi K2 and the gpt-oss family of models are currently powering the assistant.
RUBus includes an advanced navigation system that provides routing between hundreds of Rutgers campus buildings. The system utilizes matrix distance calculations to display all available bus route options between selected origin and destination points and considers both live and historical bus ETAs and wait times at stops.
Python backends track and calculate bus and stop ETAs, transmitting via WebSocket. The frontend uses a Leaflet map and is served statically while a FastAPI app sends data to the client, offloading demanding tasks to the server. I chose to make a PWA to not take up storage on phones, enable seemless updates, and unify all operating systems onto a single codebase. I believe not requiring installs is a significant reason RUBus became the most popular unofficial bus app.
This project furthered my experience with Python, web frameworks, and especially front-end JS web development. This was my first ever PWA, my first time hosting on Cloudflare Pages, and my first time launching an LLM tool-calling server. I first began on the RUBus concept in September of 2023 and have continued development in my off time for the past two years.
RUBus is not affiliated with Rutgers University or Passio Technologies.
The RUBus client is open-source.
StockScope is a real-time press release aggregator for listed companies publishing on prominent newswires.
StockScope gathers releases from public newswire APIs, filters and categorizes them, and displays them in a central feed with the goal of providing investors with a trading advantage without needing to constantly refresh multiple newsrooms. LLMs additionally provide summaries and rationale.
A Sanic backend displays data from a MongoDB database. This project expanded my experience with MongoDB (pymongo), front-end web dev (HTML/JS/CSS), scheduling, and asyncio. This was my first time using Sanic and websockets and my first time using webhooks, Google Analytics, sessions, and an async framework in production.
bricks.deals aggreates Lego set deals from US retailers. Sets are filtered to show only below-retail-price and in-stock deals available for purchase online. Past deals and durations are also shown.
Deals can be sorted and filtered by various criteria. This lightweight web app excludes the clutter present on these stores' individual sites in a concise, neat, and efficient manner.
The site also offers real-time push notifications as deals go live, featuring an image preview of the set and direct link to the product page in the notification.
A Flask backend is used with a MongoDB database while a scheduling container periodically updates it. Push notifications are powered by Firebase Cloud Messaging. This weekend project advanced my experience with Flask, MongoDB, and front-end web development. This was my first time using FCM and service workers.
The bricks.deals front-end is open-source.
Deeply Researched is an open-source clone of OpenAI's Deep Research capabilities.
Rather than using an expensive fine-tuned reasoning model, Deeply Researched can mimick Deep Research's performance via careful prompt chaining with standard decoder models. Deeply Researched constantly checks its progress, backtracks, and refines its thought process while performing in-depth research tasks, including continually searching the web to discover required information. Satisfactory outputs have been shown with models as small as inexpensive Nova Lite 1.0 and Llama 70b.
Deeply Research primarily runs in browser with its logic written in JavaScript. A lightweight python ThreadingHTTPServer is used to make async web searches - no search API required. Most of the core logic was developed over a weekend.
RUwho is a service that allows for easier searching of the public Rutgers University people database. RUwho is unaffiliated with Rutgers.
Designed to expand upon the official search platform; it's advantageous by returning results in real-time as a query is being entered alongside returning contact info of each match without the need to open a new tab for each individual.
A Flask backend integrates with a FastAPI wrapper to fetch from the Rutgers DB. This project furthered my experience with Flask, HTML, JS, CSS (including media quieries), and CORS. This was my first time using FastAPI & SlowAPI, Waitress, Intersection Observers, New Relic (NRQL), and HTTPX (over Requests) and my first time using AJAX, localStorage, asyncio, and rate limiting in production.
RutgersGuessr is a clone of the GeoGeussr geography-guessing game that targets the Rutgers New Brunswick campuses.
RutgersGuessr runs statically without a web server. Images (of strictly public areas) were collected from online sources (i.e. rutgers.edu) and attribution is given where due. Leaflet renders the Mapbox map tiles.
This was another quick project that furthered my experience with mapping APIs, GeoJSON, and JS. This was the first time I served Mapbox tiles with Leaflet rather than Mapbox GL JS.
RutgersGuessr is open-source.