The Framna developer blog — tech articles by and for developers, built with Eleventy.
Read it live: https://geekbites.move4mobile.io
Requires Node.js — the version is pinned in .nvmrc; run nvm use (nvm) to switch to it.
git clone git@github.com:move-frontend/geekbites.git
cd geekbites
nvm use
npm ci
npm run startThe dev server runs at http://localhost:8080 with live reload.
-
Create a Markdown file in
src/posts/, namedYYYY-MM-DD-your-title.md. -
Add front matter:
--- title: 'Your post title' category: ai-tools tags: comma, separated, tags author: michael min_read: 5 date: 2026-07-05 permalink: /2026/07/05/your-title/ ---
-
The
authorkey must match an entry insrc/_data/people.json— add yourself there if this is your first post. -
Open a pull request. Every PR automatically gets a Firebase preview channel so reviewers can read your post on a live URL.
| Script | Description |
|---|---|
npm run start |
Dev server with live reload (cleans dist/ first) |
npm run build |
Production build to dist/ |
npm run check-broken-links |
Check internal + external links in the built site |
npm run check-broken-links:internal |
Internal links only (fast — also runs in CI) |
npm run check-broken-links:external |
External links only (slow) |
src/
├── posts/ # Blog posts (Markdown)
├── _includes/layouts/ # Nunjucks templates
├── _sass/ # Sass stylesheets
├── _data/ # Site config + author data
└── assets/ # Images and icons
eleventy.config.js # Eleventy configuration (ESM)
firebase.json # Firebase Hosting config
This repo uses trunk-based development:
- Branch off
main, open a PR againstmain(one approving review required). - Commits follow Conventional Commits — semantic-release derives versions and release notes from them (commitlint is configured; local hook enforcement is not currently wired up on fresh clones).
- Every merge to
maindeploys automatically to production. - Releases are fully automated by semantic-release: a
feat:orfix:merge produces a GitHub Release with generated notes. Never tag or bump versions manually. Release notes live on the Releases page (CHANGELOG.mdis frozen). - Dependencies are managed by Dependabot (weekly, grouped).