Standards

slow it · flow it · love it

flove is a bet on a slower internet — one where relating, not extracting, is the point. It's not one app but a small constellation of them, each exploring a facet of how we relate.

For a family of independent little apps to feel like one calm, trustworthy thing, they share a set of standards. These aren't bureaucracy — they're care made repeatable: the same gentle look, the same respect for your attention and your data, the same promises kept in every corner. This page gathers them in one place. They're living documents; they grow as flove does.

1

Principles

The stance underneath every design decision — the contract flove holds itself to.

Slow it · flow it · love it. flove is low-tech and relational on purpose. Calm motion, breathable layouts, generous whitespace. If a feature feels hypey or "AI-cool", it doesn't belong here. The point is never to dazzle — it's to be a quiet, dependable place to relate.

From that stance, a handful of firm commitments follow:

Local-first promiseNothing leaves your device unless you explicitly publish. Each app keeps what you add — it survives reload, close, reopen — and what you see is what you export. You own your data, on your machine.
CSS over JavaScriptBuild with CSS first; reach for JavaScript only when CSS genuinely can't express it. Reveals, theming and layout are done with the platform, not with heavy scripts. Apps stay light and legible.
One self-contained fileA flove app is a single HTML file — a shared stylesheet, a little local style, small inline JS. No build step, no framework, no bundler. You can read any app like a page, not a black box.
An accessibility floorVisible focus on every control, body-text contrast ≥ 4.5:1, touch targets ≥ 40px, motion that respects prefers-reduced-motion. Calm shouldn't mean careless.
One family, many charactersA shared identity — a custom mark, a sticky top bar back to home, one accent palette, common geometry and motion tokens. Each app keeps its own colour and character; the standards are the grammar, not the script.
No dashboard energyNo dense, modal-stacked, dashboard-like layouts. No neon, no "AI-shimmer". flove breathes. When in doubt, choose restraint.
2

Frontend standards

How a flove app is shaped — and the shared patterns that let dozens of them feel like one.

Every flove frontend is described by three orthogonal axes: how much it does, how it runs, and into which medium it reaches.

AxisQuestionValues
tierhow many features?nano · mini · basic · normal · advanced · super · mega
distrowhich runtime / qualities?CSS-pure → JS → backend
surfaceinto which medium?hardware · 2D · 3D · AR · VR

The same idea can therefore meet you at the size you want (a mini that does one thing, up to a rich advanced), in the form you need (dependency-free or fuller), on the surface you have. 2D is today's baseline. The full tiers matrix maps every app across its sizes.

How the frontend standards are organised

The standards come in three files, by how firm they are:

The contract §0–8The mandatory core every app follows — identity mark & flove-bar, token discipline, CSS-over-JS, the single-file pattern, the accessibility floor, the anti-patterns. Short, stable, non-negotiable.
The catalogue §13The opt-in patterns below, adopted per app as it needs them. It grows; blogy is the reference app where new patterns mature first.
The adoption checklist §14A living table of which app has adopted which standard — the frontend roadmap, one cell per unit of polish work.

The shared catalogue §13

Fifteen reusable patterns. Only onboarding is mandatory; the rest are adopted per app as it needs them.

Tier model 13.1Seven size-slots per app, each a separate file, with a small stepper (tier-pop) to move between them.
Bilingual by CSS 13.2A pure-CSS English/Spanish swap (the 🌐 "worldball"); your language choice is remembered family-wide via flove:lang.
User-extensible forms 13.3Small in-app forms (newlabeler · newwizard · newlanguage · newsound) let you add your own labels, wizards, languages and sounds — CSS-only, no page reload.
Compass 13.4A pure-CSS switcher that re-presents a list within the current surface — reorder or resize — without changing the surface itself.
Topbar 13.5Which controls the top bar carries, calibrated per tier — a mini shows less, an advanced more.
Onboarding 13.6 · mandatoryStep-by-step, very visible the first time you open an app, discreet ever after.
Canonical vocabulary 13.7Shared class prefixes (entry- · labeler- · wizard- · step-), so the same idea always carries the same name across every app.
Counters 13.8Light floating arcade-style counters that can gate a little added complexity (a tier-pop unlock) as you engage.
Summary panel 13.9One "what you see" summary drives a live phrase, insights, rating views and cycles.
Nav-tab title 13.10Every tab reads <App> · FLOVE — the app's favicon, its name, the family brand.
Surfaces 13.11The medium axis — 2D today, with richer 3D/AR/VR growing from the advanced tier on an open WebXR stack.
Export & share 13.12One summary-model exports to six formats (md · json · xml · html · jpg · csv) and hands off to the phone via the Web Share API.
Locking 13.13Optional privacy for local files — method (Low · Mid · High, up to real Web-Crypto encryption) × trigger (a passphrase or a threshold).
Contrast & theme 13.14A light↔dark ◐ toggle over an accessible-contrast base; your choice is remembered family-wide via flove:theme.
Publish to Appy 13.15The app → profile bridge (flove-appy.js): a writer publishes a summary, the Appy readers pick it up — with a manual upload fallback for file://.
3

Backend plan

The road from a constellation of local apps to a shared, community-curated web — without ever breaking local-first.

flove starts fully on your device. The plan turns that constellation into a backed-by-the-network experience while keeping the core promise intact: nothing leaves your device unless you publish it. The far horizon is a polysemic dictionary built bottom-up — every published thing becomes a multi-rated, multi-related object in a vocabulary the community curates together.

The pieces

The element & the fuzzy engineEverything is a "fuzzy object" or a person/bond, annotated on soft, bipolar scales across seven axes — with sensory meta-raters and multi-rater aggregation. Relating rarely fits a hard box; the model doesn't force it to.
nety — the corporate backendflove's own backend on the flovenet stack: cryptographic identity, a reputation and trust graph, resources, and a gateway that bridges the data. It serves the community side.
Portability by adapterflove stays a portable semantic layer. A Publisher adapter also lets it plug into existing backends — 0asis first as a demo, then ActivityPub / Matrix / Solid.
A coordinate systemFour "trees" with flove at the centre place every element in relation to the others — the map under both the apps and the dictionary.

The phased road

PhaseWhat it adds
F0 · localThe mini tier of every app, persisted on-device and fully offline; your own summaries aggregated into a personal profile.
F1 · enrichedThe basic tier plus a local AI companion (MyWizy) and occasional content download.
F2–F5 · netyIdentity, a shared common area, a global AI, and fuzzy aggregation across the community — served by the corporate backend.

This is a roadmap, not a finished system. F0 ships today; the network phases are where flove is heading.

4

Skills

Standards don't stay on paper. A small toolkit keeps every app faithful to them.

flove is built in a human + AI pairing, and the recurring craft — tidying, checking, translating, publishing — is captured as reusable skills. They're how the standards on this page get applied and maintained, app by app.

/optimizeThe orchestrator: runs the whole polish pipeline on an app in the one order that avoids rework.
/simplifyRefines code for clarity and consistency without changing what it does.
/validateChecks and repairs validity, accessibility, mobile-friendliness and i18n — without breaking navigation.
/vocabulariesMakes an app's internal names match the words its interface actually shows.
/exportAudits the summary, the six download formats and share-to-mobile against the export contract.
/translate2Makes a page multilingual — wraps its text per language and adds the 🌐 switcher.
/rebrandRolls a changed logo, mark, wordmark or palette out to every surface an app lives on — matching each page's own treatment and the motion standard.
/talk2webTurns a batch of design questions into a self-contained interview form.
/devlogWrites a development-log article for the blog — gathering the real recent work across the repos and drafting it in flove's voice, drafts-first.
/narrateTurns any text into a narrated offline audio file (MP3) — a spoken intro, music, and the full text read in a chosen voice, all with local tools.
/update-webPublishes the live site — pushing committed work out to flove.org.

App identity artifacts

Beyond its own file, each app carries two identity files that travel with it whenever its mark changes — /rebrand (aka /update-image) creates or updates them alongside the live surfaces. The economy logo board is the worked demo.

Logo study — images/apps/logos/<app>/<app>-logos.htmlThe source-of-truth board for an app's mark: the chosen glyph, its size ramp (16·24·44·72) and its two animated takes, one mark per app in the app's own accent. Create it when an app gets a mark; update it when the mark is redrawn. A whole family may share one board — see images/apps/logos/economy/economy-logos.html.
Caption — images/apps/captions/<app>.pngThe app's preview screenshot, shown on the category launcher and the demos-index preview. Add one when the app is created; refresh it when its look changes; keep it named by the app's current name (rename old files, e.g. crowdcrafting.pngcrafty.png).

Automation scripts

Where a job is deterministic — packaging, publishing, generating derived files — it's a small script rather than a skill. These live in the repo and are run by hand when their inputs change.

build-flove-zip.shBuilds flove.zip, the runnable local package the home page's "Download / Go local" button hands out.
build-sw.mjsRegenerates sw.js, the service worker that makes flove installable and offline-capable.
build-aliases.mjsGenerates 404.html, the clean-URL "receptionist" that routes bare app names to their files.
start-flove.shServes this folder on localhost and opens it — self-locating, so it runs wherever the folder sits. Local-only (gitignored).
blog/build-blog.shBuilds the flove blog (Hugo source in the private marc/blog repo, nested at flove/blog).
apps/lowai/publish-lowai.shPublishes apps/lowai out to LowAiorg/web → lowai.org, outside the main site.
5

Making of

How this constellation actually got built — the record behind the standards.

The standards above are the what. The making-of is the how: a turn-by-turn account of the human + AI pairing that shaped flove, app by app. It's shown in full below, with two companion documents mapping the same story from other angles.

The making-of ↗The full narrative — how flove was built, turn by turn.
Tiers matrix ↗Every app mapped across its seven sizes.
Skills applied ↗Which skills have touched which app, and when.

slow it · flow it · love it.