Files
jeanlucmakiola.de/README.md
Jean-Luc Makiola 074199c656 Initial site: Astro + M3 Expressive, projects, blog
Personal site & blog for jeanlucmakiola.de.

- Astro 7 static output; self-hosted Inter + JetBrains Mono (Fontsource)
- Material 3 Expressive design tokens (red accent over neutral surfaces)
- Home (hero + about + selected work + latest writing)
- /work index + per-app pages (Calendula, Agendula, floret-kit) with
  build-time Gitea release tags, brand-icon link rows, features grid,
  and an at-a-glance facts panel
- Blog via Markdown content collection; RSS, sitemap, robots, OG/SEO
- Privacy-respecting Umami analytics, env-gated (off in dev)
- Dockerfile (build -> Caddy) + Caddyfile for Coolify deploy

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 13:39:08 +02:00

65 lines
1.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# jeanlucmakiola.de
Personal website + blog. Built with [Astro](https://astro.build), deployed on
self-hosted [Coolify](https://coolify.io), analytics via self-hosted
[Umami](https://umami.is).
See [PLANNING.md](./PLANNING.md) for the decisions and roadmap.
## Develop
```sh
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`:
```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.