No description
Find a file
Hamish McLean d2d45d324e
Some checks failed
Deploy to Vercel / deploy (push) Has been cancelled
Mobile: anchor the garden to the document bottom, not the viewport
With the specimen plates carrying the garden through the reading flow,
the fixed-position bottom garden read as a glitch on mobile - stray
petals poking out of the gaps between cards the whole way down. The
garden and its grid ground now position absolutely against the document
on mobile: clean paper while reading, and the full garden (with its
live turtle) revealed only at the end of the scroll. Desktop keeps the
fixed garden interleaved with the scattered panels.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 15:09:07 +10:00
.forgejo/workflows Add Forgejo Actions workflow to deploy to Vercel on push to main 2026-06-09 13:36:35 +10:00
src Mobile: anchor the garden to the document bottom, not the viewport 2026-06-10 15:09:07 +10:00
static Initial commit: flowerworld.systems static homepage 2026-06-09 13:36:33 +10:00
.gitignore BLOOM 2026-06-09 13:49:30 +10:00
.npmrc Pin public npm registry; clean lockfile for Vercel builds 2026-06-09 13:36:35 +10:00
flowerworld-with-text.png Initial commit: flowerworld.systems static homepage 2026-06-09 13:36:33 +10:00
package-lock.json BLOOM 2026-06-09 13:49:30 +10:00
package.json BLOOM 2026-06-09 13:49:30 +10:00
README.md The apparatus garden: plotter-turtle, projection rays, endless bloom 2026-06-10 10:40:45 +10:00
svelte.config.js Initial commit: flowerworld.systems static homepage 2026-06-09 13:36:33 +10:00
vercel.json Initial commit: flowerworld.systems static homepage 2026-06-09 13:36:33 +10:00
vite.config.js Initial commit: flowerworld.systems static homepage 2026-06-09 13:36:33 +10:00

flowerworld.systems

The static homepage for Flowerworld: Post-Digital Systems of Meaning.

Built with SvelteKit + adapter-static. The page is fully prerendered at build time and ships with client-side rendering disabled (csr = false), so the browser receives a single HTML document (CSS inlined) — no JavaScript runtime.

The garden is generated by src/lib/garden.js with a seeded RNG during prerender and shipped as inline SVG. The flowers are fully organic; the digital appears only as the apparatus of representation — a plotter-turtle cursor with a live coordinate readout and projection rays, which climbs each live stem at constant pen speed and then loops forever, placing endlessly blooming fountain petals at golden-angle steps.

All motion is pure CSS: the turtle's path is sampled at build time into @keyframes that animate two registered custom properties (--tx/--ty); the cursor, both rays and the readout all derive from them. Stems draw via pathLength + stroke-dashoffset. Under prefers-reduced-motion the garden renders finished and still, with the turtle parked at the bloom centre as a static annotation.

Develop

npm install
npm run dev      # local dev server

Build

npm run build    # outputs static files to ./build
npm run preview  # preview the production build

Deploy (Vercel)

vercel.json configures Vercel to run the build and serve the static build/ directory directly (framework preset disabled, so no serverless functions are created). Just import the repo into Vercel — no extra settings needed.

Content

The copy lives inline in src/routes/+page.svelte (the panels array). Edit the snippets there; everything is rebuilt on deploy. To reshuffle the garden, change the seed values passed to buildGarden in the same file.