Professional site for Jason Pollard, positioning him for remote U.S. Staff / Principal Software Engineer, Solutions Architect, AI-enabled application architecture, and senior hands-on technical leadership roles.
The site is intentionally static and direct: résumé-backed evidence, selected work, practical AI engineering, and independent projects—without a CMS, database, or contact form.
- Node.js 24.16.0 (Node 24.x in
package.json) - Next.js 16.3.x App Router
- React 19.2.x
- TypeScript 5.7.x
- Ordinary CSS
- Node test runner through
tsx - Playwright with Chromium
Next.js 16.3.4 declares PostCSS 8.5.23; the scoped override retains PostCSS 8.5.25. Its sharp range is now ^0.35.4, so the previous sharp override has been removed. The lockfile resolves sharp 0.35.4. Reassess the remaining override when updating Next.js.
app/— routes, metadata, robots, sitemap, Open Graph image, and global stylescomponents/— shared header, footer, page introduction, and JSON-LDcontent/site-content.ts— single public-safe, résumé-backed content source and site configurationtests/unit/— content, configuration, and server-rendering invariantstests/e2e/— navigation, contact, metadata, and mobile overflow checksdocs/— manual Vercel/domain and email setup checklistspersonal/— private ignored source material; never import, copy, expose, or commit it
Use the Node version in .nvmrc:
nvm use
npm install
npm run devOpen http://localhost:3000.
npm run dev— start local developmentnpm run build— create a production buildnpm run start— serve a production buildnpm run lint— run ESLintnpm run typecheck— run TypeScript without emitting filesnpm run test:unit— run focused unit/rendering testsnpm run test:e2e— run Playwright in Chromiumnpm run test:no-js— run focused browser checks with JavaScript disablednpm run test:static— verify built public routes have prerendered HTML artifactsnpm run test:e2e:deployed— smoke-test the URL supplied throughPLAYWRIGHT_BASE_URLnpm run test:links:external— make the explicitly network-dependent external destination checknpm run test:e2e:headed— run Playwright visiblynpm run test:e2e:install— install Playwright Chromiumnpm run verify:fast— lint and typechecknpm run verify— fast checks plus unit testsnpm run verify:full— normal checks plus production build
Update content/site-content.ts. Keep facts traceable to the current résumé and preserve exact metrics. The job filter informs role fit only; its private constraints and commentary are not public content.
siteConfig.resumeUrl points to the deliberately approved public-safe PDF in public/. Do not replace it with, or copy another résumé from, personal/.
For broad changes, run:
npm run verify:full
npm run test:e2eAfter a Vercel preview exists, run the deployed smoke suite without starting a local server:
PLAYWRIGHT_BASE_URL=https://your-preview.example npm run test:e2e:deployedPowerShell equivalent:
$env:PLAYWRIGHT_BASE_URL="https://your-preview.example"; npm run test:e2e:deployedRun npm run test:links:external separately when network access is available; it follows redirects and reports the final ArcadeGhosts URL.
CI runs a production dependency audit, full verification, and Playwright in separate jobs. No secrets or external services are required.
Deploy as a standard Next.js project on Vercel. No environment variables are currently needed. Follow docs/DEPLOYMENT.md for project, domain, redirect, DNS, HTTPS, and launch checks. Follow docs/EMAIL-SETUP.md before treating hello@jasonpollard.com as operational.
Everything under personal/ is private and ignored. It must never be imported, served, copied into public assets, included in test fixtures, or committed. Never add private contact details, confidential employer details, client names, or invented career claims.
- Add a real portrait only if Jason supplies and approves one.
- Do not link an uncurated general GitHub profile by default; explicitly curated public repositories may be linked.