A visual portfolio for showcasing creative work, built with EmDash. Runs on any Node.js server with SQLite and local file storage. Project pages with tag filtering, case study layouts, and an RSS feed for new work.
- Project grid with hover effects
- Tag-based filtering on the work page
- Individual project pages with galleries
- About and contact pages
- RSS feed for new projects
- SEO metadata and JSON-LD
- Dark/light mode
| Page | Route |
|---|---|
| Homepage | / |
| Work listing | /work |
| Single project | /work/:slug |
| About | /about |
| Contact | /contact |
| RSS | /rss.xml |
| 404 | fallback |
| Desktop | Mobile | |
|---|---|---|
| Light | ![]() |
![]() |
| Dark | ![]() |
![]() |
- Runtime: Node.js
- Database: SQLite (local file)
- Storage: Local filesystem
- Framework: Astro with
@astrojs/node
pnpm install
pnpm bootstrap
pnpm devOpen http://localhost:4321 for the site and http://localhost:4321/_emdash/admin for the CMS.
See the Cloudflare variant for a version that deploys to Cloudflare Workers with D1 and R2.



