Senior Java Engineer & Solution Architect, Zug 🇨🇭. Banking-grade Java engineering, now bringing practical AI into regulated systems. Hub for the blog, lab, AI notes, CV, Janaka Academy and five products: nüchtern, Daily Momentum, Loop, BabyLoop and LeftHere, plus AssetCare, a live Java 25 + Spring Boot + Angular + Kubernetes reference application (assetcare.janaka.me, case study at /lab/assetcare/).
Plain HTML/CSS/JavaScript. No frameworks and no runtime dependencies — host it anywhere (GitHub Pages works as-is). Derived files (sitemap, feed, JSON-LD, llms.txt, /api/public/v1/) are generated by python3 scripts/build.py and committed.
| Path | Purpose |
|---|---|
index.html |
Main landing page. Assembles the sections below via data-include partials. |
partials/*.html |
Page sections (hero, experience, certifications, education, life journey, metrics, AI-assistant CTA, chat popup, contact/footer). |
resume/index.html (/resume/) |
Standalone one-page visual CV — the design source of truth. Self-contained, zero dependencies. |
assets/css/theme.css |
Shared design system (CSS custom properties, light/dark themes) extracted from the visual CV. |
assets/js/includes.js |
Tiny partial loader (fetch → fires partials:loaded). |
assets/js/i18n.js |
EN/DE translations (data-i18n keys; English is captured from the markup, German lives in the dictionary). |
assets/js/main.js |
Theme switch, language switch, tabs, collapsible work history, chat popup. |
partials/*.pdf |
Downloadable CV (EN) and Lebenslauf (DE). |
cv/print/index.html |
A4 print source for the CV PDF (scripts/export-cv-pdf.py); noindex, unlinked, intentionally print-styled. |
lab/assetcare/, academy/assetcare/, blog/posts/assetcare-idea-to-production.html, partials/featured-build.html |
AssetCare, the live Java 25 + Spring Boot + Angular + Kubernetes reference application (assetcare.janaka.me): case study, learning series, engineering article and the hub section. |
chatbot/ |
Python backend powering the AI assistant (deployed separately; the chat modal embeds the Hugging Face Space janaka2-claritybot.hf.space). |
- Theme: stored in
localStorageunderjp-theme(light/dark), defaults to the OS preference. Shared between the main page and the visual CV. - Language: stored under
jp-lang(en/de), defaults to the browser language (English otherwise). Shared between pages too. - Design tokens live at the top of
assets/css/theme.css(--bg,--bg2,--tx,--tx2,--ln,--ac,--ok,--chip,--shadow,--r). Use them instead of hard-coded colors.
The partials are loaded with fetch(), so open the site through a local server, not file://:
python3 -m http.server 8000
# then open http://localhost:8000/| What | Where |
|---|---|
| Engineering contract for people and coding agents | AGENTS.md (Claude Code: CLAUDE.md, .claude/) |
| Canonical facts (pages, profile, projects) | content/site.json, content/profile.json, content/projects.json |
| Regenerate everything | python3 scripts/build.py |
| Check everything (as CI does) | npm run check (validator + Node and Python tests; no dependencies) |
| Machine-readable views | /sitemap.xml, /feed.xml, /llms.txt, /api/public/v1/index.json |
| In-browser agent tools (WebMCP, progressive enhancement) | assets/js/agent/, docs/ai/webmcp.md |
| How it fits together | docs/architecture/site.md, docs/ai/discovery.md, docs/maintenance/claude-code.md |