Skip to content

indiethinkers/human-language-model

Repository files navigation

Indie Thinkers

Indie Thinkers is a static Astro site for publishing essays as open source artifacts. The site has a minimal quote-led homepage, an essay archive, author profiles, RSS, sitemap generation, local fonts, and custom presentation details for media-rich essays.

The public writing routes live under /essays. The content collection is still named blog internally, but public URLs, navigation, and reader-facing copy use essays.

Requirements

  • Node.js >=22.12.0
  • Bun, matching the checked-in bun.lock

Development

Install dependencies.

bun install

Start the local dev server.

bun run dev

Build the production site.

bun run build

Preview the production build.

bun run preview

Current Site

  • / renders essay quotes with a typewriter effect. Quotes come from each essay's quote frontmatter and link to the corresponding essay.
  • /essays lists essays newest first.
  • /essays/:slug renders Markdown or MDX entries from src/content/blog/ through src/layouts/EssayPost.astro.
  • /authors/:slug renders author profiles and that author's essays.
  • /rss.xml exposes the essay feed.
  • /sitemap-index.xml is generated by the Astro sitemap integration.
  • /about still exists as a starter-style placeholder page and is not part of the primary reading flow.

The homepage shows the oldest quote first and enables the spacebar or a double tap to cycle through additional essays when more than one essay exists.

Content

Essays live in src/content/blog/ and are loaded by the collection defined in src/content.config.ts.

Required frontmatter:

title: 'The essay title'
description: 'Short metadata description'
quote: 'Homepage quote for this essay'
pubDate: 'June 1, 2026'

Optional frontmatter:

deck: 'Short deck shown below the essay title'
author: 'Daniel Hunter'
authorSlug: 'daniel-hunter'
updatedDate: 'June 2, 2026'
heroImage: '../../assets/path/to/image.png'
socialImage: '/media/path/to/og-image.png'

Notes:

  • New author profiles are added in src/data/authors.ts.
  • Source images imported by Astro should live under src/assets/.
  • Static public media should live under public/media/.
  • Essay detail pages automatically open external links in a new tab with noopener noreferrer.
  • The current published essay is src/content/blog/the-internet-in-multiplayer-mode.md.

Design And Assets

  • src/pages/index.astro, src/pages/essays/index.astro, and src/pages/authors/[slug].astro share the fixed-corner, Shiny Dimes-inspired visual shell.
  • src/layouts/EssayPost.astro owns the essay reading layout and custom interaction scripts for rich essay sections.
  • src/components/BaseHead.astro owns shared metadata, canonical URLs, favicon tags, RSS discovery, sitemap discovery, and font preloads.
  • Atkinson is configured through Astro's local font provider from src/assets/fonts/.
  • Geist and Geist Mono are served from public/fonts/.
  • Favicons and the web manifest live in public/.

Project Structure

src/
  assets/              Local images and fonts processed by Astro
  components/          Shared Astro components
  content/blog/        Essay Markdown and MDX entries
  data/authors.ts      Author metadata
  layouts/             BlogPost and EssayPost layouts
  pages/               Astro routes
  styles/global.css    Shared global styles
public/
  fonts/               Public Geist font files
  media/               Public essay media

Deployment

The site is configured for https://indiethinkers.com in astro.config.mjs, uses file-format static builds, and is ready for Vercel. vercel.json enables clean URLs and disables trailing slashes.

Links

  • Production site: https://indiethinkers.com
  • Essays: /essays
  • RSS: /rss.xml
  • Submit: https://indiethinkers.dfos.com/
  • Subscribe: http://indiethinkers.substack.com/subscribe
  • Contribution guide: CONTRIBUTING.md

About

A human language model.

Topics

Resources

License

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Sponsor this project

Packages

 
 
 

Contributors