Vision
edihasaj.com is the personal blog and portfolio of Edi Hasaj — writing on software, AI, and thinking, plus an apps/projects list. It is a static site built with Jekyll 4 (kramdown Markdown, Sass, Liquid templating), authored primarily in Markdown and published from an Obsidian-based workflow, with light/dark theming and machine-readable SEO surfaces (sitemap, RSS/Atom, robots.txt, agents.txt, llms.txt, JSON-LD). The guiding constraint: fast, content-first, and durable — a static site with no framework bloat, where content and discoverability come first.
In Scope
- Blog posts (
posts/_posts/, Markdown + front matter), drafts (_drafts), and guides collection. - Topic hub pages (
_pages/topics/,layout: topicwithtopic_tags) and standard pages (_pages/). - Apps/projects list sourced from
_data/projects.yml, synced to the profile README viabin/gen-readme.js. - Site UX: layouts (
_layouts/), includes (_includes/), navigation, header/footer, light/dark theme toggle. - Styling via Sass partials (
_sass/) usingvar(--theme-*)CSS variables for both themes. - Performance: static output, compressed Sass, minimal JS (
js/app.js). - SEO / crawler discovery:
sitemap.xml,atom.xml/feed.xml,robots.txt,agents.txt,llms.txt,_includes/seo-jsonld.html. - Accessibility and readability across light and dark modes.
- Build tooling: Jekyll build/serve (
bundle,bin/serve,bin/setup),_config.yml, redirects (jekyll-redirect-from). - The Obsidian publisher regex tooling and its test (
obsidian_regex_publisher.test.js,bin/test-obsidian-regex).
Out of Scope
- Backend services, databases, or server-side application code (site is fully static).
- Non-static frameworks (Next/Astro/React app rewrites) or swapping the static-site generator.
- Third-party account/dashboard config (Disqus account, analytics provider setup, social profiles).
- Content in other repos except the generated profile README sync target.
- Paid/gated content, auth, or user accounts.
Merge by Default
- Typo, grammar, formatting, and factual-link fixes in existing posts and pages.
- Styling, layout, and Sass fixes; theme-token (
var(--theme-*)) corrections for light/dark parity. - Performance improvements (asset optimization, image compression, reducing JS, Sass cleanup).
- Accessibility fixes (alt text, contrast, semantic markup, focus states).
- SEO/metadata upkeep: sitemap, feed, JSON-LD,
robots.txt,agents.txt,llms.txtcorrections. - Scaffolding new posts (empty/draft front matter, file naming, image folders) without authoring opinions.
- Editing
_data/projects.ymlfor accurate project metadata and re-runningbin/gen-readme.jsto keep README in sync (--checkpasses). - Dependency bumps in
Gemfile/ npm devDeps that keep the build green and tests passing (jest). - Build/config fixes that keep
jekyll buildand local serve working.
Needs Sign-Off
- Publishing NEW written content or opinions under Edi’s name (blog posts, guides, “about” copy, project descriptions carrying a point of view).
- Marking a post
published: true/ promoting a draft to live. - Visual redesigns, new layouts, or brand/typography changes.
- Domain,
CNAME, or deploy/hosting changes (Netlify vs GitHub Pages, plugin whitelist implications). - Adding or changing analytics/tracking, comments provider, or any third-party scripts.
- Changing the public agent/crawler policy (
agents.txt,robots.txtallow/deny rules). - Adding new plugins or major structural changes to
_config.yml(permalinks, collections, pagination).
Roadmap
Short-term
- Keep SEO surfaces (sitemap,
llms.txt,agents.txt, JSON-LD) consistent as posts and topics are added. - Ensure
_data/projects.ymland the generated profile README stay in sync (gen-readme.js --check). - Verify light/dark theme parity for any new surfaces via
var(--theme-*)tokens. - Address the known GitHub Pages /
jekyll-taggingwhitelist limitation via the Netlify deploy path.
Long-term
- Grow the writing catalog across the core topic hubs (AI agents, MCP, open source, security, software).
- Strengthen static-site performance and Core Web Vitals without adding framework bloat.
- Improve machine-readability for AI/search crawlers as citation and agentic-reading conventions evolve.
- Streamline the Obsidian-to-Jekyll publishing pipeline and its regex tooling.