Chris's Projects
4
Projects
7
Categories
22
Upvotes

Projects

4 of 4 projects shown

Featured

Coursework

VitalPass

VitalPass is a full-stack platform that digitizes a clinic's entire Annual Physical Examination workflow -patient self-registration, QR-code check-in, real-time queuing, electronic medical records, and verifiable digital certificates - across three role-based portals for patients, staff, and administrators. At its core is a smart routing engine that maps each patient's optimal path through the exam stations and reroutes them on the fly to the least-congested one, turning traditional first-come-first-served lines into a self-optimizing exam floor. Built on React/TypeScript, Django/DRF, and PostgreSQL and deployed to AWS, it's engineered to production standards - custom JWT authentication, AES-256 encryption, a tamper-evident audit trail, and live administrative analytics - and was nominated Best Thesis at our capstone defense.

AES-256AWS EC2Brevo (SMTP)CaddyCloudfare R2DjangoDjango REST APIDjango REST FrameworkGunicornPlaywrightPostgreSQLPythonReactSupabaseTailwindTypeScriptUI/UXVite
Open

Coursework

Enhanced Enlistment System

A curriculum-aware course enlistment system for a university ( Inspired by DLS CSB's Enrollment System (project was to enhance/better its flow)), built to prove a single architectural conviction: that academic rules belong in the database, not in the interface in front of it. Where a typical enlistment screen shows every course and leaves students to cross-reference their own records, this one presents only what a student is actually eligible for - sorted into retakes, curriculum-suggested courses, and advanced electives - while PostgreSQL enforces every constraint behind it: grouped prerequisites that express both and and or conditions, standing gates, unit-load ceilings, seat capacity, and timetable conflicts caught by GiST exclusion constraints over a custom time-range type. Row-level security is the authorization model rather than a second line of defence: enlistment_item has no INSERT policy at all, so a guarded SECURITY DEFINER function is the only path a course can enter an enlistment, and no hand-crafted request can bypass a prerequisite check. The design is verified by 63 assertions executed against a real PostgreSQL engine - including the regression case that motivated the whole project, where a course with three prerequisite groups must stay blocked when only one or two are satisfied. Built with PostgreSQL and Supabase behind a Next.js 16 and TypeScript front end, deployed on Vercel.

DatabaseSupabase
Open
Video

Coursework

Manila Voting Weather of 2025

The May 2025 midterm elections in the City of Manila produced two results that pre-election surveys did not anticipate: a landslide mayoral victory for Isko Moreno Domagoso, who won 822 of the city's 895 barangays with 59% of the vote, and a first-place senate finish for opposition candidate Bam Aquino, who was marked on the ballots of roughly 55% of Manila voters. Using a barangay-level dataset of 8.5 million senate ballot marks and 897,320 mayoral votes, this paper measures both results, compares them against campus mock polls and commercial survey findings, and examines why the polling instruments missed. Three mechanisms account for most of the gap: 62% of voters decided within a week of the election, after most instruments had stopped measuring; the mock polls that circulated during the campaign were convenience samples of student populations rather than probability samples of the electorate; and the coordinated Isko and Atienza tandem, together with Aquino's uniformly distributed support, produced momentum effects that static, name-recognition polling does not capture.

EDAPowerBIResearch
Open
Video

Personal

Valorant Patch Notes RAG Bot

A retrieval-augmented chatbot that answers natural-language questions about six years of VALORANT patch notes — 148 official releases spanning 2020 to 2026 — grounded strictly in source documents and citing the specific patch behind every claim. Built with Flask, ChromaDB and Mistral AI, it combines metadata-filtered lookup for questions naming a patch version with semantic search for everything else, since a version number is nearly invisible inside a document of several thousand characters. The harder problem was honesty: an early version confidently invented a Jett cooldown change that appears nowhere in the corpus, traced to fabricated examples in its own system prompt, which led to rewritten grounding rules, visible source citations, and a 26-case eval suite validated against deliberately wrong output. Rounded out with streamed responses, conversational follow-up handling, a scraper rebuilt to strip duplicated and misdated boilerplate, and an interface styled on Riot's published design tokens.

BeautifulSoupChromaDBFlaskGunicornMistral AINumPyPython
Open
Chris's Projects

These are all the applications I've built :)

Christian Sabarre

Chris's Projects | Christian Sabarre