makiolaj ff3c0fa437 Point sources at Codeberg, add the Play button, refresh descriptions
Codeberg is where the apps live now, so the source link, its icon and the
release lookup follow. Forgejo serves Gitea's /api/v1, so the version badge
keeps working — with a fallback to the newest pre-release, since a pre-1.0
app publishes nothing else (Agendula showed a stale v0.2.0 before).

Calendula is on Google Play as well as F-Droid; adds a tonal button for it,
and its fifteen community translations replace "German and English".

Agendula's entry described the app it stopped being: it now carries its own
VTODO store, with an external provider as a choice rather than a requirement,
plus export and its own CalDAV sync in progress. floret-kit's modules have
grown past core-time. Footer forge link and the /uses infrastructure list
separate the two roles: Codeberg for source, self-hosted Gitea for builds.
2026-09-09 16:09:30 +02:00

jeanlucmakiola.de

Personal website + blog. Built with Astro, deployed on self-hosted Coolify, analytics via self-hosted Umami.

See PLANNING.md for the decisions and roadmap.

Develop

npm install
npm run dev      # http://localhost:4321
npm run build    # output -> dist/
npm run preview  # serve the built site locally

Writing a post

Create a Markdown file in src/content/blog/, e.g. my-post.md:

---
title: My post
description: One-line summary (used for SEO + RSS).
pubDate: 2026-06-28
tags: [notes]
draft: false        # set true to hide from listings/feeds
---

Body in Markdown.

The filename (minus extension) becomes the URL slug: /blog/my-post/. Commit + push → Coolify rebuilds → live.

Analytics (Umami)

Analytics is off unless these env vars are set (so it stays off in dev). Set them as build-time variables in Coolify:

Variable Value
PUBLIC_UMAMI_SRC https://<your-umami>/script.js
PUBLIC_UMAMI_WEBSITE the website id (UUID) from Umami

Deploy on Coolify

This repo ships a multi-stage Dockerfile (build with Node → serve dist/ with Caddy on port 80).

  1. New Resource → Dockerfile (or auto-detect), point at this repo.
  2. Set the two PUBLIC_UMAMI_* build variables.
  3. Set the domain to jeanlucmakiola.de; Coolify provisions HTTPS.
  4. Deploy Umami separately (Coolify has a one-click Umami template), then copy its script URL + website id into the build variables above.

SEO

  • Sitemap at /sitemap-index.xml (via @astrojs/sitemap)
  • RSS at /rss.xml
  • Canonical URLs + Open Graph/Twitter tags in src/components/BaseHead.astro
  • robots.txt in public/
  • Add an og-default.png (1200×630) to public/ for link previews.
S
Description
Personal website & blog — Astro + Material 3 Expressive
Readme
333 KiB
Languages
Astro 43.4%
CSS 38.9%
JavaScript 8.6%
TypeScript 7.5%
Dockerfile 1.6%