e3c7bf2e74
build / build (push) Successful in 17s
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
34 lines
1.6 KiB
Markdown
34 lines
1.6 KiB
Markdown
# 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.
|