Editorial portfolio for Tim Finch. Built with Next.js 16, TypeScript, and Tailwind CSS, it presents projects, writing, and current work with a restrained visual system and a content-first structure.
- Editorial home page with featured projects and a lightweight space-data telemetry layer
- Lead “Currently building” narrative for Nereid, with a case study and evidence-led build thread
- Reusable, captioned content-image blocks for real project screenshots
- Project archive with search and statically generated case studies
- Writing archive with structured long-form entries and build threads
- About page with a concise working profile, social links, and a public CV link
- Lightweight API routes for portfolio search and telemetry fallback data
The site uses a warm, low-contrast palette and a typographic hierarchy that keeps the experience focused and readable.
- Warm paper background and near-black text
- Muted supporting copy
- Thin borders and soft translucent surfaces
- Serif editorial headings paired with a clean sans-serif body stack
- Rounded pill navigation and actions
- Subtle hover and focus states
- Next.js 16 App Router
- React 19
- TypeScript
- Tailwind CSS v4
- Vercel Analytics
Content lives in local data files so the site stays easy to update and statically render.
src/data/projects.tsfor project contentsrc/data/writing.tsfor essays and build threadssrc/data/profile.tsfor about/profile copysrc/data/telemetry.tsfor telemetry copy and fallback mission content
Nereid is the lead project. Its public writing follows completed milestones: kickoff and protocol evidence first, runner and hackathon posts only after those behaviors are publicly verifiable.
The home page telemetry panel uses a small server-side integration with the official JPL Horizons API when available. It requests heliocentric vector snapshots for Earth, Voyager 2, Mars Odyssey, Psyche, and Europa Clipper, then renders those positions in the minimalist SVG mission visual.
- Live position data is labelled
Live JPL Horizons data; partial Horizons responses are labelledLive JPL Horizons data (partial). - DSN communication status, signal lines, stations, and signal times remain simulated.
mockTelemetryremains the fallback source if Horizons is unavailable, slow, or returns no mission positions.- NASA Open APIs were reviewed, but their key-based public datasets are better suited to imagery, Mars rover photos, DONKI, NeoWs, EPIC, and APOD than this mission-position view.
- DSN Now was reviewed as the official live DSN status product, but this project does not consume it because no stable documented JSON API is wired here.
- No environment variables are required for the current Horizons integration.
/home/projectsproject archive/projects/[slug]project case studies/writingwriting archive/writing/[slug]long-form writing entries/aboutbio and links/Tim_Finch_CV.pdfpublic CV asset/api/asklocal portfolio search endpoint/api/telemetrytelemetry feed with fallback content
npm install
npm run devOpen http://localhost:3000 in your browser.
Set NEXT_PUBLIC_SITE_URL in production so canonical URLs and generated social cards resolve to the public portfolio domain.
npm run dev
npm run lint
npm run build
npm run startThe site is designed for Vercel.
vercel
vercel --prod- The writing content is the source of truth for long-form editorial pages.
- The project archive is generated from local data, so new entries should keep slugs stable.
- Keep route and metadata changes in sync with the static content model.
- See
ARCHITECTURE.mdfor the system layout. - See
CONTRIBUTING.mdfor the workflow. - See
CHANGELOG.mdfor project updates.
MIT. See LICENSE.