Kunthawat Greethong 49725b2fd0 refactor: move data.db and uploads to storage/ folder
- Changed database path to ./storage/data.db
- Changed uploads path to ./storage/uploads
- Updated Dockerfile to create storage/uploads dir (not uploads)
- Updated entrypoint.sh to check /app/storage/data.db
- Removed COPY of uploads from builder to runner

Now all persistent data is in /app/storage/:
- /app/storage/data.db (SQLite database)
- /app/storage/uploads/ (uploaded media)

Easypanel mount: emdash-storage → /app/storage

To update EmDash: change version in package.json → push → redeploy

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-02 10:24:03 +07:00
2026-04-29 12:41:59 +07:00
2026-04-29 12:41:59 +07:00
2026-04-29 12:41:59 +07:00

EmDash Blog Template

A clean, minimal blog built with EmDash. Runs on any Node.js server with SQLite and local file storage.

Blog template homepage

What's Included

  • Featured post hero on the homepage
  • Post archive with reading time estimates
  • Category and tag archives
  • Full-text search
  • RSS feed
  • SEO metadata and JSON-LD
  • Dark/light mode
  • Audit log plugin

Pages

Page Route
Homepage /
All posts /posts
Single post /posts/:slug
Category archive /category/:slug
Tag archive /tag/:slug
Search /search
Static pages /pages/:slug
404 fallback

Screenshots

Desktop Mobile
Light homepage light desktop homepage light mobile
Dark homepage dark desktop homepage dark mobile

Infrastructure

  • Runtime: Node.js
  • Database: SQLite (local file)
  • Storage: Local filesystem
  • Framework: Astro with @astrojs/node

Getting Started

pnpm install
pnpm bootstrap
pnpm dev

Open http://localhost:4321 for the site and http://localhost:4321/_emdash/admin for the CMS.

Want Cloudflare Instead?

See the Cloudflare variant for a version that deploys to Cloudflare Workers with D1 and R2.

Deploy to Cloudflare

See Also

Description
No description provided
Readme 672 KiB
Languages
Astro 86.6%
TypeScript 5.6%
CSS 3.1%
Dockerfile 2.8%
JavaScript 1%
Other 0.9%