My personal blog built with Gleam and Lustre, powered by Blogatto.
Previously built with Gatsby, now migrated to a fully static site generated with Gleam/OTP.
| Technology | Purpose |
|---|---|
| Gleam | Programming language (compiles to Erlang/OTP) |
| Lustre | UI component framework |
| Blogatto | Blog engine / static site generator |
| Tailwind CSS | Styling |
| Vercel | Hosting |
blog.veeso.dev/
├── src/blog/ # Gleam source code
│ ├── blog.gleam # Entry point & Blogatto configuration
│ ├── components/ # Reusable UI components
│ ├── pages/ # Homepage and blog listing pages
│ └── template/ # Page template, topbar, footer
├── blog/ # Markdown posts (with frontmatter)
├── assets/ # CSS source (Tailwind input)
├── static/ # Static files (favicon, avatar, OG image)
└── dist/ # Generated output (after build)- Gleam >= 1.14.0
- Erlang/OTP >= 28
- Docker (for local preview)
- just (optional task runner)
gleam run # Build the static site into ./dist
gleam test # Run tests
gleam format # Format code
just dev # Build + start local Nginx server on port 3000The site is deployed to Vercel via GitHub Actions:
- Push to
main: production deployment - Pull requests: preview deployment
- Code: MIT
- Content: CC-BY-NC-ND-4.0
- A Blog in Gleam
- blogatto: A blog engine in Gleam
- glailglind: Tailwind CSS installer for Gleam
- webls: Sitemaps, robots and RSS feed for Websites