Portfolio Site
Taylor Segell

- Published on
- { key: 'duration' }
- Ongoing
- { key: 'role' }
- Creator & maintainer
- { key: 'atmosphere' }
- Editorial and iterative
- { key: 'technology' }
- Next.js, MDX, Tailwind, Docker, VPS




Portfolio Site: a content-driven personal brand surface
This site is my public shopfront for data and AI work: portfolio case studies, long-form posts, services narrative, and a contact path that actually emails me. It is a full Next.js app, but the day-to-day authoring lives in Markdown under content/. Push copy, ship pages. No CMS dashboard to babysit.
Source lives on GitHub: github.com/taylorsegell/portfolio-tjs. Live at taylorsegell.com.

Challenge
A personal site has to do more than look sharp on day one. It needs to:
- Stay easy to update when a project ships or a post is ready
- Read as a credible professional surface without turning into a beige template
- Carry blog, projects, about, and contact without four separate stacks
- Deploy predictably to a VPS I control (not only a platform black box)
- Answer visitor questions without forcing them to hunt through every section
Static brochure sites go stale. Overbuilt CMSes slow you down. The brief was a maintainable hybrid: editorial UI, MDX content, and enough product surface (chat, forms, newsletter) to feel alive.
Solution
The architecture is intentionally boring in the best way:
- Content as the source of truth: YAML front matter plus MDX bodies under
content/;meta.layoutpicks the React layout - One catch-all route:
pages/[[...slug]].tsxresolves slug to file, parses sections, runs computed fields (collections, images, GitHub repos, tags) - Editorial UI: dark canvas, orange accent, display type for section titles, grid atmosphere, split-flap name treatment on home
- Ship path: Docker image, GitHub Actions deploy to a Hostinger VPS, nginx in front of
127.0.0.1:3000 - Ask Taylor: floating RAG-style chat grounded in résumé and project corpus (Anthropic), so visitors can ask instead of scroll forever
Implementation
How the pieces fit together:
- MDX pipeline: front matter and
---sectionblocks parse into layout props; computed fields hydrate collections and GitHub repository cards on the projects index. - Layouts and components: Home, About, Projects, Post, Blog, Contact, and friends compose domain UI from
components/with shared Reveal motion and editorial prose styles. - Design tokens: Tailwind v4 CSS-first theme (
globals.css) with oklch tokens, Bebas display, IBM Plex sans/mono. - Integrations: SendGrid for contact, ConvertKit for newsletter, Anthropic for Ask Taylor, GitHub API for open-source cards when
GITHUB_TOKENis set. - Ops: multi-stage Dockerfile (
output: 'standalone'), compose on the VPS, Actions SSH deploy onmain.
Key features
Split-flap home and navigation
- Intro sequence, then a compact split-flap
TAYLOR/SEGELLhero with resume and contact CTAs - Numbered top nav across Home, About, Specialties, Articles, Projects, Contact
- Ask Taylor parked bottom-right sitewide

Projects and writing
- Case studies from
content/projects/with tags, attributes, and image galleries - Open-source cards pulled from GitHub when the token is healthy
- Blog index with topic filters, featured covers, and newsletter signup

About and ops
- Skills grid, bio, and CTA on About
- Contact form and ConvertKit path for people who prefer human inbox over chat
- Docker + Actions so deploys are repeatable instead of “SSH and hope”

Results
What shipped is a site I can actually keep current:
- Content edits without a rebuild ritual in my head: add an MDX file, wire assets under
public/, done - One visual language across marketing pages, posts, and project write-ups
- A living assistant (Ask Taylor) for FAQ-style questions that used to bury people in scroll
- Ownership of hosting: VPS, Docker, nginx; secrets in env, not tribal knowledge
Try it
Live: taylorsegell.com
Repository: clone portfolio-tjs on GitHub, copy .env.example to .env, run pnpm install and pnpm dev (Node 20+).
Worth poking once it is up:
- Home split-flap intro, then the Ask Taylor chip
/projectsfor case studies and open-source cards/blogtopic filters and a post layout- Drop a new file under
content/projects/and watch the collection pick it up
This repo stays maintainer-owned: my brand surface, my content folder, my deploy path. Fork it if you want the same MDX-plus-layouts pattern without reinventing the router.
Stay tuned
Articles, links, and notes on data, AI, and building—roughly weekly in your inbox.