trevordmartin

trevordmartin.com

Trevor D. Martin’s career site — a single-page résumé/portfolio built with Next.js, exported to static HTML, and hosted on GitHub Pages under the custom domain trevordmartin.com.

Stack

No backend, no database, no CMS. Every piece of content is plain data in src/data/.


Editing content

You should never need to touch a component to update your résumé. Two files hold everything:

src/data/site-config.ts

Your identity, contact info, social links, nav items, and a couple of site-wide toggles (like the “open to opportunities” pill).

src/data/resume.ts

Typed arrays for experience, skills, certifications, projects, and education. To add, remove, or reorder an entry, edit the array — the page re-renders automatically. Each type is documented in the file.

Note: the MasTec entry in experience is a placeholder (search the file for [Add) — job title, dates, location, and bullets still need to be filled in. Until you do, the site shows a small “Placeholder — edit src/data/resume.ts” badge on that entry so it can’t be mistaken for real content.

Résumé PDF download

The header and hero “Résumé” buttons link to /resume.pdf. Drop your résumé PDF at public/resume.pdf (same filename) and the links will work — nothing else to configure. If you’d rather link elsewhere (e.g. a Google Drive link), change resumeFile in site-config.ts.

Colors, fonts, and theme

Every color in the site is a CSS variable defined once at the top of src/app/globals.css, under :root. Change a value there — e.g. --accent — and it updates everywhere that color is used. Same idea for fonts, defined a little further down in the @theme inline block.


Local development

npm install
npm run dev

Visit http://localhost:3000.

To produce the static build locally (the same output GitHub Pages will serve):

npm run build

This writes fully static HTML/CSS/JS to ./out. You can preview that exact output with any static file server, e.g.:

npx serve out

Deploying to GitHub Pages

This repo includes .github/workflows/deploy.yml, which builds the site and publishes ./out to GitHub Pages automatically on every push to main.

One-time setup

  1. Push this repo to GitHub (if you haven’t already):

    git init
    git add .
    git commit -m "Initial commit"
    git branch -M main
    git remote add origin https://github.com/TheTrevorM/<repo-name>.git
    git push -u origin main
    
  2. Enable GitHub Pages with the Actions source. In the repo on GitHub: Settings → Pages → Build and deployment → Source, choose GitHub Actions. (Not “Deploy from a branch” — the workflow handles that itself.)

  3. Push to main. The “Deploy to GitHub Pages” workflow runs automatically (check the Actions tab for progress). Once it finishes, your site is live at https://<username>.github.io/<repo-name>/ — that default URL is temporary until the custom domain is connected in the next step.

Connecting the custom domain (trevordmartin.com)

The repo already includes public/CNAME containing trevordmartin.com, so every build ships that file as part of the static export — this is what tells GitHub Pages which custom domain to serve.

  1. In your domain registrar’s DNS settings, add these records at the apex (root) domain, trevordmartin.com:

    Type Host Value
    A @ 185.199.108.153
    A @ 185.199.109.153
    A @ 185.199.110.153
    A @ 185.199.111.153

    These are GitHub Pages’ standard apex IPs. If your registrar supports ALIAS or ANAME records instead of (or in addition to) A records, those work too — point them at <username>.github.io.

    Optionally, also add a www subdomain so www.trevordmartin.com redirects to the apex:

    Type Host Value
    CNAME www TheTrevorM.github.io
  2. In the repo on GitHub: Settings → Pages → Custom domain, enter trevordmartin.com and save. GitHub will verify DNS (this can take anywhere from a few minutes to a few hours to propagate).

  3. Once DNS is verified, check Enforce HTTPS in the same settings panel. GitHub provisions a free TLS certificate automatically — this can also take a little while after the domain first verifies.

  4. Re-check the live site at https://trevordmartin.com once HTTPS is enforced.

Making future updates live

Once set up, deploying an update is just:

git add .
git commit -m "Update experience section"
git push

The workflow rebuilds and republishes automatically — no manual deploy step.


Project structure

src/
  app/
    layout.tsx       Root layout, fonts, page metadata
    page.tsx          Assembles all sections in order
    globals.css        Design tokens (colors, fonts) + base styles
  components/          One file per section (Hero, Experience, Skills, ...)
  data/
    site-config.ts     Identity, contact, nav, social links
    resume.ts           Experience, skills, certifications, projects, education
public/
  CNAME                Custom domain for GitHub Pages
  .nojekyll             Tells GitHub Pages not to run Jekyll (needed for Next.js's _next/ output)
  resume.pdf             ← add this yourself
.github/workflows/
  deploy.yml            Build + deploy to GitHub Pages on push to main