Full portfolio

Background & case studies

About, trajectory, case studies, and tooling-the full arc beyond the homepage snapshot.

← Back to homepage

About

I've spent 9+ years turning messy requirements into products that work. I do frontend (React, TypeScript, Next.js) and backend (Node.js, APIs), and I care a lot about design systems, component libraries, and the tools and docs that help teams move fast.

I sit between design and engineering: I make sure the code is accessible and actually ships. I've run design-system rollouts and built things like an MCP server for Cursor so we catch issues before review. I like working in small teams where everyone cares about the product.

I'm good at leading, working with others, and mentoring. I care about stable releases and making hard stuff simple so everyone can contribute.

Experience

Impact and outcomes, not just responsibilities.

  • Senior Frontend Developer

    AlwaysGeeky Games

    2024 – 2026
    • Shipped Marketplace and Login (React, Next.js, AWS) on time with stable Web3 API integration and zero critical production incidents.
    • Architected a Design System and component library that cut UI development time and ensured 100% WCAG compliance across products; CI (GitHub Actions) blocks visual and a11y regressions before merge.
    • Built a custom MCP server for Cursor so lint and types run in the editor, faster feedback and cleaner PRs.
  • Senior Frontend Developer

    Emplifi

    2022 – 2023
    • Delivered data-heavy dashboards (GSAP, D3.js) that drove measurable gains in retention and responsiveness via A/B tests and analytics (Sentry, Hotjar).
    • Solved embedded performance: made the same dashboards run at 60fps inside mobile webviews and third-party embeds, removed jank and friction identified in UX data.
    • Owned Figma-to-code pipeline; aligned technical decisions with user research and business KPIs.
  • Frontend Developer

    ControlTech Startup Studio

    2018 – 2022
    • Owned frontend delivery for multiple startup products (Figma → React/React Native, AWS); shipped stable releases for early adopters.
    • Reduced first-load times with code splitting, lazy loading, and CDN; built PWAs (offline, caching) so key flows stayed reliable, improved engagement on core flows.
    • Achieved 99.9% deployment stability via Jest, Playwright, and GitHub Actions CI/CD, fewer production incidents, faster and confident releases.
  • UI/UX Designer & Frontend Developer

    Rayvarz Inc.

    2016 – 2017
    • Redesigned legacy B2B dashboards; better data viz and IA drove +15% user engagement (measured and tied to business goals).
    • Bridged design and engineering (Figma/Photoshop → Vue.js); ran user research and A/B tests to validate UI changes and tie technical work to outcomes.

Case studies

Outcome first, then how the work was structured—technical signals up front, full stack on request. Serious write ups, not a gallery.

    • AI
    • Accessibility

    Turned vague, chatbot-style suggestions into specific, auditable recommendations that stay in sync between the dashboard and PDF reports.

    Typed AI recommendations & report integrity

    Senior product engineer · MapBylaw

    Designed and implemented an AI recommendations pipeline that planners, developers, and auditors can trust—grounded in the same zoning rules, feasibility math, and datasets as the rest of MapBylaw.

    Best for: AI product engineering · Frontend architecture

    Technical signals

    • TypeScript + OpenAPI/Zod
    • React-PDF + typed payloads
    • Policy-aligned AI context
    Full stack+
    TypeScriptFastifyReactReact-PDFDoclingOpenAPIAWSWCAG

    Case study

    Problem

    Early AI recommendations were generic, hard to trace back to inputs, and sometimes drifted from MapBylaw's content policy (no fake or static data, no Montreal-only fallbacks pretending to be real). There was no single typed contract between the Fastify API, React dashboards, and React-PDF reports, so auditing a recommendation meant spelunking across services and documents.

    Approach

    Standardized a strict TypeScript shape for ai_recommendations in the API and database, then consumed it in both the web dashboard and PDF payload builder. Built a narrow context builder that only feeds the model what MapBylaw already knows is true (zoning code, PUM 2050 sector, heritage/climate flags, feasibility scores, computed scenarios). Wired the flow through OpenAPI + Zod validation, added tests so malformed recommendations fail fast, and codified the constraints in REPORTS_DATA_AUDIT.md, ARCHITECTURE.md, IMPLEMENTATION_STATUS.md, and API_AUDIT.md.

    Result

    Specific, auditable recommendations that line up between dashboard and PDF (e.g., “Scenario B exceeds the Plateau conversion cap; keep GFA under 200 m² or switch to a plex + ADU strategy”) and evolve automatically as rules and incentives change—without hand-editing report copy.

    AI interface:Chatbot-style, genericTyped, scenario-specific service
    Context:Loose, sometimes inventedNarrow, policy-aligned, no fake data
    Schema:Scattered across layersShared contract + living audits

    More outcomes

    • Introduced a single typed contract for AI recommendations across API, dashboard, and PDF so audits no longer require chasing fields through multiple layers.
    • Made rule and incentive changes flow through one orchestrator, tightening both AI context and validation automatically while keeping report content policy intact.
    • Design systems
    • DX

    Single design system (@mapbylaw/ui) for web and admin so toasts, shell, and tables behave the same everywhere.

    Design system & platform DX

    Senior product engineer · MapBylaw

    Product engineering for a map-first property insights platform: a shared UI across web and admin, feature-based architecture, and a type-safe API and PDF report system.

    Best for: Design systems · Frontend architecture

    Technical signals

    • @mapbylaw/ui
    • OpenAPI + Zod contracts
    • React-PDF report system
    Full stack+
    Next.jsReactTypeScript@mapbylaw/uiReact-PDFMapbox GLTailwindJestPlaywright

    Case study

    Problem

    Web and admin needed a consistent design language and patterns, while API, PDF report, and frontend all evolved with new bilingual reports, consent-gated analytics, and internal tooling.

    Approach

    Built a shared component library (@mapbylaw/ui) for both apps, organized by feature with barrel exports and path aliases (components/, features/, utils/) for clean imports. Used OpenAPI 3.0 and Zod for API contracts, plus React-PDF with a typed payload builder and shared report components so the 10-page bilingual report stays single-source.

    Result

    A single design language and predictable DX: API docs and types drive the frontend, and report content policy (no static/fake data) is enforced via shared types and audit.

    UI across apps:Separate stacksShared @mapbylaw/ui
    Report data:Ad-hoc copyTyped payload + audit

    More outcomes

    • Feature-based structure and path aliases so teams ship features without deep import chains or guessing where things live.
    • OpenAPI + Zod and strongly typed PDF payloads keep API contracts and report outputs in lockstep.
    • Design systems
    • Accessibility

    Unified look and accessibility across products so new features feel native no matter which Web3 surface they land on.

    Design system, marketplace & login (web3)

    Lead / Senior frontend engineer · AlwaysGeeky Games

    Built and maintained the design system for our Web3 products, then used it to ship the marketplace and login flows from design to production. Accessible (WCAG), consistent UI, solid API and auth, deployed on AWS.

    Best for: Design systems · Frontend architecture

    Technical signals

    • Storybook + CI (visual/a11y)
    • WCAG across products
    • React / Next in production
    Full stack+
    ReactTypeScriptNext.jsStorybookGitHub ActionsTailwindAWSJestPlaywright

    Case study

    Problem

    Teams were building their own components and we needed marketplace and login experiences that matched design, integrated with Web3 APIs, and felt fast—not fragile or inconsistent.

    Approach

    Established a Storybook-driven design system with WCAG-compliant components and wired CI (GitHub Actions) to run lint, visual diff, and a11y checks on every PR. Built marketplace and login in React/Next.js/Vite on top of that system, smoothing loading and error states and integrating cleanly with APIs and auth.

    Result

    A unified look and accessibility baseline across products. CI catches visual/a11y regressions before merge, and marketplace and login stayed stable under real Web3 traffic.

    Component reuse:Ad-hocShared library
    A11y checks:ManualAutomated in CI

    More outcomes

    • CI catches visual and a11y regressions before merge, so teams can move quickly without breaking accessibility.
    • Marketplace and login shipped on time, matched design, stayed stable under real traffic, and handled Web3 API/auth flows reliably in production.
    • Data viz
    • Performance

    A/B tests and analytics showed better retention and a noticeably snappier UI.

    Data Dashboards & Motion

    Senior frontend engineer · Emplifi

    Built data-heavy dashboards with smooth motion (GSAP) and D3.js charts, tuned to run well inside mobile webviews and embedded contexts.

    Best for: Performance · Dashboards

    Technical signals

    • D3.js
    • GSAP + profiled React
    • Embedded + webview performance
    Full stack+
    ReactD3.jsGSAPFigma

    Case study

    Problem

    Dashboards had to look good, stay legible, and feel smooth inside mobile webviews and embedded surfaces, with real motion design instead of jank.

    Approach

    Used D3.js for charts and GSAP for motion, then profiled and tuned React so a single codebase ran well across webviews and embeds.

    Result

    A smoother embedded experience and more trustworthy visuals, with data showing better retention and fewer drop-offs.

    Embedded performance:JankySmooth 60fps

    More outcomes

    • The same dashboards ran smoothly when embedded in other apps and mobile webviews.
    • Performance
    • DX

    Reached 99.9% deployment stability with Jest, Playwright, and GitHub Actions in the loop.

    PWA & Performance

    Frontend engineer · ControlTech Startup Studio

    Built several startup products end to end, focusing on code splitting, lazy loading, and CDN-backed assets, plus PWAs with offline support and caching from scratch.

    Best for: Frontend architecture · Performance

    Technical signals

    • Jest + Playwright
    • GitHub Actions CI/CD
    • PWA + CDN delivery
    Full stack+
    VueNuxt.jsReactReact NativeJestPlaywrightGitHub Actions

    Case study

    Problem

    Products had to load quickly on modest devices, work offline, and deploy without breaking core flows.

    Approach

    Split code and lazy loaded heavy paths, moved assets behind a CDN, and built PWAs with service workers and caching. Added Jest, Playwright, and GitHub Actions so regressions were caught before reaching users.

    Result

    99.9% uptime on releases, faster first load, and key flows that continued to work offline for early adopters.

    Deployment stability:~95%99.9%
    First load:Heavy bundleSplit + CDN

    More outcomes

    • Improved load time and offline behavior so early users had a fast, resilient experience on unstable connections.

DX tooling & experiments

Automation I run in the editor and in CI—early feedback, smaller reviews, same standards as the rest of my work.

  • MCP server for Cursor

    Custom MCP integration so lint, types, and tests run inside Cursor. Issues surface before you open a PR—same checks as CI, faster loop for the author.

  • Checks in GitHub Actions

    Format, types, and tests in the pipeline so regressions are caught before merge. Pairs with editor-side tooling: two layers of the same quality bar.

What I do

How I use the stack in practice, trade-offs and scale, not just keywords.

Frontend architecture

I scale React, Next.js, Vue 3, and Nuxt 3 apps with clear structure, libraries, design systems, and tooling so teams don't step on each other.

ReactNext.jsVue 3Nuxt 3TypeScriptVite

State & data

I use Zustand, Redux, Pinia, and React Query so complex UIs (dashboards, real-time) stay predictable and easy to debug.

ZustandReduxPiniaReact QueryContext API

Interactions & motion

I build GSAP timelines, D3.js charts, and 3D/WebGL when motion and data viz are part of the product, not just eye candy.

GSAPD3.js3D Web Graphics

Design systems & accessibility

I run design systems in Storybook, keep components WCAG-ready, and use CI to block a11y and visual regressions.

StorybookWCAGFigmaGitHub Actions

Backend & APIs

I design and wire up Node.js, REST, and GraphQL so the frontend gets clear contracts and good error handling.

Node.jsNest.jsREST APIsGraphQLPostgreSQL

Testing & reliability

I set up Jest, Playwright, and Sentry so we catch bugs in CI and fix production issues fast.

JestPlaywrightSentryChrome DevTools

Infrastructure & DX

I ship with AWS, Docker, and GitHub Actions. I also build custom tooling (like the MCP for Cursor) so feedback is fast.

AWSDockerGitGitHub ActionsVite

CORE: I lead, collaborate, and mentor. I care about stable releases and clear communication.

Master's Degree in Computer Information Technology · 2016