Website for the xtagger project
  • Astro 53.5%
  • MDX 25.7%
  • Svelte 13.5%
  • CSS 4.6%
  • JavaScript 1.5%
  • Other 1.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
x-tagger 1bc651ea8a
Some checks failed
Deploy to Cloudron / build-and-deploy (push) Has been cancelled
docs: update homepage for 0.3.0 intensity system
We rewrite the homepage intensity section to the shipped model: OKLCH chroma as intensity, the dual ring, click to intensify and shift-click to ease back, and the curve options, with the looping closeup video replacing the old border-ramp demo. We correct the palette card from 16 to 32 colours, drop the stale Coming in v0.2 markers on the intensity card and section, and change the provenance marker to Planned for a future release. The orphaned intensity demo array is removed.
2026-06-04 19:59:25 +01:00
.forgejo/workflows initial 2026-02-26 00:45:33 +00:00
public docs: add intensity gestures to first-tag tutorial 2026-06-04 19:10:37 +01:00
src docs: update homepage for 0.3.0 intensity system 2026-06-04 19:59:25 +01:00
.gitignore initial 2026-02-26 00:45:33 +00:00
astro.config.mjs initial 2026-02-26 00:45:33 +00:00
Caddyfile initial 2026-02-26 00:45:33 +00:00
CloudronManifest.json initial 2026-02-26 00:45:33 +00:00
Dockerfile initial 2026-02-26 00:45:33 +00:00
package.json initial 2026-02-26 00:45:33 +00:00
pnpm-lock.yaml initial 2026-02-26 00:45:33 +00:00
README.md initial 2026-02-26 00:45:33 +00:00
tailwind.config.mjs initial 2026-02-26 00:45:33 +00:00
tsconfig.json initial 2026-02-26 00:45:33 +00:00

xtagger-site

Marketing and documentation site for XTagger — the local-first tag layer for X.com.

Built with Astro + Svelte 5 + Tailwind CSS.
Docs follow the Diátaxis framework.
Self-hosted on Cloudron via Docker + Caddy.

Development

pnpm install
pnpm dev        # http://localhost:4321
pnpm build      # outputs to dist/
pnpm preview    # preview the production build

Deploy

Deployment is fully automated via Forgejo Actions (.forgejo/workflows/deploy.yml).

Every push to main:

  1. Installs dependencies and builds the Astro site
  2. Builds a Docker image (Caddy serving dist/)
  3. Pushes the image to your container registry
  4. Calls the Cloudron API to hot-update the running app

Required Forgejo secrets

Secret Value
REGISTRY_URL Your container registry URL, e.g. registry.example.com
REGISTRY_USER Registry username
REGISTRY_PASSWORD Registry password / token
CLOUDRON_URL Your Cloudron base URL, e.g. https://my.cloudron.example.com
CLOUDRON_API_TOKEN Cloudron → Account → API Access → Generate token
CLOUDRON_APP_ID Cloudron → Apps → XTagger Site → Configure → copy the app ID from the URL

First deployment (manual)

Before the Actions workflow can update an existing app, the app needs to exist on Cloudron:

# 1. Build and push the image manually (or let Actions do it once)
docker build -t registry.example.com/xtagger-site:latest .
docker push registry.example.com/xtagger-site:latest

# 2. In Cloudron: Apps → Install a custom app → enter image name
#    Set domain to xtagger.dev
#    Cloudron handles TLS via Let's Encrypt automatically

Content structure (Diátaxis)

src/content/
  tutorials/       Learning-oriented — follow along to achieve something
  how-to/          Task-oriented — concise goal-based recipes
  reference/       Information-oriented — dry, precise, complete
  explanation/     Understanding-oriented — why things work the way they do

Porkbun DNS → Cloudron

In Porkbun, add an A record for xtagger.dev pointing to your Cloudron server IP.
Cloudron will automatically provision a Let's Encrypt certificate when you assign the domain in the app settings.

xtagger.dev   A   <your-cloudron-server-ip>
www           CNAME   xtagger.dev