# Projects

Principal data engineer. Selected projects in data warehousing, provenance-preserving tools, private messaging and an operable browser portfolio.

Canonical page: https://www.nauman.cc/projects/

## F1 Analytics: Post-Race Engineering Analysis Platform

Data Engineering &amp; Analytics

Python • PostgreSQL • FastF1 • pandas • SQLAlchemy

Nov 2024 – Present

What actually shaped the race, and which laps support that conclusion? F1 Analytics is a post-race engineering analysis platform being built around those questions. Its Race Debrief and Season Index are designed to bring pace, teammate comparison, tyre degradation and race execution into one navigable view, with the underlying evidence available to inspect. I have engineered the foundation around FastF1 timing, telemetry, weather, track status and race-control data, a season-partitioned PostgreSQL model, transactional loading and resumable backfills. The evidence layer preserves lap validity, purpose, physical-ahead traffic and source lineage, while separate eligibility rules determine what each analysis can use. The next stages connect that foundation to matched comparisons, effect estimates, uncertainty and the dashboard itself. The goal is a briefing that makes a race easier to understand and every analytical conclusion easier to defend.

- [Project page](https://www.nauman.cc/projects/f1-analytics/)
- [Website or repository](https://www.nauman.cc/projects/f1-analytics/)

## Covert Messenger: Concealed Private Messaging Platform

Systems Architecture &amp; Security

JavaScript • PHP 8 • MySQL 8 • HMAC-SHA256

Mar 2026 – Present

A private two-person chat concealed behind a complete Formula 1 dashboard and reached only through an entry nothing on the page shows. I engineered an ordered change feed in which every send, edit, deletion and reaction commits under one database lock and writes an event per changed message, so both clients converge by cursor without missing or reordering a change, verified under 40 concurrent sends against real MySQL. Retried sends return the stored message instead of a duplicate, 1 MiB chunked uploads are checked against a server-side manifest, and pending files stay visible only to their uploader. A stateless HMAC-SHA256 token bound to the device, a PBKDF2-hashed entry lockout and a session that leaves no chat data in the browser once the tab closes complete the design, verified by 104 PHP and 89 Chromium gate checks.

- [Project page](https://www.nauman.cc/projects/covert-messenger/)
- [Website or repository](https://github.com/nshah1d/covert-messenger)

## Curated Video Feed: Dual-Layer Vertical Video Platform

Media Delivery &amp; Reliability Engineering

JavaScript • PHP 8 • MySQL • YouTube Data API v3

Apr 2026 – Present

A full-screen vertical video feed in the style of TikTok and YouTube Shorts, built from 152 hand-picked YouTube channels: a public Formula 1 face and a second catalogue of twelve categories behind a hidden entry. I engineered a YouTube provider that reads each channel's newest 50 uploads and lets only public, embeddable, unrestricted and finished videos reach the feed, with a per-channel file cache that serves the last good answer for up to seven days, pauses the API for an hour after a quota error and falls back to the channel's Atom feed, so the feed keeps playing through YouTube outages. A feed engine picks channels under a cooldown and never repeats a video within a round, one YouTube player runs at a time and loops by itself, and refused videos are skipped automatically, verified by 70 PHP gate checks and by 61 Chromium and 11 WebKit checks playing real YouTube videos.

- [Project page](https://www.nauman.cc/projects/curated-video-feed/)
- [Website or repository](https://github.com/nshah1d/curated-video-feed)

## Discord History Exporter: Exact-Range Message Export Extension

Data Extraction &amp; Reliability Engineering

JavaScript • Chromium Manifest V3 • Discord API v9

Aug 2026 – Present

A browser extension that exports a Discord channel's history, direct messages included, over a range chosen to the second, to JSON, CSV or Markdown, using the logged-in account's own session with nothing to set up. I engineered range bounds as half-open snowflake intervals that cover both chosen seconds in full and tile exactly, and a history walk that pages backwards 100 messages at a time, stops at once on a refusal, retries transient failures after 1, 2, 4 and 8 seconds, waits out Discord's rate limits and never saves a truncated file under the full range's name. JSON keeps Discord's own message objects unchanged, CSV follows RFC 4180 with a spreadsheet formula guard, and Markdown renders a readable transcript with embed text. It asks the browser for no permissions beyond discord.com and holds the session token in memory for one export only, verified by 51 unit tests and a 44-check Chromium gate over a simulated Discord.

- [Project page](https://www.nauman.cc/projects/discord-history-exporter/)
- [Website or repository](https://github.com/nshah1d/discord-history-exporter)

## Portfolio Operating System: Local-First, Single-Source Browser Platform

Systems Architecture &amp; Product Engineering

React 19 • TypeScript 5.8 • Vite 7 • Canvas 2D • Web APIs

Nov 2025 – Present

A portfolio you can operate: a windowed desktop and a touch-first phone home screen in the browser, where every surface runs on engineering of its own. I built the shell with eight-way window resizing, long-press dragging, spring-loaded folders and a paged layout engine that packs mixed-size widgets, carries overflow forward and shares one calculation between the drag preview and the drop. Underneath sits a parent-linked virtual file system with subtree deletion and orphan pruning, driven equally by a Finder-style browser and a Unix-style terminal with quote-aware parsing, path-aware tab completion, output redirection, live syntax colouring and a pager. The apps carry their own algorithms: a Markdown renderer written from scratch, scanline flood fill for drawing, time-zone offsets from the browser's internationalisation API, weather icons chosen by the most frequent daylight condition, and a calendar that merges personal events, public holidays, the Formula 1 season and the academic year. Every arcade game plays itself on their title screens, from an exhaustive Tetris placement search scored on holes, height and surface unevenness to shortest-angle target tracking in Asteroids. Storage that never throws checks every saved kernel value, request ownership stops a late answer overwriting a newer one, and one content source generates both the OS and its search-readable HTML and Markdown pages.

- [Project page](https://www.nauman.cc/projects/portfolio-operating-system/)
- [Website or repository](https://www.nauman.cc/)

## Contacts Hub: Loss-Preserving Contact Data Platform

Data Integrity &amp; Performance Engineering

JavaScript • Web Workers • PHP 8.2

Aug 2025 – Present

A self-hosted contact data platform for VCF and CSV libraries in which an edit never loses source data. I engineered a loss-preserving vCard 3.0/4.0 and RFC 4180 CSV engine that patches only the edited properties into the original bytes, keeping every other field, vendor property and line ending, verified by 152 unit tests. A Web Worker engine and a virtualised list take in-browser search to 100,000 contacts, loading them in under 7.5 seconds and answering searches in under 0.6 seconds. Every save passes through a revision-checked PHP 8.2 service with an exclusive lock, an exact pre-write backup, an atomic rename and an independent read-back, so a lost or concurrent write becomes a detected conflict instead of silent data loss.

- [Project page](https://www.nauman.cc/projects/contacts-hub/)
- [Website or repository](https://github.com/nshah1d/contacts-hub)

## WhatsApp Archive Viewer: Provenance-Preserving Chat Archive Platform

Data Parsing &amp; Provenance Engineering

JavaScript • Web Workers • PHP 8.2

Feb 2025 – Present

A self-hosted reader for WhatsApp text exports in which nothing is guessed and nothing is dropped. I engineered a strict parser for iOS and Android exports that fixes each file to its own header shape, stops on ambiguous day and month dates instead of guessing, and keeps every unplaceable line as a line-numbered diagnostic, verified by 98 unit tests. Overlapping exports join by exact occurrence, so a message repeated inside one export survives and every record keeps its source lines. A Web Worker engine and a bounded message window load 500,000 messages in under 5 seconds and search the full history in under half a second, while a private PHP 8.2 service delivers transcripts and media only through authenticated, link-safe routes.

- [Project page](https://www.nauman.cc/projects/whatsapp-archive-viewer/)
- [Website or repository](https://github.com/nshah1d/whatsapp-archive-viewer)

