Projects

Explore my latest work, experiments, and open source contributions.

OmniPlay
Building

OmniPlay

Local video-localisation pipeline that dubs dialogue and translates on-screen text in one pass. Demucs separates stems, faster-whisper transcribes with pyannote diarization, each speaker is cloned with Chatterbox or XTTS, and a second track detects, OCRs, translates and inpaints text drawn in the frame before an ffmpeg mux; a shared-context file keeps names consistent across both halves.

#AI
#Speech
#Voice Cloning
#Local-first
PlotPatrol - Unauthorized Construction Monitoring
Completed

PlotPatrol - Unauthorized Construction Monitoring

Winning Smart India Hackathon 2024 entry for problem statement 1618: detecting construction that departs from its approved plan, without sending an inspector. The submitted system pairs a transmitter and receiver drone that map a building interior from WiFi and RF signal strength without entering it, LiDAR point clouds, thermal passes for cracks and deformation, and a 360-degree street-view car, then builds a 3D model and diffs it against the CAD registry plan to flag the actual-minus-approved delta. The prototype in the repo covers the satellite and comparison half: a Sentinel-2 median composite, a ResNet50 and SSIM difference mapper, drone survey path planning and an RF signal-strength heat map.

#Geospatial
#Computer Vision
#Drones
#GovTech
VendIQ
Completed

VendIQ

Real-time sales-call assistant that listens to a live call and surfaces a recommendation the rep can accept or ignore. Browser transcription via the Web Speech API streams to two Go WebSocket servers, a Flask service scores sentiment as the conversation moves, and Gemini generates a suggestion from the most recent completed sentence of the transcript, the whole path designed to an 800ms speech-to-screen budget. A React portal shows the rep the live transcript, a lead and credit score panel and the suggestion queue; a native Java Android app handles call detection on the device.

#AI
#Sales
#Voice
#Sentiment Analysis
Ph.D. Monitoring System
Live

Ph.D. Monitoring System

Digitises the Ph.D. lifecycle at Thapar Institute: a Laravel 11 API covering supervisor allocation, IRB constitution, synopsis and thesis submission, patents and publications, with JSON-defined dynamic forms and multi-role approval chains behind a React admin client. The chain is data rather than code, so a regulation change is a row edit instead of a deploy. Google OAuth for sign-in, Cloudflare Turnstile on login and password reset, Excel export, self-hosted via Docker Compose, in production at phdportal.thapar.edu. A NestJS rewrite was scaffolded in early 2025 and shelved the same day — sizing it against 53 models, 202 routes and a 25,000-line SPA made it clear the Laravel codebase was cheaper to extend than to replace.

#Enterprise
#Portal
#Education
#Full Stack
Smart Savaari
Archived

Smart Savaari

Delhi public-transport journey planner. A Flutter app (Firebase auth, Google Maps) sits over a Node/Express service that ingests the DTC/DIMTS bus and DMRC metro GTFS feeds into SQLite. Most journeys are answered by one self-join over stop-times — which vehicles pass your origin and later pass your destination — without materialising a graph at all; a separate Dijkstra endpoint covers transfers, with Redis caching the corridors that get asked for repeatedly.

#Mobility
#Startup
#Real-time
#Transit
Grounded Retrieval Engine for an AI-Native LMS
Prototype

Grounded Retrieval Engine for an AI-Native LMS

A v1.0 architecture document, not a deployed system. It specifies a citation-first retrieval service in which every answer resolves to an exact document, page and paragraph, and tenant isolation is enforced at the index layer off a signed JWT claim rather than in application code — with an adversarial CI test asserting one school's queries never return another's chunks, so the security claim is a test rather than a paragraph. It covers ingest for books, class notes, handwriting, slides, images and lecture audio and video; hybrid search with reranking; provenance; knowledge tracing; and the latency budget, staged across four phases with a prior-art review and an implementation roadmap. Phase 0 is born-digital PDFs, one tenant and dense-only pgvector; nothing is claimed to work before the phase that builds it.

#Architecture
#Retrieval
#Multimodal
Saturnalia Platform
Live

Saturnalia Platform

Express/TypeScript API on the Bun runtime for the Saturnalia festival: user and team registration, event and merch-store orders, Easebuzz payments with idempotent webhook reconciliation and a polling path that rescues a closed tab, Cloudflare R2 uploads, and templated transactional mail written into an outbox collection that a separate worker — Sat Mailer — drains. A single payment can settle a registration, six days of accommodation, six days of food and a merch cart for a team who are not the payer, so the transaction document carries a plan and settlement is the act of executing it. Eight LRU caches tiered by volatility sit under a request-scoped cache on top. The repo carries two deployment stories that disagree — Kubernetes manifests for a three-replica workload behind an nginx ingress, and a GitHub Action that rebuilds a docker-compose stack on a single VM. It replaced an earlier Go/Gin draft of the same service, where the sixteen-collection schema was designed as a text file before any handler was written.

#Platform
#Payments
#Kubernetes
#Scale
#Go
#Backend
Saturnalia Admin Console
Live

Saturnalia Admin Console

React 19 + Vite back office for running the Saturnalia festival, sitting over the Firebase-backed platform. Twenty routes cover events and their registrations, individual and team entries, transactions and bills, coupons, banners, the merch store, accommodation, campus-ambassador applications, non-host users and account-deletion requests, plus a bulk email sender and a CSV export built in the browser behind a field picker. Venues are placed on an embedded Google Map through @react-google-maps/api. Client-side route gating over Firebase auth reads its role off the signed-in user's Firestore document, so the guards are a usability layer and the real enforcement lives in Firestore rules and the backend.

#Admin Dashboard
#Operations
#Festival
#Frontend
HackTU 6.0
Completed

HackTU 6.0

Thapar’s flagship hackathon, run in collaboration with Major League Hacking. Led the organizing effort across registration, judging, sponsorship and event operations.

#Hackathon
#MLH
#Leadership
#Operations
Mirage — AR Treasure Hunt
Completed

Mirage — AR Treasure Hunt

Campus-wide geolocated AR treasure hunt, hand-rolled in PHP with its own autoloader and database layer. index.php sniffs the user agent and sends phones to an AR.js / A-Frame camera hunt where PHP injects each team's allotted GPS coordinates into the scene, while desktops get the organizer dashboard. Behind it sits an admin console for question allotment, teams, locations and the leaderboard, plus a pin-drop tool for authoring the map.

#AR
#Events
#Gamification
CCS Auth — Single Sign-On
Live

CCS Auth — Single Sign-On

OAuth2-style single sign-on for society portals. Google is the only identity source, over a hand-rolled authorization-code exchange rather than a library — build the consent URL, take the code back, exchange it, fetch the profile — with per-client registration against whitelisted callback URLs, per-client JWT issuance and crypto-js-encrypted payloads, served by an Express/MongoDB backend with EJS consent pages and a React admin console. An authentication-log collection is modelled and not yet written to.

#Authentication
#OAuth2
#Security
#Platform
Raptus - 3D Escape-Room CTF
Completed

Raptus - 3D Escape-Room CTF

Capture-the-flag competition staged as a set of 3D escape rooms in the browser. React Three Fiber renders the rooms over Three.js, a MERN backend holds the challenge state, and Socket.IO drives a live leaderboard. There is no proctoring anywhere in the system by design — no webcam, no tab-switch detection — because each team is served its own subset of challenges with the hint object randomly placed, which makes a shared answer worth nothing. Run online over Discord across two days with cryptic multi-stage challenges.

#Game
#CTF
#Real-time
#WebGL
PhotoMaker — Passport Photos
Live

PhotoMaker — Passport Photos

Generates print-ready passport photo sheets in the browser. @imgly/background-removal cuts the subject out client-side via WASM, a layout engine tiles the crops to standard sheet presets, and jsPDF writes the sheet — the image never leaves the device.

#Tool
#Client-side
#Image Processing
EasyLocate — Lost & Found
Completed

EasyLocate — Lost & Found

Campus lost-and-found written for a DBMS course against raw SQL with the mysql2 driver and no ORM: JWT auth, image uploads, a claim-and-approval flow across eight tables, reward points and notifications, plus a matching service that ranks lost-versus-found candidates by TF-IDF text similarity and geographic distance.

#DBMS
#Raw SQL
#Full Stack
ZoneX Layout Builder
Prototype

ZoneX Layout Builder

Figma-style top-down venue editor for feeding crowd-simulation engines. A Next.js 16 / React 19 app with a zustand store draws 21 element kinds — boundaries and fences, main and side stages, general and VIP zones, walkways, stairs, seating blocks, static and breakable barricades, entrance/exit/emergency/turnstile gates, restrooms, water stations and food stalls — plus a pen tool for freehand boundaries and walkways. Elements carry configurable metadata and support drag, resize handles and rotation, and layouts export as JSON for the simulator or SVG for documentation. Two things are modelled rather than usable: visibility and locking exist on five layers in the store but the panel that would drive them is not mounted, and the renderers handle bezier segments while the pen only collects bare points, so every curve is a polyline until handle editing exists.

#Editor
#Canvas
#Simulation
#Design Tool
CCS Merch Store
Live

CCS Merch Store

Merch storefront and fulfilment portal for the society: a React/Vite catalogue and cart over a Django REST backend on PostgreSQL, with separate products, orders, discounts and dashboard apps and QR codes generated for order pickup. The contribution here was the payments path and the deploy pipeline, landed in a single day of work: a Cashfree integration with server-side order creation and a pull-based webhook that re-fetches the order rather than trusting the callback, plus a Jenkins build. That gateway carried the August 2024 drop; the team moved the store onto another one in December, which is what runs today.

#E-commerce
#Payments
Syrinx
Completed

Syrinx

Browser game portal for the society, whose interesting artefact is the loader: a hand-written React wrapper around the Godot HTML5 engine with its own progress UI, plus the Netlify and Vite rewrites that inject the cross-origin isolation headers a WebAssembly build needs, streaming a 24 MB level pack from a DigitalOcean Spaces CDN. The game itself was somebody else's work. One level shipped, around a shell of cookie-based auth, level select, a leaderboard, a pause menu and a rulebook — and in the deployed build the login and leaderboard calls still point at localhost, so what the Netlify site really demonstrates is the loader.

#Game
#WebAssembly
#Frontend
Codeboard
Completed

Codeboard

Competitive-programming leaderboard for the society. A Celery beat schedule fans out one scrape task per member's LeetCode profile every two minutes and chains the results into a leaderboard rebuild; Django REST + PostgreSQL on the back, a Create React App client on the front, Redis as the broker. Compose declares Redis and the web service but no worker or beat container, so the schedule that drives the whole thing is started by hand beside it.

#Leaderboard
#Scraping
#Automation
MediLink
Completed

MediLink

Doctor-appointment site with a patient front end, an admin dashboard and a separate chatbot service. The MERN core handles users, appointments and messages with JWT auth and Cloudinary uploads; the chatbot is a Flask app that tokenises input with NLTK and maps symptoms to conditions and treatments from CSV tables, writing bookings back to CSV.

#Healthcare
#MERN
#NLP
SportJacks Storefront
Completed

SportJacks Storefront

Sports e-commerce front end on the Next.js App Router, calling ten separate services through a gateway: Redux Toolkit holding cart items and totals for render, NextAuth as an identity broker over credentials and Google plus a phone-and-OTP path handled by a utility service, a server-side wishlist, Cashfree checkout, zod-validated forms and pincode-based delivery lookup.

#E-commerce
#Microservices
SafetySync — Police Vitals Monitoring
Completed

SafetySync — Police Vitals Monitoring

On-duty monitoring for police personnel, carried from the Rajasthan Police Hackathon's screening round through to the winning final entry. Round 1 was seven static pages over the Google Maps JavaScript API — a hundred severity-tagged incident points across Jaipur, a click-to-draw geofence, alerts, force availability and four stress bands — pitched to a panel on placeholder data. The final build put sensors behind all of it: a helmet sketch reads heart rate from a MAX30105 and free-fall from an MPU6050 onto its own serial monitor and a short-range nRF24 link, while a separate board running a separate sketch sends the one thing that has to travel far — a one-bit panic flag — over LoRa at 433 MHz. A deliberately dumb Node bridge reads the receiver's serial port and rebroadcasts that alert over WebSockets to an Express/MongoDB dashboard, and a notebook k-means-clusters simulated personnel coordinates into five patrol zones.

#IoT
#Public Safety
#ML
#Hackathon
#Concept
CCS Examination Portal
Completed

CCS Examination Portal

Online examination platform built for society recruitment, where the interesting requirement is not delivering questions but stopping people cheating. Tab-switch detection with a three-strike audit trail — detected, not prevented — a webcam still captured every sixty seconds, and a per-candidate randomised draw from a bank of hundreds of questions, on a React and Express stack over MongoDB. The substantial piece written for this cycle is not in that repo at all: face_rec, a separate Django REST service that verifies a candidate's face against their registered photo, which held 936 encodings for the sitting it served. The portal ran for close to 2000 candidates across the recruitment.

#Proctoring
#Assessment
#Anti-cheat
FROSH Ticketing System
Completed

FROSH Ticketing System

Event ticketing and attendee management for FROSH, built by a team of five on Django and PostgreSQL, with Gunicorn on gevent workers and static files served by WhiteNoise from inside the Python process rather than a separate web server. Akarsh built the gate scanner: an Instascan multi-camera reader with a separate ZXing path for iOS, plus the guard that stopped a pass being redeemed twice. The release itself was contended: 500 tickets against the roughly 3,000 students registered for FROSH 2K23, all arriving in the same second, and the allocation is an optimistic in-process counter rather than anything the database arbitrates.

#Ticketing
#Concurrency
#Events
Water Turret Alarm Clock
Prototype

Water Turret Alarm Clock

Hardware alarm clock that is meant to aim and fire water at whoever will not get up; the vision front end is what exists so far. An ESP32-CAM (AI-Thinker) sketch drives a GC2145 sensor that has no hardware JPEG encoder, so frames are captured raw and encoded in software — the format preference is JPEG, then YUV422, then RGB565, picking YUV422 where possible to skip a colour-space conversion. Frames stream over USB serial at 1.5 Mbaud behind an 'FRM0' + uint32-length framing protocol, with single-character commands for resolution, JPEG quality and flash duty (capped at 25% so the 5V rail does not brown out). A Tk desktop viewer decodes the stream live with an FPS/throughput readout, alongside a headless script that smoke-tests the link by counting intact frames. A single-frame grabber sits beside them and has fallen behind the firmware's protocol, so it no longer runs as written.

#Embedded
#Computer Vision
#Hardware
#Serial
Paper Checker
Building

Paper Checker

Role-based school app for grading handwritten exam papers with Gemini. Teachers upload a question paper PDF, an optional answer key and scanned answer sheets; the evaluation comes back question-wise and is stored so teachers, school admins and students can revisit it. Four roles (super admin, school admin, teacher, student) sit behind cookie-based JWT auth, with Prisma over SQLite and a Docker/Compose deployment.

#LLM
#Education
#Document Processing
Saturnalia Band QR System
Completed

Saturnalia Band QR System

Generator for the wristband QR codes used at Saturnalia 2025. A Pillow + qrcode script mints 600 random alphanumeric passes — 120 SAT25I 'infinite' multi-day bands and 480 SAT25S single-use ones — each rendered at high error correction with the festival logo composited into the centre and, for the exclusive tier, an 'EXCLUSIVE' label fitted into the quiet zone on all four sides with rotated text for the vertical margins. Every code is written to a JSON registry carrying its tier, a redemption counter and per-day (14/15/16 Nov) scan flags for gate staff.

#Automation
#Festival
#Access Control
Sat Mailer
Live

Sat Mailer

Unattended mail worker for the festival stack. Polls a Firestore queue every few seconds with firebase-admin, sends each pending document through Nodemailer, and retries failures with capped exponential backoff; structured pino logs go to stdout and a file, and it ships as a Docker service.

#Automation
#Email
Runnable Visual Editor
Prototype

Runnable Visual Editor

Meant to let you paste a React component, preview it live in a sandboxed iframe compiled by Babel standalone, then click any element to edit its text, colour, size and weight, with edits persisted through a small Express store (POST /component, GET /preview/:id, PUT /component/:id). The editing half is written; the compile path is not. It appends a second default export to whatever you paste, Babel rejects it, and the effect that writes the iframe returns early — so the preview never paints and nothing downstream of it is exercisable.

#Developer Tools
#Live Editing
Festival RAG Chatbot
Prototype

Festival RAG Chatbot

Retrieval-augmented chatbot for festival FAQs: a FastAPI service with ingest and query endpoints that chunks submitted text with LangChain, embeds it locally with all-MiniLM-L6-v2 sentence-transformers into a persistent Chroma store, and was meant to answer through Groq. It never ran: the Groq client is constructed and never imported, the entrypoint guard is misspelled so uvicorn never fires, and the key is read under a different name than the one in the env file. The corpus it was collected for is a single 95 MB PDF, and nothing in the dependency list can read a PDF — the festival shipped without a chatbot.

#RAG
#LLM
#Prototype
Face Gallery
Prototype

Face Gallery

Search a photo archive by face, tried three ways. The version that got closest to usable is a Flask service that extracts a 128-value dlib encoding per detected face with face_recognition and stores it against the image path in MongoDB, so the expensive work happens once at ingest and a query is a scan over embeddings. Beside it sit a FastAPI/DeepFace service — whose motor insert is a coroutine that is never awaited, so its uploads quietly do not persist, and which stores image bytes rather than embeddings — and a Create React App portal doing detection entirely in the browser with face-api.js.

#Computer Vision
#Face Recognition
Music Recommendation Engine
Completed

Music Recommendation Engine

Four recommenders implemented against the Million Song Dataset Challenge triplets — 386,213 songs and 1,450,933 visible triplets — with a mean-average-precision harness: a popularity baseline, item-item collaborative filtering, an SVD latent-factor model via Surprise, and scikit-learn KNN. Only the popularity baseline runs end to end from what is on disk; the other three stop short of a recorded number, and because each scores at a different cutoff the four would not have been comparable anyway.

#Machine Learning
#Recommender Systems
LeafLine — Green Credit Marketplace
Completed

LeafLine — Green Credit Marketplace

Winning SAP Hackfest 2024 system for green credits, built on one rule: every figure on a listing had to be something a machine could re-derive — coordinates into a live pollution reading, an image into a pixel count. A React/MUI console draws the land parcel on a Google Maps satellite layer, computes its area, prices a credit from live air-quality readings, lists and buys credits and charts activity, with a Node WebRTC/ffmpeg ingest and a Flask relay carrying geotagged phone video as live field evidence rather than an uploaded file. Behind it sits an Express/Mongoose marketplace for geo-indexed parcels, listings and certificate-stamped trades, plus two Flask services that know nothing about orders: one prices a credit from OpenWeatherMap air-quality readings, the other reports green cover by HSV thresholding the parcel's satellite still.

#Sustainability
#Geospatial
#Computer Vision
#Marketplace
Certificate Generator
Completed

Certificate Generator

Bulk certificate pipeline: reads a participant spreadsheet, stamps names onto a PDF template with embedded Gotham fonts via pdf-lib, attaches a QR carrying a self-describing `id|name|reason|date` payload, and mails each one out. Runs clustered across CPUs behind a rate limiter. An encrypted-link verification store is modelled on the certificate document and was never wired up — the batch that shipped never wrote a record, and the decryption step in both verification routes is commented out.

#PDF
#Automation
#Events
Cricket Analytics Challenge
Completed

Cricket Analytics Challenge

Three-round data-science competition entry worked in pandas, with the cleaning and scoring automated and the final selection still assembled by hand. Round one cleans the supplied batsman, bowler and match-level workbooks: deduplicating matches by ingestion timestamp, back-filling the missing win-margin field by reasoning from toss winner, toss decision and result, coercing word-form wicket counts with word2number, and validating the result with a hand-written iterrows rule engine that stops at the first row it cannot repair — three pandera schemas are written out in full alongside it as documentation-as-code, but the row engine is what fires. Then seaborn plots. Round two builds a playing XI — batsmen scored on a recency-weighted blend of strike rate, boundaries and a standard-deviation consistency term, bowlers scored separately, and all-rounders taken from the merge of both with combined bat and ball scores.

#Data Cleaning
#Sports Analytics
#Feature Engineering
QisPratapgarh
Completed

QisPratapgarh

Go web app for tracking voter queues at Pratapgarh polling stations. Booth admins sign in and post a live traffic count for their booth; a public page tables the latest count per station. MongoDB store, gorilla/mux with session cookies, and a public page that is an HTML shell rendered client-side from a JSON endpoint, seeded from a 566-station JSON file and shipped as a Docker image.

#Government
#Real-time
#Civic Tech
SRCC Society Website
Prototype

SRCC Society Website

Society website with dual-provider sign-in — Google OAuth for everyone and Azure MSAL for institutional accounts, two doors onto one JWT and no password anywhere — over an Express/Mongoose backend that is honestly a scaffold: the verify and admin guards are written and commented out, so every event endpoint still answers unauthenticated. The Vite React client is a single sign-up route using jotai for state.

#Society
#Authentication
Helix Registration & Mail Backend
Archived

Helix Registration & Mail Backend

The backend that ran registration, the check-in desk and every mail-out for a season of society events — HackTU, Helix, Vortex and the competitive-programming contests. Seven Mongoose models cover team and per-member registration, idea submission with link validation, shortlisting and waitlisting, live QR check-in and lazy table allocation assigned only when a team's first member actually arrives, with a Flutter scanner on the volunteers' phones. The same service carries the comms calendar: fifteen hand-written Outlook-safe HTML templates, spreadsheet import and export, and cohort sends throttled to roughly one invocation every two seconds because the whole thing runs off one institutional Gmail account with no sending provider behind it. The sleeps pace the calls rather than the deliveries — `sendMail` is never actually awaited, so a rejected send surfaces only as a log line.

#Events
#Registration
#Email
#Automation
Thapar CarPool
Completed

Thapar CarPool

Ride-sharing for students travelling between the Patiala campus and nearby cities, shipped as a Flutter client against api.thapargo.tech. The schema splits the intent in two — a plain city hop, and a ride recorded against a train or flight number so people arriving on the same service could find each other rather than merely the same city, though that read side never landed as an HTTP route — and the API that serves it is a hand-rolled PHP MVC service written for shared hosting with no Composer and no shell: its own autoloader, router, sanitising and logging middleware, and a PDO layer where every column declares a type and a failed insert returns the whole list of problems instead of throwing on the first. A Create React App web front end covering the same six screens settled the information architecture and the two booking widgets, then was archived without ever calling the API.

#Mobile
#Carpooling
#Transport
#Campus
froshtiet.com — FROSH 2K23 Main Site
Archived

froshtiet.com — FROSH 2K23 Main Site

The site that actually flew the froshtiet.com flag for FROSH 2K23 at Thapar, and the front door to the event-ticketing system for a batch of roughly 3,000 incoming students. Twenty hand-written HTML templates behind a thin PHP entry point — core team, faculty, sponsors, campus facilities, food joints, a Patiala city guide, a fresher's starter kit, video and gallery pages — over a full-bleed autoplaying video hero with a typewriter tagline and a slide-out menu. The team pages are generated: three throwaway Python scripts checked in among the stylesheets turn sixty photo submissions with unusable filenames into card markup. Roughly 124 MB of images, video and GIF assets, with a loading overlay to cover it, a Mapbox GL campus map, and a Register button that hands off to events.froshtiet.com.

#Events
#Landing Page
#Society
Mudra Society Website
Archived

Mudra Society Website

Website for the Mudra dance society — home, team, alumni, events and six gallery pages, an index of five tiles over five sub-galleries behind a lightbox. The landing page is one line of PHP pulling its content in through an Apache virtual() include, which renders before paint and survives JavaScript being off; every inner page then does the same job with a jQuery .load() into an empty header div, which is the worse half of the same idea. A purchased Bootstrap theme carries most of the styling, with two hand-written stylesheets and local Bodoni and display fonts on top.

#Society
#Gallery
FROSH 2K23 Website
Completed

FROSH 2K23 Website

The first pass at a web presence for FROSH, the freshers'-welcome group at Thapar — an April 2023 one-pager on a personal repo, superseded in July by the froshtiet.com site that actually carried the event. The hero stacks moon/cloud/mountain layers and translates each at its own speed on scroll for a parallax effect, and a Bing Maps control drops pushpins on the main auditorium, academic block, central library and hostels K and Q alongside about and gallery sections.

#Events
#Landing Page
#Maps
FinLearn
Archived

FinLearn

Virtual stock-trading game teaching teenagers market basics: real symbol data, fake wallet. Rather than own the price, the PHP/MySQL web app sends symbol lookup to Alpha Vantage's free tier and lets TradingView embeds draw every chart, then runs registration with credential verification, buy/search flows, holdings seeded from a 10,000 starting balance, expense tracking and learning pages on top. A Java Android client was started and never got past the generated scaffold.

#FinTech
#Education
#Gamification
Industrial Emission Monitor — HackTU 4.0
Prototype

Industrial Emission Monitor — HackTU 4.0

Seven-probe industrial effluent monitor built for HackTU 4.0. One Arduino sketch drives an MQ135 (air quality — labelled CO2 in the demo, which an air-quality resistor is not), an MQ7 (CO) with its own RS/R0 curve fit, a DHT22, a GP2Y1010AU0F optical dust sensor timed by hand for PM2.5, a Gravity TDS probe with temperature compensation, a DS18B20 water probe on OneWire, and a 10-sample median-filtered pH electrode, each with its own read routine, alongside an ESP8266 uploader targeting a Firebase realtime database named industry-monitor. None of it ever ran: loop() is empty, so every read function and the uploader are defined and none of them are called, and the sketch as committed would not compile. SOx and NOx are derived from weighted CO/CO2 ratios rather than measured, and BOD is written back as "No Sensor Availaible" — an honest gap left in the demo. A companion Android shell (com.hacktu.emission) was scaffolded but never built out.

#Hackathon
#Sensors
#Environmental Monitoring
#Embedded
Storiyan EHMRS
Archived

Storiyan EHMRS

PHP front-controller web app: index.php dispatches on a ?type= query parameter and stitches HTML partials with Apache virtual() includes, covering login, a two-step onboarding form, email verification with success and failure states, forgot-password, a dashboard and 403/404 pages, with HTTP-referrer checks guarding the verification routes.

#Authentication
#Onboarding
BLE Mesh Chat
Archived

BLE Mesh Chat

An offline messenger relaying chats peer-to-peer over Bluetooth LE with no internet and no server. It got a working mesh: a 7-byte frame packed into the manufacturer-data field carrying two magic bytes, a four-byte message id and a TTL, leaving 13 bytes of text; duplicate suppression over a bounded 500-entry id set so a flood terminates instead of ringing forever; and a TTL relay that rewrites the hop byte of a received frame and re-broadcasts it. Flutter runs both roles at once — flutter_reactive_ble scanning against flutter_ble_peripheral advertising — with a Python bleak scanner used off-device to confirm frames were really going out. Abandoned at reassembly: chunked messages send but every chunk carries the same id, so the receiver's own dedupe discards everything after the first.

#Bluetooth
#Mesh Networking
#Abandoned
LeetCode Tracker
Completed

LeetCode Tracker

Manifest V3 Chrome extension that watches leetcode.com for accepted submissions, tallies them per day in chrome.storage, and renders today/total counts plus a seven-day bar chart in the popup. The chart loads Chart.js from a CDN, which Manifest V3's default extension CSP is entitled to refuse — vendoring it is the outstanding fix.

#Extension
#Productivity
YouTube Music Timer
Completed

YouTube Music Timer

Manifest V3 Chrome extension that measures listening time on music.youtube.com. A content script polls the page for playback state and heartbeats it out; accumulation happens in the service worker rather than the content script, which is what makes the total survive tab closes and SPA navigation. The popup shows the running total.

#Extension
#Productivity
TradingBot
Completed

TradingBot

Java CLI that opens a WebSocket to the WazirX API, subscribes to the BTC/INR market stream, and prepares a buy or sell order payload on every tick, on whichever side of a trigger price you typed in the last price landed — there is no position state, no cooldown and no notion of an order already being open. Payloads are printed rather than submitted, so it never places a real order.

#Trading
#WebSockets
#CLI
Hacklipse — Sales IQ
Archived

Hacklipse — Sales IQ

Hackathon prototype of a live sales-call assistant that later became VendIQ: a static jQuery/Materialize marketing shell plus a React screen that streams Web Speech API transcription and calls Gemini to summarise the customer for the rep. The recent-calls list and sentiment readouts are hardcoded samples.

#AI
#Prototype
#Sales
JPMorgan Software Engineering Simulation
Completed

JPMorgan Software Engineering Simulation

A Forage virtual-experience exercise, not client work: JPMorgan publishes starter repos with the interesting parts stubbed out and you fill them in. All three tasks completed against a provided codebase — the market simulator, the React scaffold, the Perspective wiring and the test harness all arrive intact. What the tasks add is a price-feed client that derives mid prices and their ratio from the supplied server, its unit tests, the switch from a single fetch to a streaming interval, and a rebuilt Perspective schema that computes the bid-ask ratio with fixed bounds and emits an alert only on breakout.

#Fintech
#Data Visualization
CarbonX — Carbon Credit Token Marketplace
Prototype

CarbonX — Carbon Credit Token Marketplace

A carbon-credit token exchange taken as far as a full design pass and a working token layer, and no further. The front end draws most of the screens the product would need — dashboard, token creation, transactions, profile and a Leaflet emissions map — over hard-coded sample data with nothing behind it, which was the point: find out whether the idea survived contact with its own UI before writing anything real. The marketplace is the one screen that never got cut over — it still lists shoes at $19.99 from the template it came out of, which for a marketplace product is the tell. Beside it sits a Next.js Solana dApp carrying the same CarbonX branding, which mints an SPL token, its associated account and its Metaplex metadata in a single signature, publishing the metadata JSON and logo to Arweave through Bundlr first so a token can never exist half-described. What the design pass exposed was that everything left — who certifies a removal, what settlement means between two parties under different regulators — was not a front-end problem, and the idea came back later with a real backend as the Green Credit work.

#Web3
#Sustainability
#Prototype
#Solana
Multi-Speaker Sync
Archived

Multi-Speaker Sync

Three stabs at turning a room of phones into one speaker array. The Flutter attempt reaches for just_audio behind an audio_session that was never finished being wired. The native Android one starts playback when Bluetooth SCO audio connects — the one idea worth keeping — but opens an AudioTrack that nothing ever writes PCM into, so it runs silent. The third is a mic-to-speaker loopback in Compose. None got past a single device, and none of the three ever exchanges a timestamp with a peer, which is the actual problem.

#Audio
#Synchronization
#Experiment
CCS Project Management System
Archived

CCS Project Management System

Project-management platform for the Creative Computing Society: GitHub-linked registration, a member directory, a project list you can apply to contribute to, a per-user dashboard of contributions and assigned tasks, a leaderboard, Chart.js panels of commit activity per project, and chat over Ratchet WebSockets. The per-project channels are a client-side filter rather than server isolation: the socket server broadcasts every frame to every client and the browser decides where it lands, so messages for a project you are not in still reach your machine and simply are not rendered.

#Project Management
#WebSockets
#GitHub API
EcoSavvy AI
Completed

EcoSavvy AI

HackOwasp entry around e-waste handling. An Express/MySQL app serves the login, register, dashboard and statistics pages and exposes auth, dashboard and data routes, while a detached python/ folder holds scikit-learn models pickled into the repo: a LinearRegression over weight, battery, screen, RAM and storage for device composition, an SVR for siting collection points, and a random forest ranking state-level volume. All three are trained on data the team generated rather than collected — one generator assigns composition as a uniform random number — and nothing in the Node app loads a pickle or shells out to Python, so no endpoint runs a model.

#Hackathon
#Sustainability
#Machine Learning
LifeStream AI
Archived

LifeStream AI

PHP/MySQL blood-bank and emergency-response portal. Endpoints cover donor registration and lookup, blood inventory, distribution and logistics, ambulance location, and duty assignment for staff, on a seven-table schema checked in as life_stream_ai.sql. The one model that runs at request time is a k-means ambulance-placement script the ambulance endpoint shells out to, clustering a thousand generated accident coordinates into ten proposed parking positions — so it demonstrates the method rather than recommending anything.

#Healthcare
#Logistics
Attendance Recorder (Android)
Archived

Attendance Recorder (Android)

Unfinished Android app for tracking class attendance — a Java/viewBinding project over a hand-written SQLiteOpenHelper with four tables, navigating between six activities by explicit intent while the generated nav graph sits untouched. Screens exist for user details, adding subjects and entering a recurring or one-off timetable; the method the app is named for, mark_present(), is declared with an empty body. The repo describes itself as "app under progress" and stopped there.

#Mobile
#Abandoned
Smart Punjab — Toxic Craft Hackathon
Completed

Smart Punjab — Toxic Craft Hackathon

Civic-issue reporting platform for Patiala built for the Toxic Craft hackathon: residents register, log complaints across dedicated screens for sewage, water, roads, gas, electrical and garbage plus an emergency-services path, and track them, while authorities work them from a dashboard. A single index.php dispatches on a ?type= parameter and stitches forty-odd HTML partials with Apache virtual() includes — the thing that let four people edit the site at once on a hackathon Saturday — over a MySQL schema shipped as smart_patiala.sql and PHPMailer for verification mail.

#Hackathon
#Civic Tech
#Smart City
Spotify to YouTube Converter
Archived

Spotify to YouTube Converter

Takes a Spotify playlist URL, pulls its track list from the Spotify Web API in the browser, then searches YouTube for each track and builds a playlist. The architectural idea was a shared MySQL cache — a track's video id is the same for everyone, and a YouTube search costs a hundred quota units, so nobody should pay to look up the same song twice. It never worked: the writer and the reader disagree on the parameter name, the column and even the database, so the lookup can never hit and every track pays for a full search.

#Music
#API
#Early Work
E-Library
Archived

E-Library

Early PHP web app built around a hand-rolled account system: registration, login and an email-verification flow whose token is an AES-GCM encrypted username/timestamp pair, decrypted in verify.php and rejected after ten minutes. Only the auth shell and a stub dashboard were finished.

#Authentication
#Early Work