Skip to content

Projects

Projects

Case studies that highlight problems, solutions, and results.

Each entry below follows the formula: problem statement, solution, role, tech stack, and measurable outcomes. Every project includes proof links to GitHub plus live demos or case-study evidence where available.

Need more detail? Message me on LinkedIn or GitHub and I'll share stories, metrics, and QA checks for any project on this page.

Front-End

Front-End Interfaces

UI-first projects focused on interaction quality, accessibility, and visual clarity. These are fast to scan, demo-friendly, and built to explain design decisions clearly.

AnimalSounds project thumbnail

AnimalSounds

A playful soundboard that lets you explore animal sounds instantly, even when offline.

Offline-ready audio playbackBrowser-persisted favorites

Impact: AnimalSounds delivers instant local playback with browser-persisted favorites, so the experience stays usable even with unstable connectivity.

Built as an offline-first soundboard so kids and families can tap and learn animal sounds instantly without waiting on network calls.

What I learned: Offline-first decisions and base-path-safe deployment rules make demos more reliable across real devices.

Next.js App RouterNextUITailwindWeb Audio APIGitHub Pages
More details

My role: I built the full interface using Next.js App Router, NextUI, and Tailwind, then wired local audio assets, keyboard navigation, favorites, and local listening stats.

Technical approach: Core audio files are bundled in the app for offline behavior, optional Pexels enrichment is feature-flagged, and GitHub Pages base-path rules are documented to keep static hosting reliable.

Outcomes and proof: Offline MP3 playback and local favorites persistence are live in the deployed demo and documented in GitHub.

Limitations: The project currently focuses on a curated set of animals and lightweight enrichment, not a full educational curriculum platform.

Professional Portfolio Website project thumbnail

Professional Portfolio Website

A component-driven demo portfolio built to practice page structure, reusable sections, and polished form UX.

Impact: The project gave me a reusable section system I still reference when shipping new portfolio pages and contact flows.

This was a focused portfolio sandbox where I practiced reusable section patterns before redesigning my current production site.

What I learned: Consistent section patterns and component contracts speed up future site iterations.

Reactstyled-componentsMaterial UIJavaScriptGitHub Pages
More details

My role: I designed and implemented reusable React sections for navigation, projects, experience, and contact with styled-components and Material UI forms.

Technical approach: The site uses componentized section templates, responsive breakpoints, and documented GitHub Pages deployment steps to keep updates repeatable.

Outcomes and proof: The full implementation is available in GitHub with a live deployment at GitHub Pages.

Limitations: This is a reference implementation and does not include all of the newer content, analytics, and case-study depth from the current live portfolio.

CodePen projects project thumbnail

CodePen projects

A curated collection of UI pattern demos, accessibility examples, and layout experiments.

Impact: The collection reduces rework by validating accessibility states and layout behavior in small, disposable prototypes first.

I use these pens as a quick UX lab to test interactions before committing larger features to production repos.

What I learned: Small isolated experiments make production UI decisions faster and safer.

HTMLCSSJavaScript
More details

My role: I authored and organized the demos, with emphasis on reusable UI patterns, responsive behavior, and accessibility-focused states.

Technical approach: Each pen isolates one pattern, which keeps iteration fast and makes it easier to promote tested snippets into larger projects and blog walkthroughs.

Outcomes and proof: The public collection is available on CodePen, and selected patterns are referenced across project and blog documentation.

Limitations: CodePen demos are intentionally narrow and are not full production applications with backend integrations.

AI Systems

AI-Enabled Full-Stack Systems

Voice and text workflows where local inference, API orchestration, and privacy constraints matter more than flashy demos.

Convo-Ai project thumbnail

Convo-Ai

A local voice-and-text assistant that runs privately on your own machine.

Local-only inference pipelineVoice + text roundtrip flow

Impact: Convo-Ai keeps speech-to-text, LLM inference, and text-to-speech on-device so conversation data stays local and private.

Built for people who want voice AI without sending conversations to third-party cloud APIs.

What I learned: Local AI systems require careful dependency and runtime documentation to stay reproducible.

PythonFastAPIWhisperOllamaXTTS v2WebSockets
More details

My role: I implemented the FastAPI backend, connected Whisper, Ollama, and XTTS v2, and documented local setup so the stack can be reproduced on another machine.

Technical approach: The app exposes HTTP and WebSocket flows, maintains conversation history, and supports optional sentiment hooks while relying on local runtime dependencies like Python, FFmpeg, and Ollama.

Outcomes and proof: Integration and run instructions are documented in the repository, including local-only execution for server plus client.

Limitations: Performance depends on local hardware and model configuration, so setup quality and response speed vary by machine.

Tools

Tools & Infrastructure

Labs and utilities used to learn lower-level engineering concepts, deployment reliability, and debugging patterns across environments.

Triangle Shader Lab (WebGPU) project thumbnail

Triangle Shader Lab (WebGPU)

A hands-on WebGPU lab with a toggle between Hello Triangle and a textured cube.

2 render modesWebGPU pipeline learning lab

Impact: The lab provides a side-by-side toggle between a minimal triangle and textured cube so pipeline changes can be validated quickly.

Built as a practical graphics lab so I could trace the full WebGPU path from device request to final frame output.

What I learned: Pipeline setup clarity matters more than visual complexity when learning new graphics APIs.

Next.jsTypeScriptWebGPUGitHub Pages
More details

My role: I implemented the WebGPU initialization, pipeline setup, and shader wiring, then wrapped the demo in a simple Next.js experience with clear experiment notes.

Technical approach: The project isolates rendering stages and exposes two modes so state changes and shader effects are easier to reason about during debugging.

Outcomes and proof: The two-mode demo is public at GitHub Pages, and the editable TypeScript pipeline code is documented in GitHub.

Limitations: The lab is intentionally narrow and educational, not a production rendering engine.

EthicsFrontEndDemo project thumbnail

EthicsFrontEndDemo

An interactive workshop that teaches how to move from hardcoded secrets to safe environment-variable workflows.

Interactive security walkthroughHardcoded vs env-var patterns

Impact: The workshop turns abstract secrets advice into hands-on comparisons that show safer environment-variable workflows in practice.

Built to answer a common beginner question directly: "Why is hardcoding secrets dangerous, and what should I do instead?"

What I learned: Security guidance lands better when people can compare bad and good patterns side-by-side.

Next.jsTailwind CSSSecrets managementGitHub Pages
More details

My role: I built the interactive tutorial flow, authored scenarios, and mapped each lesson to practical secrets-management principles.

Technical approach: The app uses step-based pages in Next.js + Tailwind with progression cues and side-by-side examples, including references aligned to HashiCorp-style secrets-management pillars.

Outcomes and proof: The public workshop is available at Live Demo and fully documented in GitHub.

Limitations: It teaches foundational patterns and does not replace a full enterprise secrets platform rollout.

CheeseMath Jest tests project thumbnail

CheeseMath Jest tests

A multi-tool calculator suite rebuilt in Next.js with testing-focused architecture.

Legacy + modern app versionsRegex + card-check utilities

Impact: The project preserves utility features while documenting a clear migration path from legacy Jest coverage to a modern Next.js architecture.

Built to prove a utility-heavy app can stay maintainable when rebuilt from legacy React into a modern test-first stack.

What I learned: Rebuilding a legacy app in a modern stack is the fastest way to spot architecture and testability gaps.

JavaScriptTypeScriptJestNext.jsTailwindNextUI
More details

My role: I rebuilt the calculator suite, implemented utilities for regex and card validation, and maintained testing coverage while documenting migration decisions.

Technical approach: The current build uses Next.js + Tailwind + NextUI for UI structure and keeps Jest-based verification while documenting planned Vitest/Playwright expansion.

Version comparison:

VersionFocusTesting state
Legacy React appOriginal utility workflow baselineJest-oriented validation flow
Modern Next.js rebuildImproved component structure + UI deliveryJest now, Vitest/Playwright planned

Outcomes and proof: Repo-level test and migration documentation are in GitHub, with a runnable build at Live Demo.

Limitations: Advanced e2e coverage is still in the roadmap and not yet fully implemented.

OBJ parser project thumbnail

OBJ parser

A Zig parsing lab for OBJ/MTL geometry files and explicit memory management.

OBJ + MTL parsing pathManual memory-management practice

Impact: The parser strengthened systems-level reasoning around memory ownership, file I/O paths, and malformed-input handling.

Built to learn Zig by parsing real geometry files instead of reading only toy examples.

What I learned: Manual memory ownership decisions become much clearer when tied to concrete binary parsing tasks.

Zig
More details

My role: I designed the parser architecture in Zig, implemented OBJ/MTL reading, defined geometry structures, and added error handling for malformed inputs.

Technical approach: The implementation focuses on explicit memory management and binary-safe parsing paths, with documentation that compares Zig ownership tradeoffs against JavaScript workflows.

Outcomes and proof: Source implementation and README design notes are available in GitHub.

Limitations: This remains an exploratory parser lab and does not yet include a fully optimized rendering pipeline integration.

Need a walkthrough?

I'm happy to schedule a video walkthrough, share deployment docs, or hand over repo access so you can verify the code quality, monitoring notes, and deployment plans before we talk.

Proof links for all metrics and implementations are available in linked repositories and deployment dashboards.