Artem Sapegin’s sites monorepo

April 7, 2026 · View on GitHub

Node.js CI status Netlify Status

WordPress (2008) → Aegea (2012) → DocPad (2013) → Hexo (2015, unpublished) → Fledermaus (2015) → Gatsby (2018) → Astro (2023).

Architecture

Multi-site monorepo (single package, no workspaces) powered by Astro and Tailwind CSS v4. The active site is selected via the SITE env variable, which switches Astro’s srcDir.

Folder structure

src/
  sites/            — per-site source
    sapegin.me/
    morning.photos/
  shared/           — shared code
content/            — synced content (generated, do not edit directly)
public/             — static assets
scripts/            — build-time scripts (book sync, Squirrelsong sync)

Running locally

First clone the repo, install dependencies:

git clone https://github.com/sapegin/sapegin.me.git
cd sapegin.me
npm install

Per-site commands

npm run dev:sapegin
npm run build:sapegin
npm run dev:morning
npm run build:morning

Lint & test

npm run lint:js          # ESLint
npm run lint:text        # Textlint
npm test                 # Astro check → lint → prettier format

Sponsoring

Writing articles takes a lot of time and lots of coffee, buy me one more cup to keep it going.

Buy Me A Coffee

Authors and license

Artem Sapegin and contributors.

License: you can use the code (HTML/JS) of this site, but you can’t use the design, CSS, images, or content.