A personal blogging system built with Astro, designed for raw logs, polished essays, and long-running projects.
- Framework: Astro 4.0
- Content: Markdown + Frontmatter
- Styling: Tailwind CSS + Typography
- Deployment: Vercel (recommended)
- Comments: Giscus (GitHub Discussions)
Located in src/content/logs/.
Frontmatter:
type: log
log_number: 1
date: 2024-01-01T12:00:00Z
tags: [tag1, tag2]
published: true
project: optional-project-idLocated in src/content/articles/.
Frontmatter:
type: article
title: "My Blog Post"
description: "Description for SEO"
date: 2024-01-01
tags: [tag1, tag2]
published: true
project: optional-project-idLocated in src/content/projects/[slug].md.
Format:
---
title: "Project Name"
status: "active"
tags: ["tag1"]
match_tags: ["tag1"]
---
Description goes here...This project is designed to work with Obsidian for content editing and Syncthing for syncing content across devices.
- The
src/contentdirectory is structured to be opened as an Obsidian vault. - Wikilinks: Supported by the system (e.g.,
[[My Link]]maps to/articles/my-link/). - Frontmatter: Standard Obsidian YAML frontmatter is used.
- Ignored Files: Obsidian config files (
.obsidian,.stfolder, etc.) are ignored by Git but synced via Syncthing.
- Sync the
src/contentfolder across your devices using Syncthing. - This allows you to write on mobile/tablet using Obsidian and have changes appear in this repo automatically.
To keep the repository in sync with your Obsidian edits without manual commits, use the included auto-sync scripts:
-
Setup:
./scripts/setup-service.sh
This installs a systemd service that monitors file changes.
-
Manual Start/Stop:
./scripts/start-sync.sh ./scripts/stop-sync.sh
The watcher (scripts/git-watcher.js) will:
- Monitor key directories (
logs,articles,projects). - Auto-commit changes with a descriptive message.
- Auto-push to the remote repository.
-
Install dependencies:
npm install
-
Start development server:
npm run dev
-
Build for production:
npm run build
To enable comments on logs and articles:
- Navigate to giscus.app.
- Enter your repository details (it must be public).
- Scroll to the "Enable giscus" section to generate the script.
- Copy the
data-repo,data-repo-id, anddata-category-id. - Open
src/components/Giscus.astroand replace the placeholders with your values.
To enable deployments, push the repository to GitHub and import it into Vercel.
Update site in astro.config.mjs with your production URL to ensure Sitemap/RSS work correctly.
- Push this repository to GitHub.
- Log in to Vercel and "Add New Project".
- Select this repository.
- Vercel will auto-detect Astro.
- Click Deploy.
MIT