Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

mitchelltrout.com — portfolio v2

The source of my personal site. Cinematic-dark, animated, and led by IT work rather than by a projects grid.

Stack: Astro 5 · TypeScript · Vitest

What it does

A rebuild of a v1 Express/EJS site, moved to Astro for static output with islands only where interactivity is genuinely needed — so most pages ship no JavaScript at all.

Two pieces have real logic behind them and are unit-tested: the contact form handling and a live status section. The résumé PDF is generated from source by a build script rather than being a binary someone has to remember to re-upload, so the site and the PDF can't drift apart.

Running it

npm install
npm run dev # localhost:4321
npm test
npm run build

Status

Live at mitchelltrout.com.


Commands

Command Action
npm run dev Dev server at http://localhost:4321
npm test Vitest (contact + status logic)
npm run build Production build to dist/
npm run preview Serve the production build locally
node dist/server/entry.mjs Run the standalone production server
./scripts/build-resume.sh Regenerate public/Mitchell-Trout-Resume.pdf

Adding a project

  1. Create src/content/projects/<slug>.md (copy an existing file for the frontmatter shape).
  2. Drop screenshots in src/assets/screenshots/ and list them in the frontmatter with alt text.
  3. npm run build — the schema validates everything.

Deploy (Windows server behind Caddy)

  1. Pull, npm install, npm run build
  2. Copy .env.example.env, fill in Brevo credentials
  3. Run deploy/start.bat (serves on PORT, default 3005)
  4. Caddy: existing mitchelltrout.com block already points at 3005 — one CSP addition, see deploy/caddy-changes.md
  5. Rollback: stop this, start the old portfolio app again

About

Personal portfolio site — Astro 5, cinematic dark theme

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /