# Landing page — guest onboarding site ## Summary Apex `ulicraft.local` serves a clean static page guiding guests through joining: download launcher → add account → import modpack → connect. Built with **Astro + TypeScript** in its own `./landing/` project; `npm run build` emits straight into `./www/`, which Caddy already serves at the apex domain. No runtime JS framework — output is plain HTML/CSS plus one tiny copy-to-clipboard script. ## Stack & wiring - `landing/` — Astro project (own `package.json`, `tsconfig`). - `astro.config.mjs` → `outDir: "../www"`. Build overwrites `www/`; `www/` is gitignored (generated artifact). - `BASE_DOMAIN` env read at build time in `src/data/site.ts` (`process.env.BASE_DOMAIN ?? "ulicraft.local"`). Bake before deploy: `BASE_DOMAIN=ulicraft.local pnpm run build`. - Logo: drop PNG at `landing/public/logo.png` → copied to `www/logo.png`, referenced as `/logo.png` (favicon + hero). `image-rendering: pixelated` keeps the stone 3D logo crisp. ## Content (src/data/site.ts is the single source) - Hero: logo, name, server address `mc.${BASE_DOMAIN}:25565` (copy button). - Step 1: launcher downloads — 3 OS buttons → `/launcher/latest/`. - Step 2: add authlib-injector account, URL `http://auth.${BASE_DOMAIN}/authlib-injector`, register link to `http://auth.${BASE_DOMAIN}`. - Step 3: import packwiz `http://packwiz.${BASE_DOMAIN}/pack.toml`. - Step 4: connect to server address. ## Launcher download links (Option A — stable symlinks) Page links to fixed names so they survive launcher version bumps: - `fjord-windows-setup.exe` - `fjord-macos.dmg` - `fjord-linux-x86_64.AppImage` `tooling/fetch-launcher.sh` must create these as symlinks under `mirror/launcher/latest/` pointing at the real versioned assets. **Keep the names in sync** between `site.ts` and the script. Caddy mount `./mirror/launcher:/srv/www/launcher:ro` makes them resolve at `/launcher/latest/…`. ## Tasks - [ ] User: place logo at `landing/public/logo.png` - [ ] `cd landing && pnpm install` - [ ] `BASE_DOMAIN=ulicraft.local pnpm run build` → verify `www/index.html` + `www/logo.png` - [ ] Extend `fetch-launcher.sh`: after download, symlink stable names → versioned files (resolve which asset = win setup / mac dmg / linux AppImage) - [ ] Confirm Caddy serves apex from `./www` and `/launcher/latest/*` from mirror - [ ] Optional: pin launcher tag instead of `latest` for party day - [ ] Optional: add a "what's in the pack" section once mod list firms up