6 Commits
Author SHA1 Message Date
jmartin a2cec1baf1 Fix dogfood QA: 404, content hygiene, grid UX, a11y, CTAs
- Add branded NotFound catch-all (no more blank unknown routes)
- Portfolio cards: shimmer skeleton, eager first-row thumbs, real alts
- Hide empty categories; rename CAD view slug to avoid collision
- Resume summary preserves paragraphs/bullets
- Home/About/footer hire contact mailto CTA
- Sticky header scroll-padding; chip aria-labels
- Security headers; Flickr import strip View On Black + junk tags
- Content cleanup script for grammar, residue, tags, featured
2026-08-04 16:14:24 -04:00
jmartin b924ca8a62 Add Vimeo video import with embeds and admin re-run
Import public videos from jmartgraphix as Video (and 3D Animation
when relevant), with player embeds, thumbnails, and dashboard UI.
2026-07-24 12:13:23 -04:00
jmartin ff37533037 Add Flickr photostream import as Photography
Import public photos from samuraijkm (NSID resolve + Flickr REST),
tag Photography, with admin UI re-run and CLI support.
2026-07-24 11:35:57 -04:00
jmartin cef5738044 Add admin UI for ArtStation re-import
Expose import as a background admin job with status polling, dry-run
and optional publish; share logic with the CLI via a service module.
2026-07-24 10:52:11 -04:00
jmartin ac7eb17854 Use FlareSolverr for ArtStation import behind Cloudflare
ArtStation blocks plain HTTP; route JSON fetches through FlareSolverr
with a direct-fetch fallback.
2026-07-24 10:44:18 -04:00
jmartin 43928f7a49 Initial portfolio CMS: Fastify API + Vite SPA
Single-container app with Postgres catalog, Typesense search,
Authelia Remote-User admin, portfolio views, resume/PDF, media
uploads, and ArtStation import tooling.
2026-07-23 17:01:34 -04:00