ES

Project

Textual

Static blog of notes and essays ready for any thematic, generated with Astro and edited with its own local panel tool.


Objective

Textual is a personal blog of notes and essays, with multi-language support, focus on SEO, performance, low cost to operate, It's built with Astro, with no backend or database of its own: every article is stored as version-controlled Markdown and JSON directly in the repository. The project lives as a monorepo with two independent subprojects: Blog, available for the public and Panel, the authoring tool no requiered to be deployed to production.


How it works

  1. Writing in Panel Panel is a Vue frontend with a Node backend that runs locally only, against a checkout of the blog. It lets you create and edit articles using Markdown with available preview, also categories, labels, and authors.
  2. Commit and validation Changes are saved as version-controlled Markdown and JSON files in the repository. GitHub Actions validates the content on every push before continuing.
  3. Static deployment Astro builds the static site and GitHub Actions publishes it to S3 and CloudFront, invalidating the cache through a manifest shared between both subprojects.

Architecture

The repository separates the blog (Astro, version-controlled content, no server runtime) from the panel (Vue + Node, local only). Both subprojects manage their dependencies independently and coordinate CloudFront cache invalidation through a shared manifest whenever new content is published.


Stack

AstroVueNode.jsTypeScriptAWS S3CloudFrontGitHub Actions