fullstack-vc
ActiveA team-initiative Venture Capital community site bringing the astro-knots conventions to bear on a live community. Breakthroughs in Interactive Polling, Svelte-SSR driven engaging features.
The Lossless Group
A pseudomonorepo of Astro sites · The Lossless Group
17 Astro sites + four splash pages. One workspace. A shared context layer, a single published package, and a strict three-mode color contract. Not a true monorepo — never tried to be — but tied together by patterns the team actually uses.
The lattice
Each site is its own repo, included here as a git submodule. Each card carries a thread in that site's brand color — a small reminder that nothing's actually merged.
Our systems keep getting better. A redesign now arrives as three complete, genuinely different designs — working code, two-tier theming, themed image assets, one consistent stack — generated in parallel against a single shared content layer, so a stakeholder can compare them like-for-like. One to three prompts; a fifteen-to-thirty minute loop produces three to five variants.
three spikes · nine variants · all three modes each
The contract
Every astro-knots site declares --color__name raw values at the top of
theme.css, then composes --color-bg / --color-accent
semantic tokens from them — re-bound per data-mode. Tailwind v4 generates
utilities from the kebab-case tier only. Toggle the mode in the header and watch these
swatches pivot live.
--color-bg bg --color-bg-elevated bg-elevated --color-text text --color-text-soft text-soft --color-accent accent --color-accent-warm accent-warm --color-thread thread --color-accent-hot accent-hot
Reference: context-v/blueprints/Maintain-Themes-Mode-Across-CSS-Tailwind.md
Honest notes
We tried to be a monorepo. We aren't. Here's what actually held up against the friction of a small team.
Co-located development. Each site visible alongside its siblings so patterns can be compared. Submodules so each site stays its own repo and ships independently. A shared context-v/ that travels with the workspace.
Lossless Flavored Markdown. The one piece that was identical across every site — remark/rehype — earned its way out of pattern-land into a real published package. Everything else stayed copy-and-adapt.
Treating @knots/* as importable dependencies. Style-free shared components. "Copy when you remember" — we usually didn't. Every site's design diverged enough that generic UI components were a tax, not a gift.
Selective sharing where it's justified, copy-and-adapt where it isn't. The two-tier token system + three-mode contract are the closest thing to a non-negotiable convention. You can toggle them in the header right now.
Latest from the workspace
The most recent threads pulled. Each links back to the spec or blueprint that asked for it.
Three sites got redesigned as three complete directions each — nine working variants, twenty-seven direction-and-mode combinations, all off one shared content layer per site. gth-site turns a docuseries funnel into a clinical publication, an anatomical atlas, or a consultation, with an upgrade cart whose tiers are strict supersets so it can show you a delta instead of a new cart. dominocielo-site holds a 300-word family-office page at 300 words and makes brevity read as confidence. multiphasic-site got the README treatment its CEO's interest deserved. The pattern repeated three times, so it stopped being improvisation and became `generate-site-design-variants` — a 257-line skill, plus a `/design-variants` page on the splash so the workflow is legible to people who are not us.
Screenshots of a setup flow are a sequence, and we had no way to say so in markdown. `:::image-carousel` now does, in four variants split as ImageCarousel--{Variant} siblings. Two findings fell out of building it: the image-prep timestamp records when a file was processed rather than when the screen was captured, and our prose reset out-specifies any component that renders a list inside it.
The ToC was the goal; the layout fix was the surprise. `mx-auto` on a flex item silently disables stretch, so `<main>` had been sizing to its content instead of its parent on every page of the site. Found by driving headless Chrome after three wrong guesses. Plus a new orientation on which open model does which job.
Specs, blueprints, prompts, reminders — the working notes that underwrite the code,
kept in each site's context-v/ and rolled up here.