Blog

this Blog is a bilingual personal blog and project portfolio. English and Persian content live in Markdown files, while Node 24 and TypeScript generate the deployable static site.

Static by design

The site keeps its delivery model small: no database, server application, CMS, or frontend framework. The repository is the source of truth. A build turns content and editable HTML templates into the dist/ directory, which any static host can serve.

Content and language pairing

Posts and project entries live in language-specific directories. Matching English and Persian files share a translationOf value, so the language selector stays on the equivalent page when a translation exists.

The generator produces language homes, post and project indexes and detail pages, category and tag pages, standalone pages, redirects, localized 404 pages, robots.txt, and a sitemap.

Built for straightforward authoring

Markdown supports GitHub Flavored Markdown, including tables, task lists, links, and fenced code. Mermaid fences become static SVG files during the build, so published pages do not ship a Mermaid browser runtime.

The shared layout uses editable HTML templates and small placeholder replacement. Bootstrap is bundled locally, Persian pages use Vazir with RTL output, and native browser features cover simple interactions such as the category menu and theme preference.

Checks and delivery

The project runs formatting, linting, tests, and a production build locally and in GitHub Actions. A pushed v* tag deploys the generated dist/ output to Hosting service.