A fast, static technical blog for the Sakar Labs team — weekly posts on software and AI. Built with Astro, served as static files by nginx.
-
Create
src/content/blog/<your-slug>.md:--- title: "Your Post Title" description: "One-sentence summary shown on the home page." publishDate: 2026-07-08 author: ishan # must match a file in src/content/authors/ tags: [AI, Performance] draft: false # set true to keep it out of the build --- Your post in Markdown. Fenced code blocks are highlighted automatically.
-
Add yourself as an author once —
src/content/authors/<you>.md:--- name: "Your Name" role: "Your Role" --- One-paragraph bio.
-
Commit and open a PR (or push). A bad post (missing field, unknown author) fails the build, so broken posts never ship.
The site has these pages: home (latest posts), individual post pages,
/tags and /tags/<tag>, and /authors/<id>.
npm install
npm run dev # http://localhost:4321
npm run build # outputs the static site to dist/
npm run preview # serve the production build locallydocker compose up -d --build # builds and serves on http://localhost:3060
docker compose down # stop and remove the containerThe mapped port lives in docker-compose.yml (3060:80). Change the left number
to serve on a different host port.
docker build -t sakarlabs-blog .
docker run -d -p 80:80 --restart unless-stopped --name sakarlabs-blog sakarlabs-blogTo redeploy after new posts land:
git pull
docker build -t sakarlabs-blog .
docker rm -f sakarlabs-blog
docker run -d -p 80:80 --restart unless-stopped --name sakarlabs-blog sakarlabs-blogThe image is a two-stage build: node:lts-alpine compiles the site, then
nginx:alpine serves the static output (final image ~30–50 MB, no Node at runtime).
v1 serves plain HTTP on port 80. To add HTTPS, put a reverse proxy in front (Caddy with automatic Let's Encrypt, or nginx + certbot) terminating TLS and forwarding to this container. Not included in v1.
Easy to add later: RSS feed, dark mode, full-text search, comments, newsletter signup, and pagination.
Astro 5 · Shiki (build-time syntax highlighting) · nginx · Docker
Design spec and implementation plan live in docs/superpowers/.