Skip to content

Repository files navigation

Overview

This is my personal website project. It is built using Astro and hosted as a monolithic container on Scaleway Cloud. Go and check it out at https://clowa.dev.

Repository Structure

  • swa/ — Frontend code of the website (Astro)
  • api/ — Go backend service (serves /api/*, e.g. GET /api/quote)
  • docker/ - Configuration of the monolithic docker container

Getting Started

Open in GitHub Codespaces

To run the project locally, make sure you have Node.js installed — or simply use the provided DevContainer.

For simplicity you can use the provided Taskfile to run common tasks.

task init-devcontainer

  • Sets up the project by setting permissions and installing dependencies
  • Should be run once after starting a new devcontainer or codespaces instance

task dev

  • Starts Astro's development server with live reloading
  • Available at http://localhost:4321

task build

  • Builds the static site to swa/dist/

Architecture

The project ships as a single container image whose two content-serving technical components together deliver three logical components, alongside a supporting OpenTelemetry Collector for observability.

Logical components — what the site is made of:

# Component What it is Lives in
1 Static website The Astro site (pages, assets), pre-built to static files swa/
2 REST API A Gin + Go service serving dynamic content (GET /api/quote) api/
3 Redirects Domain → domain 301 rules (one file per source host) docker/caddy/redirects/

Technical components — the processes that run inside the container:

  • Caddy — the web server. Serves the static files, reverse-proxies the API, and performs the redirects. It runs as the container's primary process.
  • Go REST API — a single static binary that serves the dynamic content. It is served through caddy.
  • OpenTelemetry Collector — a supporting process that gathers traces, metrics, and logs from the other two and forwards them to Middleware. See AGENTS.md → Observability.

Lessons Learned

See LESSONS_LEARNED.md.

Sources

About

My small personal Website

Topics

Resources

Code of conduct

Stars

0 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages