Single self-contained index.html (avatar + favicon inlined; only Google Fonts external; zero JS; dark-mode; responsive) served by a baked nginx:alpine image behind Traefik, built and published by CI on push to main and rolled out by Watchtower. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LbhPvfSERrnuY5jdhAdB7v
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# jpaul.io
|
||||
|
||||
The personal hub landing page at the root of [jpaul.io](https://jpaul.io) — who I am,
|
||||
what I make, and where to find me. Not a blog, not a portfolio: a hub.
|
||||
|
||||
## Contents
|
||||
|
||||
- **`index.html`** — the whole site. One self-contained file, no build step. The avatar
|
||||
and favicon are inlined as data URIs; the only external assets are the Google Fonts
|
||||
(Inter + JetBrains Mono). Zero JavaScript.
|
||||
- **`favicon.svg`** — green `$` / amber `_` cursor mark on the GitHub-dark-slate ground.
|
||||
- **`Dockerfile`** — bakes the site into an `nginx:alpine` image.
|
||||
- **`docker-compose.yml`** — runs that image behind Traefik.
|
||||
- **`.gitea/workflows/build.yml`** — CI: build the image and publish it on push to `main`.
|
||||
|
||||
## Design
|
||||
|
||||
Dark-mode only, GitHub-dark-slate palette, terminal-panel motifs. Matches the brand used
|
||||
across [jpaul.me](https://www.jpaul.me), the AI Workflow course cards, and the YouTube
|
||||
channel. Responsive; cards stack to one column below 720px; hero stays readable at 375px.
|
||||
|
||||
## Deploy — automated (push to main → live)
|
||||
|
||||
1. **Push to `main`** → Gitea Actions builds the `nginx:alpine` image and publishes it.
|
||||
2. The deploy host **pulls** the image over HTTPS.
|
||||
3. **Watchtower** recreates the container with the new image.
|
||||
|
||||
No bind mounts — the running container always matches what CI built. Runs behind Traefik:
|
||||
`websecure` entrypoint, an HTTP-01 cert, and `Host(jpaul.io) || Host(www.jpaul.io)` with
|
||||
the cert domains named explicitly (a compound rule won't auto-populate them).
|
||||
|
||||
First run on the host: `docker compose up -d`. After that, editing the site is just
|
||||
commit → push to `main`; CI and Watchtower do the rest.
|
||||
Reference in New Issue
Block a user