| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
The index site for my data-visualization side projects. Each card on the homepage links to a standalone app that lives in its own repo and deploys independently to GitHub Pages. This repo is just the front door.
Built with Astro and deployed as a GitHub Pages User Site (DrewHoo/DrewHoo.github.io), with a custom domain.
Create src/content/projects/<slug>.md.
Fill in the frontmatter (see src/content.config.ts for the schema):
---
title: My New Thing
blurb: A short description (max 280 chars).
liveUrl: https://drewhoo.github.io/my-new-thing/
repoUrl: https://github.com/DrewHoo/my-new-thing
stack:
- React
- D3
pinned: false
order: 10 # higher = earlier in the list
updated: 2026-04-19
---Optionally add an MDX body under the frontmatter for a longer writeup — it will render at /projects/<slug>/.
git push. The GitHub Action rebuilds and redeploys.
Blog posts live in Hashnode and are fetched at build time via their GraphQL API (gql.hashnode.com) — no migration, no local markdown files. Keep writing in the Hashnode editor; the next build/deploy picks up changes.
npm install
npm run dev # localhost:4321
npm run build
npm run previewApex (drewhoover.com) — four A records to GitHub Pages' IPs:
185.199.108.153 185.199.109.153 185.199.110.153 185.199.111.153
www — CNAME → drewhoo.github.io.
Any other repo owned by DrewHoo that has Pages enabled is automatically served under this domain as drewhoover.com/<repo-name>/. No per-project DNS needed. So DrewHoo/space-rock appears at drewhoover.com/space-rock/ as soon as drewhoover.com is the custom domain on the User Site repo.
The IndexNow key lives at public/<key>.txt and is duplicated in scripts/indexnow.mjs. It is public by design — serving the key back from the site root is the ownership proof — so it is not a secret and there is nothing to configure in GitHub. Rotating it means changing the filename and the KEY constant together.
To resubmit every URL (seeding a newly registered engine, or a template change that rewrote every page), run the workflow manually from the Actions tab with Also resubmit every sitemap URL to IndexNow checked. Don't wire that into the push path: repeatedly submitting unchanged URLs is what the protocol asks you not to do.
public/embed/back-bar.js is a ~50-line standalone script that any project site can include to add a sticky top strip linking home. To wire it up in a sibling repo (e.g. cfb-all-time-records), add this to the project's HTML head:
<script src="https://drewhoover.com/embed/back-bar.js" async></script>To opt out on a specific page, add data-dhv-back-bar="off" to the <html> or <body> tag.
The actual integration in DrewHoo/cfb-all-time-records and DrewHoo/space-rock is a follow-up task in those repos; this repo only ships the snippet.
public/embed/giscus.js mounts a giscus comment thread on any sibling site. Comments are stored in this repo's GitHub Discussions (category: Comments), so moderation happens in one place regardless of which project a visitor comments on. Threads are keyed by pathname, so drewhoover.com/space-rock/ and drewhoover.com/cfb-all-time-records/ each get their own.
Usage in a sibling repo's HTML:
<script src="https://drewhoover.com/embed/giscus.js" async></script>Placement: if the page includes <div id="comments">, the widget mounts there. Otherwise it appends to the bottom of <body>. Opt out per-page with data-dhv-giscus="off" on <html> or <body>.
Theme follows prefers-color-scheme to match the rest of the ecosystem. Requires Discussions enabled on DrewHoo/DrewHoo.github.io and the giscus GitHub app installed on it.
src/
components/ ProjectCard, ProjectGrid, Divider, Header, Footer, BaseHead, ...
content/
projects/ One markdown file per project card.
loaders/
hashnode.ts Custom Astro content loader — pulls blog posts from Hashnode's GraphQL API at build time.
layouts/ BlogPost layout.
pages/
index.astro Post index (the front page). /blog redirects here.
about.astro
projects/index.astro Card grid.
blog/[...slug].astro Single post.
projects/[...slug].astro Per-project detail/writeup page.
rss.xml.js Blog RSS feed.
styles/global.css One hand-written stylesheet.
public/
CNAME, favicon.svg, fonts/, embed/back-bar.js, embed/giscus.js
MIT (see LICENSE when added). Content (blog posts, project writeups) © Drew Hoover.
| Back | FazBrowse Home | New Git URL |