Skip to content

Repository files navigation

Le-Space Landing Pages

Monorepo for the Le-Space web presence — two browser-only Svelte 5 sites, deployed to Aleph IPFS (same pipeline as simple-todo).

Site Domain Purpose
sites/local-first local-first.le-space.de Portfolio of the local-first P2P stack (relay-button, simple-todo, uc-chat, ucan-store, …)
sites/le-space le-space.de Minimal brand page: logo + product links

Structure

packages/shared/   # @le-space/landing-shared: design tokens, i18n, components, project data
sites/local-first/ # portfolio one-pager
sites/le-space/    # minimal page

Portfolio content lives in a single file: packages/shared/src/data/projects.js. Screenshots/videos go to sites/local-first/public/media/<id>.png|mp4.

Development

pnpm install
pnpm dev:local-first   # http://localhost:5173
pnpm dev:le-space
pnpm build             # builds both sites to sites/*/dist

Pitch decks

One deck per spin-off project, generated from packages/shared/src/data/use-cases.js.

pnpm decks       # data → sites/local-first/public/pitchdeck/<id>/index.html
pnpm decks:pdf   # the same, plus <id>-pitch-de.pdf / -en.pdf (needs playwright)

pnpm build runs pnpm decks first, so a deck is never built from stale data. The generated HTML and the PDFs are committed: the deck is the deliverable and gets mailed around, and CI has no playwright step.

Unlisted on purpose. The decks ride along on the portfolio's deployment but are not part of the site: nothing links to them, they are absent from sitemap.xml, and every page carries noindex. A deck travels as a URL somebody was given.

Deck page https://local-first.le-space.de/pitchdeck/<id>/
Overview https://local-first.le-space.de/pitchdeck/
PDF …/pitchdeck/<id>/<id>-pitch-de.pdf (and -en.pdf)

Each deck is one self-contained file: inlined CSS, both languages embedded (?lang=de / ?lang=en, DE/EN buttons top right), arrow-key navigation, and a print stylesheet that puts one slide on one 1280×720 page. It works from a USB stick and over IPFS alike.

Adding a spin-off means adding an entry to use-cases.js — slide kinds are title, bullets, columns, closing; bullets may carry a now / next / planned badge so a roadmap does not read as a shipped feature. Entries marked draft: true still generate a deck but stay off the overview page and get no PDF.

tools/render-decks.mjs refuses to write a PDF whose slide would be cropped by the fixed page height, so an overlong slide fails the build instead of losing its last bullet silently.

Deployment

.github/workflows/deploy.yml — matrix over both sites: build → publish to Aleph IPFS (@le-space/node, pinned) → link domain. Requires the ALEPH_PRIVATE_KEY repository/organization secret.

Roadmap

See STRATEGY.md. Phase 2 adds @le-space/orbitdb-live-todos, a read-only P2P widget streaming live todos from OrbitDB relays into the page.

About

Le-Space landing pages — local-first.le-space.de (local-first P2P portfolio) + le-space.de. Svelte 5, browser-only, deployed to Aleph IPFS.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages