PROJECTS

Software Engineer

Frontend & React

Modern client-side engineering with React 19, TypeScript, and Vite: real state-management patterns, intent-named custom hooks, accessible drag-and-drop, unit-tested logic, and live deployed demos.

Back to Projects

Workflow Board Live

A Trello-style drag-and-drop task board built with React 19, TypeScript, and Vite — full card editing, per-column WIP limits, search/filter, and a simulated multiplayer layer with presence and an activity feed.

  • Drag & drop: accessible board powered by @dnd-kit — reorder cards within a list and move them across columns.
  • Card editing: title, description, assignee, priority, labels, and due dates edited in a modal.
  • Architecture: a single normalized store driven by useReducer + Context; components dispatch only through intent-named custom hooks.
  • Mock multiplayer: a simulated-collaborator engine, live presence, an activity feed, and localStorage state synced across browser tabs.
React 19 TypeScript Vite @dnd-kit useReducer + Context Custom hooks localStorage sync

Open the live demo — drag cards, switch users, hit “Simulate,” and watch state sync across browser tabs.

Interactive Habit Tracker Live

A habit tracker built on logic, not checkboxes — schedule-aware streaks, rolling completion percentages, and a clickable contribution heatmap, all driven by pure, unit-tested functions. Built with React 19, TypeScript, and Vite.

  • Schedule-aware streaks: current and longest streaks count only the days a habit is actually due — a weekday habit survives the weekend, and an unchecked-but-not-over today gets a grace period instead of resetting to zero.
  • Dynamic completion %: a rolling 30-day consistency ring per habit, plus a board-wide today ring and streak aggregates in the header.
  • Interactive heatmap: a GitHub-style grid of the last 18 weeks — click any day to backfill or undo it and watch every number recompute.
  • Tested core: the streak and percentage engine is a set of pure functions shipped with a Vitest suite.
React 19 TypeScript Vite useReducer + Context Custom hooks Vitest localStorage sync

Open the live demo — mark a day done and watch the ring, streak, and header recompute; click heatmap squares to backfill past days.

Password Validator Live

A real-time strength checker beyond a checklist: an entropy-based score that penalizes predictable patterns, a time-to-crack estimate, breach-style common-password detection, and a crypto-secure generator — all client-side, no password leaves the page.

React 19 TypeScript Vite Web Crypto Custom hooks Vitest

Interactive Stocks Live

A stock dashboard pulling live market data through a server-side API-key proxy — ticker search, a live quote, a hand-built interactive SVG chart with range tabs, and a saved watchlist with sparklines. Falls back to labeled demo data so it always runs.

React 19 TypeScript Vite Edge Functions SVG charts Vitest

BMI Calculator Live

A BMI calculator past the one-line formula: the WHO band your number lands in, a hand-built SVG gauge, the healthy weight range for your height, and BMI Prime. Metric and imperial switch without clearing your numbers — BMI framed as a screening tool, not a diagnosis.

React 19 TypeScript Vite SVG gauge Custom hooks Vitest