Personal website and writing home for Stefan Taitano.
Live site: www.stefantaitano.com
This repository powers a personal site built with Eleventy. It mixes long-form writing, a /now page, platform links, generated feeds, and a homepage that is slowly turning into a clearer home for projects, articles, and ongoing work. Stefan is an Army veteran turned ServiceNow consultant, getting deeper into Ruby and slowly training for a 2027 marathon.
- Personal website
- Article archive
/nowpage- Lightweight portfolio-in-progress
- Home for experiments that do not fit cleanly on social platforms
Phase 1is done: crawling, metadata, social preview cleanup, and stale-reference cleanup.Phase 2is done: the homepage rewrite, clearer navigation, and a stronger/nowpath are live.- Branding is done: slate + amber color scheme, ST monogram logo, favicons, and a real profile photo on the homepage.
- The article archive has real content: three Medium articles ported and one site-native post published.
- The
/nowpage uses dated Markdown entries, shows the latest update first, and pulls live Lichess stats at build time. - The biggest remaining product work is turning temporary sections into real destinations and tightening content flow.
- Eleventy as the static site generator
- Nunjucks, Markdown, and data files for content and templates
- Tailwind-based styling plus local CSS layers
- Netlify for deployment
- Generated Atom and JSON feeds
- Generated Open Graph assets and image optimization
- Accessibility checks available through
pa11y
- Node
>=20
npm installnpm startnpm run buildnpm run test:a11yThe site is configured for Netlify.
- Build command:
npm run build - Publish directory:
dist - Security headers are defined in
netlify.toml
The canonical site URL comes from src/_data/meta.js and defaults to:
https://www.stefantaitano.comIf needed, you can override it with the URL environment variable.
src/
_data/ Site metadata, navigation, personal links, external data
_includes/ Reusable partials and head templates
_layouts/ Base, page, post, and tag layouts
_config/ Eleventy config, filters, shortcodes, events, setup scripts
pages/ Standalone pages like home, now, privacy, accessibility
posts/ Blog posts and article content
common/ Feeds, redirects, sitemap, robots, manifest, misc outputs
assets/ CSS, JS, SVG, imagessrc/pages/index.njk: homepage and current preview sectionssrc/pages/now.njk: current/nowpagesrc/pages/articles.njk: article index and paginationsrc/_layouts/post.njk: post layout, newsletter CTA insertion, edit linksrc/_data/meta.js: site URL, metadata, feeds, theme, and testing configsrc/_data/navigation.js: top and bottom navigation linkssrc/_data/personal.yaml: personal links and profile/platform datasrc/_includes/partials/newsletter-cta.njk: current Field Notes CTAnetlify.toml: deployment and security header config
- Create a new Markdown file in
src/posts/ - Add front matter such as
title,description, anddate - Add one or two hand-picked internal links under
relatedso the article suggests a useful next read - Optionally include hero image metadata if the post needs it
- Run
npm startornpm run buildto verify output
related:
- title: A related article title
url: /articles/related-article/- Standalone pages live in
src/pages/ - Shared metadata and links live in
src/_data/ - Reusable UI pieces live in
src/_includes/partials/ - Check
docs/site-voice.mdbefore writing headings, introductions, project summaries, or calls to action
- Lichess data is pulled through
src/_data/lichess.js - Feed outputs are generated through
src/common/feed-atom.njkandsrc/common/feed-json.njk robots.txt,_redirects, andsitemap.xmlare generated fromsrc/common/
- Personalized the Eleventy Excellent starter into a custom personal site
- Rewrote the homepage with hero copy, profile photo, trail cards, and recent articles
- Built a
/nowpage with live Lichess stats pulled at build time - Ported three Medium articles and published one site-native post
- Applied slate + amber branding, ST monogram logo, and regenerated favicons
- Cleaned up stale starter content, demo posts, and unused data files
- Replaced the starter README with a project-specific one
The next meaningful improvements are:
Fix the legal/imprint data pathDone: rewritten as a lightweight legal notice with email contactReplace the default Open Graph imageDone: subtitle updated, 11ty logo replaced with ST monogram on per-post cardsBuild a dedicated Projects pageDone: data-driven via projects.yaml, live at /projects/Replace the interim Field Notes email CTADone: links to the Buttondown publicationSwap default fonts for something that fits the brandDone: Fraunces for headings, Atkinson Hyperlegible kept for bodyDecide whether to add supporting pages likeDone: Colophon live at /colophon/, Bookshelf live at /bookshelf/, Uses skippedBookshelf,Uses, andColophonAdd end-of-article cross-links so each post suggests the next clickDone: articles now use curatedrelatedlinks- Evaluate privacy-friendly analytics (deprioritized; currently no analytics by choice)
- Fix the legal/imprint data path
- Replace the default Open Graph image
- Build a dedicated
Projectspage - Replace the temporary
Field Notesemail CTA with a real signup destination - Swap fonts (Fraunces display, Atkinson Hyperlegible body)
- Add optional supporting pages (Colophon and Bookshelf live; Uses skipped)
- Add article cross-links or related-post navigation
- Evaluate privacy-friendly analytics (deprioritized)
This site started from the Eleventy Excellent starter, but it has been steadily reshaped into a personal site with custom homepage content, a custom /now page, personal metadata, feed configuration, and project-specific content structure.
If you are browsing because you are interested in the site itself, the best places to start are:
src/pages/index.njksrc/pages/now.njksrc/_data/meta.jssrc/_layouts/post.njk
- Built on top of Eleventy Excellent by Lene Saile
- Inspired by the broader Eleventy, accessibility, and build-excellent-websites community