My personal website
https://zarantonello.dev/
- Astro 86.7%
- TypeScript 7.4%
- Dockerfile 5.1%
- CSS 0.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
release.yaml / Generate next release tag (push) Successful in 2s
|
||
| .devcontainer | ||
| .forgejo | ||
| kubernetes | ||
| public | ||
| src | ||
| .dockerignore | ||
| .gitignore | ||
| .releaserc.json | ||
| .renovaterc.jsonc | ||
| .yamllint.yml | ||
| AGENTS.md | ||
| astro.config.ts | ||
| biome.jsonc | ||
| Caddyfile | ||
| Dockerfile | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| tsconfig.json | ||
Website
This is my personal website: a static site built with Astro, and Tailwind CSS.
The site is deployed with Fluxcd to a Kubernetes cluster, and is served by Caddy.
Available scripts
| Script | Description |
|---|---|
pnpm dev |
Start the Astro dev server |
pnpm build |
Build the static site into dist/ |
pnpm check |
Run astro check (types + syntax) |
pnpm clean |
Remove .pnpm-store, .astro/, dist/ and node_modules/ |
pnpm format:check |
Check formatting with Biome |
pnpm format:fix |
Fix formatting with Biome |
pnpm lint:check |
Lint with Biome |
pnpm lint:fix |
Fix lint issues with Biome |
Project structure
.
├── .devcontainer/ # Dev container definition (ci-pnpm image)
├── .forgejo/workflows/ # Forgejo Actions CI/CD pipelines
├── kubernetes/ # Kustomize manifests deployed with Fluxcd
├── public/
│ ├── favicon/ # Site favicons (png, svg, ico)
│ ├── og.png # Open Graph image
│ └── robots.txt
├── src/
│ ├── fonts/jetbrains-mono/ # Self-hosted WOFF2 font variants
│ ├── layouts/
│ │ ├── Link.astro # Reusable link component (primary/secondary)
│ │ └── Page.astro # Base layout: metadata, OG tags, Umami script
│ ├── pages/
│ │ ├── 404.astro # Error page
│ │ └── index.astro # Homepage content
│ └── styles/tailwind.css # Tailwind entry + font theme
├── astro.config.ts # Astro config (site URL, fonts, integrations)
├── Caddyfile # Static file server config for the container
├── Dockerfile # Multi-stage build → Caddy runtime image
└── biome.jsonc # Biome formatter/linter config
Deployment
The container image is deployed to the Kubernetes cluster via Fluxcd using the Kustomize configuration, which includes:
deployments/website.yaml— Deployment (non-root, read-only rootfs, pinned image digest)services/website.yaml— internal Servicehttp-routes/default.yaml— Gateway API HTTPRoute onzarantonello.devhttp-routes/redirects.yaml— 308 redirects fromwww.zarantonello.dev,zarantonello.netandwww.zarantonello.net
License
MIT