Company Visit

WinIt

July 2018 — May 2020

Rebuilt the web app, backend, and services that helps users fight their tickets.

Roles

  • Software Engineer

    July 2018 — May 2020

    Rebuilt the web app, backend, and services that helps users fight their tickets.

Tech

Related Projects

  • In progress

    A self-hostable URL shortener that runs entirely on Cloudflare Workers, with an admin UI, a headless JSON API, role-based access, configurable redirect codes, passkey-first authentication, and optional API keys for automated access. Architecture is a single Workers deploy: Elysia handles redirects and the admin JSON API; TanStack Start powers the admin SPA with Eden providing type-safe client calls; Better Auth manages passkeys, API keys, and invite-only user provisioning; Drizzle ORM persists state to Cloudflare D1; the UI is built with Tailwind CSS v4, Radix, and shadcn. Key tech: Cloudflare Workers, Cloudflare D1, TanStack Start, Elysia, Better Auth, Drizzle ORM, TypeScript, React, Tailwind CSS v4, Vite, Wrangler, Biome, Vitest.

    • April 2026
    • github
  • A local Bun-powered Model Context Protocol server that exposes read-only access to the Charles Schwab Trader and Market Data APIs, letting AI assistants and agents query account positions, orders, transactions, quotes, option chains, price history, market hours, and instruments in a structured way. Order placement, replacement, and cancellation are intentionally not exposed to keep blast radius minimal. Architecture is a single Bun process speaking the MCP stdio protocol, with the official MCP SDK and Zod schemas defining each tool; OAuth tokens are stored localy. Key tech: Bun, TypeScript, Model Context Protocol SDK, Zod, Biome, portless.

    • May 2026
    • github
  • A Bun-powered fullstack monorepo boilerplate pairing a Hono API with a Vite-built React 19 SPA, with DevContainer and Docker Compose configs for both dev and prod. Architecture uses Bun workspaces split into apps/ (frontend and backend services) and packages/ (shared code), with Pino structured logging on the server, shadcn + Tailwind CSS 4 on the client, Biome for lint/format, Storybook for component development, and Vitest + Playwright for unit and browser testing. Companion docs site lives at

    • March 2025
    • github
  • A personal Turborepo starter template for spinning up fullstack TypeScript apps, derived from Vercel's kitchen-sink example and extended with a tRPC client + Next.js app-directory setup. Architecture is a pnpm + Turbo monorepo: apps/ contains a Next.js main-app (with the tRPC server colocated in its route handlers), a standalone trpc-api package, and a Docusaurus doc-site; packages/ contains shared internal libraries for auth, logger, UI components, ESLint/Jest config, and tsconfigs. MSW is preconfigured for tRPC mocking in tests, with a GitHub Actions lint/test/build workflow and a render.yaml for Render deploys. Key tech: TypeScript, Turborepo, pnpm, Next.js, tRPC, React, Docusaurus, Jest, MSW, ESLint, Prettier.

    • August 2023
    • github
  • A SvelteKit landing page that cached and served the latest news from the Bing News API as an ad-free home page, the first project where SvelteKit was used end-to-end. Architecture pairs a SvelteKit frontend folder with an AWS services folder, both defined as infrastructure-as-code via SST (which compiles to AWS CDK under the hood) so the entire stack — Lambda functions, caches, and static hosting — deploys from a single sst.config.ts. Vitest covers the services. No longer running due to news API costs. Key tech: SvelteKit, TypeScript, SST, AWS CDK, AWS Lambda, Vitest.

    • January 2023
    • github
  • A Next.js fullstack starter that wires together authentication, a typed ORM, and a GraphQL stack into a single TypeScript codebase. Architecture uses the Next.js pages router with API routes hosting Apollo Server (via apollo-server-micro) at /api/graphql; next-auth handles sessions through @next-auth/prisma-adapter, with Prisma modeling users/accounts on top of PostgreSQL; the React side consumes the same schema with Apollo Client; styling is Tailwind CSS plus Headless UI and Heroicons. Predates the Next.js app directory. Key tech: Next.js, TypeScript, next-auth, Prisma, PostgreSQL, Apollo Server, Apollo Client, GraphQL, Tailwind CSS, Headless UI.

    • September 2021
    • github
  • A statically generated Gatsby portfolio site built in 2020, pulling its content from local MDX files (blog posts, projects, work experience) and live GitHub commit data from the GitHub GraphQL API at build time, then rendering a custom commit-history visualization with d3-scale. Architecture splits content from presentation: MDX + remark pipelines transform markdown to pages, Emotion and Theme UI handle styling, react-hook-form + yup + hCaptcha drive a spam-resistant contact form, and Netlify CMS provides editor authoring. The form/API backend is a separate TypeScript Serverless project; the site itself is deployed on Netlify. Key tech: Gatsby, TypeScript, React, MDX, Emotion, Theme UI, Netlify CMS, GitHub GraphQL API, d3-scale, react-hook-form, Netlify.

    • April 2020
    • github
  • A 100-line-limit code-challenge submission from a 2018 job interview: a single Express endpoint that takes a Halo gamertag as a query parameter, fetches that player's multiplayer stats from the Halo API, composites the numbers onto a base image with Jimp, and returns the resulting PNG in the HTTP response. Architecture is intentionally tiny: a single Express server with Jimp doing the image generation and Axios fetching upstream stats, plus a small webpack-bundled React client used to exercise the endpoint. Designed for Heroku deployment. Key tech: Node.js, Express, Jimp, Axios, React, Webpack, Heroku.

    • June 2018
    • github
  • The first iteration of a personal portfolio site from 2018, bootstrapped with Create React App and built around animated SVG transitions to give each section a distinctive feel. Architecture is a client-side React SPA with react-router for navigation, react-move + flubber + d3-ease for SVG path morphing and timeline-driven animations, web-animations-js polyfilling the WAAPI, marked for in-page markdown rendering, and react-ga for Google Analytics. Key tech: React, Create React App, react-router, react-move, flubber, d3-ease, web-animations-js, marked, react-ga.

    • April 2018
    • github