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 to provide investors 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.
StockScope Research is an experimental algorithmic trading platform utilizing language models for press release sentiment analysis.
Initially intended just to aggregate PRs, I saw an opportunity to shift StockScope's abilities to algorithmic trading following ChatGPT's surge. StockScope Research runs sentiment analysis on press releases in real-time, and, based on historical and present market behavior, predicts short-term stock movement. If an entry is successfully executed, an exit strategy will be chosen based on thousands of back-tested, high-quality releases.
Optimized, efficient algorithms have been created after months of paper trading and prompt engineering, constructing the StockScope Trading Model (STM). Performance is broken down and displayed publicly.
This has became my primary hobby project and gave me experience using Alpaca. The STM relies on multiple models to operate, currently using GPT, Mixtral, and OpenChat models.
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.
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.
RutgersGuessr is a clone of the GeoGeussr geography-guessing game that targets the Rutgers New Brunswick campuses, once again being unaffiliated with Rutgers.
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.
RUBus is a bus-tracking progressive web app (PWA) alternative to the Passio GO! app. RUBus is unaffiliated with Rutgers University and Passio Technologies.
Passio is the bus service provider Rutgers switched to in the 2023 academic year. 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 uses and relies on the Passio API for basic bus info, positioning, and capacity.
RUBus features real-time bus locations and ETAs, the latter calculated from recent travel times and dwell periods at stops rather than relying on matrix distances. Time stopped is shown to users, providing insight into potential breaks and other delays. Bus capacity and a live speed estimate are also shown. All data is updated live as it is received. Route colors, fonts, and other UI elements can be customized. Individual routes can easily be selected.
Backends, written in Python, 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.
This project furthered my experience with Python, web frameworks, and front-end web development. This was my first ever PWA and first time hosting on Cloudflare Pages.
The RUBus front-end is open-source.