Open to remote frontend roles

Will Hawks, frontend engineer

9 years building for the web, most recently in React: a futures trading app for Topstep and, before that, Mailchimp’s email editor.

Client work at Tensure

From 2024 to 2026 I worked as a consultant on product teams. The code is private, so here is what I did.

Every role and date since 2016 is on my résumé. Download résumé

Mississippi Department of Human Services

The state agency’s public site, with about 10 divisions and more than 100,000 visitors a month. I led development and built the theme and block library from scratch, checked against WCAG 2.2 AA.

  • 25+ custom Gutenberg blocks

    Editors build pages from blocks that only allow the design system’s options, so new pages stay on brand without a developer.

  • County office location search

    A Preact block searches MDHS’s Smartsheet data through a WordPress REST endpoint and saves a county’s contacts as a PDF.

  • Procurement tables from SharePoint

    Sortable, exportable tables pulled server-side from the agency’s SharePoint lists.

The MDHS contact page: quick help buttons, phone numbers and a list of program accordions

WordPress, PHP, Preact, Sass, WP REST API, Smartsheet and SharePoint APIsSee the live site

Move to Learn TV

Five-minute movement videos for Mississippi classrooms. I built the whole site, a Next.js frontend over the client’s WordPress video library.

  • Category rows with hover cards that grow in place and stay inside the screen edge.
  • Debounced search against a custom WordPress endpoint, and favorites for the videos a class repeats.
  • Every video, tag and curriculum has its own URL, so a teacher can share one link.

Next.js, React, styled-components, react-spring, headless WordPress, SentrySee the live siteSee the code

Move to Learn TV: a featured Fitness Break video above a row of top videos on a dark purple page

Skwahdle

A daily five-letter word game I built for my family. They passed it around until it ran its course; I brought it back online as a work sample.

  • Daily word from AirtableWords are scheduled in a spreadsheet, so a new one needs no deploy.
  • Guesses checked on the serverA Netlify Function checks each guess against 5,756 words, so the list never reaches the browser.
  • Stats kept through a rewriteMoving to Redux Toolkit changed the saved format, so a migration carries old streaks into the new store.

React, Redux Toolkit, styled-components, Netlify Functions, AirtablePlay today’s wordSee the code

Skwahdle on a phone after three guesses: crane, pilot and doubt, with A green and L yellow
Skwahdle rejecting the guess QZXVJ with the message Are you serious?

About me

I studied journalism, found web work through an SEO job, and spent seven years at Creative Distillery building more than 30 sites for nonprofits, small businesses and state agencies. I can write the PHP and the API, but the interface is the part I want to own.

Away from the screen: woodworking, 3D printing, home automation and a self-hosted home lab.