Graham Hall

Full-stack Engineer
Illustrated avatar of Graham, a man with brown hair, glasses, and a beard wearing a plaid shirt

Hello World

I'm a full-stack engineer with a focus on TypeScript and database-driven applications. Getting the data layer right matters just as much as what ends up on screen.

I've shipped everything from internal CRM tools for renewable energy companies to landing pages for international aid organizations. I'm drawn to projects where the work actually means something, usually with a handful of third-party APIs quietly doing the heavy lifting.

When I'm not writing code, you'll probably find me losing at a board game, trying to finally finish Baldur's Gate 3, or scribbling down story ideas I'll definitely finish someday.

Skills

Front-End

  • Next.js
  • React
  • SvelteKit
  • Astro
  • Tailwind CSS

Back-End

  • Node
  • Express
  • Hono
  • REST APIs
  • PostgreSQL
  • Prisma
  • Drizzle
  • AWS

Languages

  • JavaScript
  • TypeScript
  • HTML
  • CSS
  • Swift

Tooling

  • Git
  • GitHub Actions
  • Vite
  • NPM

My Projects

DistributeAid.org

Contributor & Co-Maintainer

Landing site for DistributeAid, a humanitarian organization connecting aid workers and volunteers with the resources needed to deliver assistance to people in need.

  • TypeScript
  • Next.js

Nerd Sales App

Software Developer

Internal sales tool and CRM for making slides for sales pitches, enabling project management across departments, and generating financial reports for executive and upper-level management.

  • Next.js
  • AWS
  • PostgreSQL

bgg-client

Maintainer

A Node.js package to call the BoardGameGeek.com API and convert the response from XML to JSON.

  • TypeScript
  • Rest API
  • NPM

AutoDock

Maintainer

A utility for automatically hiding and showing the MacOS Dock based on connected display size.

  • Swift
  • SwiftUI

Contact Me

I'd love to hear from you! Whether you have a question, want to collaborate on a project, or just want to say hello, don't hesitate to reach out. You can contact me using the form below, and I'll get back to you as soon as possible.