Homepage of wip.is — Astro, Tailwind CSS v4, deployed to the Cloudflare Worker wip.
The public site is fully prerendered. The rotating intro uses React; theme, clipboard, and scrolling behavior use Astro scripts.
| Command | Action |
|---|---|
bun dev |
Dev server at localhost:4321 |
bun build |
Build the static site to dist/ |
bun preview |
Serve the built site locally |
bun check |
Typecheck .astro and .ts files |
bun run deploy |
Build and deploy to the wip Worker |
src/
pages/index.astro The only route
layouts/Base.astro <head>, JSON-LD, theme bootstrap, Lenis
components/ UI, one .astro file each
lib/ Site constants, theme logic, link + mark data
styles/globals.css Tailwind entry, theme tokens, font fallback
worker.ts Canonical-host 301, then serves dist/ assets
-
Work content. Edit
src/data/work.jsonto update the homepage work list and gallery. Setpublishedtotrueto display an entry. Images live insrc/assets/work/; use their/src/assets/work/filename.pngpath and an alt description in the JSON. Astro optimizes these images during the build. Build and deploy to update the live site. -
Theme. An inline script in
Base.astroapplies thelight/darkclass before first paint to avoid a flash; everything after that lives insrc/lib/theme.ts. ThelocalStoragekey and values match thenext-themessetup this site used previously, so existing preferences carry over. -
Canonical host. Several domains point at the same Worker and Cloudflare has no primary-domain setting, so
src/worker.ts301s every non-canonical hostname, includingwip-design.com, towip.is..workers.devis exempt so preview URLs stay reachable. -
Deploys. Cloudflare Workers Builds runs
bun run build, thennpx wrangler deploy.bun run deploydoes the same from this machine. The Worker name inwrangler.jsonciswip. -
Copyright year in the footer is baked in at build time.