Rename the workspace layout: fluksio -> app, website -> index
The repo moves to git.stroblme.de:Fluksio/app.git and its sibling to Fluksio/index.git, so every cross-repo path reference moves with it. The architecture sources the roadmap cites now live in the docs repo under architecture/, and the brand marks in the index repo's src/assets. Also replaces the placeholder README with one that reflects the actual layout. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
0c3e6081f2
commit
4aa2705d34
@@ -1,6 +1,6 @@
|
||||
# Design system (Fluksio)
|
||||
|
||||
`fluksio` (dashboard SPA + API) and `website` (marketing site) are **separate
|
||||
`app` (dashboard SPA + API) and `index` (marketing site) are **separate
|
||||
repos** that share one visual design. The full, canonical spec — palette,
|
||||
radius, elevation, motion, component map, and shell patterns — lives in the
|
||||
parent repo's [`DESIGN-GUIDELINES.md`](../DESIGN-GUIDELINES.md). Read it before
|
||||
@@ -8,8 +8,8 @@ any UI work.
|
||||
|
||||
## Sync rule (read before touching tokens)
|
||||
|
||||
The `@theme inline`, `:root`, and `.dark` blocks in `fluksio/frontend/src/index.css`
|
||||
and `website/src/index.css` **must be kept byte-identical**, and
|
||||
The `@theme inline`, `:root`, and `.dark` blocks in `app/frontend/src/index.css`
|
||||
and `index/src/index.css` **must be kept byte-identical**, and
|
||||
`frontend/src/lib/motion.ts` is duplicated verbatim. Any palette / radius /
|
||||
elevation / motion-token change is made in *both* repos in the same change.
|
||||
There is intentionally no shared npm package — the duplicated blocks are the
|
||||
|
||||
+5
-1
@@ -15,7 +15,7 @@ Deferring because out of scope is fine, but don't mention deferring than.
|
||||
- CHORE/FLOW: the flow test files live in `backend/app/flow/test*.py`, inside the package
|
||||
rather than `backend/tests/`, so `coverage run -m pytest tests/` never collects them.
|
||||
- CHORE/INFRA: port the n3xd CI workflows (pre-commit, backend tests, Playwright shards,
|
||||
compose smoke) to `.forgejo/workflows/`. Codeberg runs Forgejo Actions and needs CI
|
||||
compose smoke) to `.gitea/workflows/`. The Gitea instance runs Gitea Actions and needs CI
|
||||
enabled per repository.
|
||||
- FEAT/UI: `@xyflow/react` and a Monaco editor belong here once the node canvas starts.
|
||||
The website already demos `@xyflow/react` on its features page.
|
||||
@@ -31,3 +31,7 @@ Deferring because out of scope is fine, but don't mention deferring than.
|
||||
|
||||
- FEAT/INFRA: Redis, MQTT broker and InfluxDB compose services. Blocked on the flow engine
|
||||
being reachable from the API — no runtime path imports them today.
|
||||
- CHORE/INFRA: `bun install` inside the frontend Docker build intermittently fails with
|
||||
"Fail extracting tarball" for several packages at once, and succeeds on a plain rebuild.
|
||||
It looks like concurrent extraction under memory pressure. Pin down or retry in the
|
||||
Dockerfile if it starts costing CI time.
|
||||
|
||||
@@ -1,3 +1,42 @@
|
||||
# Fluksio Main Repository
|
||||
# Fluksio App
|
||||
|
||||
A node based, test-driven home-automation software to built to scale.
|
||||
The core of Fluksio: a node-based, test-driven automation software built to scale. This
|
||||
repo holds the FastAPI backend, the flow engine, and the dashboard SPA. It is served on
|
||||
`app.${DOMAIN}` (SPA) and `api.${DOMAIN}` (API); the marketing site lives in the sibling
|
||||
`index` repo.
|
||||
|
||||
## Layout
|
||||
|
||||
```text
|
||||
backend/ FastAPI + SQLModel + Alembic + Postgres
|
||||
app/flow/ the flow engine (nodes, pipeline, state backends, controller)
|
||||
frontend/ React 19 + TanStack Router + Tailwind 4 + shadcn/ui
|
||||
docker/ compose.yml → compose.dev.yml → compose.local.yml (+ compose.traefik.yml)
|
||||
scripts/ generate-client.sh, test.sh
|
||||
```
|
||||
|
||||
## Getting started
|
||||
|
||||
Normally driven from the workspace root (`make init` once, then `make dev`). Standalone:
|
||||
|
||||
```sh
|
||||
make install # uv sync + bun install
|
||||
make dev-utils # db, adminer, proxy, mailcatcher, prestart only
|
||||
make dev-backend # FastAPI on :8000, hot reload
|
||||
make dev-frontend # Vite on :5173
|
||||
```
|
||||
|
||||
```sh
|
||||
make test # pytest + Playwright
|
||||
make lint # ruff + mypy + biome
|
||||
make generate-client # regenerate the frontend SDK from the OpenAPI schema
|
||||
```
|
||||
|
||||
`make help` lists every target.
|
||||
|
||||
## Documentation
|
||||
|
||||
- [`ROADMAP.md`](ROADMAP.md) — strategy and feature record
|
||||
- [`NOTEPAD.md`](NOTEPAD.md) — deferred work and findings
|
||||
- [`DESIGN.md`](DESIGN.md) — points at the workspace root's `DESIGN-GUIDELINES.md`
|
||||
- `docs/architecture/` in the sibling `docs` repo — the requirement sources
|
||||
|
||||
+7
-7
@@ -1,8 +1,8 @@
|
||||
# Roadmap
|
||||
|
||||
Implementation strategy and record of existing/planned features. Completed items are
|
||||
terse checklists — the requirement detail lives in `org/README.md` (software requirements,
|
||||
evaluated tooling, hardware) and `org/structure.canvas` (the four-way component split).
|
||||
terse checklists — the requirement detail lives in `docs/architecture/overview.md` (software requirements,
|
||||
evaluated tooling, hardware) and `docs/architecture/structure.canvas` (the four-way component split).
|
||||
Remaining tasks keep enough scope to be actionable.
|
||||
|
||||
Legend: `[x]` done · `[ ]` planned · sub-lists split done vs. remaining for partial items.
|
||||
@@ -12,7 +12,7 @@ existing flow engine reachable and persistent precedes new feature breadth.
|
||||
|
||||
## Phase 0 — Workspace and platform
|
||||
|
||||
- [x] Root orchestrator repo with `fluksio`, `website`, `docs`, `org` as submodules
|
||||
- [x] Root orchestrator repo with `app`, `index` and `docs` as submodules
|
||||
- [x] `make init` bootstrap: secrets generation, per-stack `.env` propagation, shared
|
||||
`proxy` docker network
|
||||
- [x] Layered compose (`compose.yml` → `compose.dev.yml` → `compose.local.yml`) for both
|
||||
@@ -24,7 +24,7 @@ existing flow engine reachable and persistent precedes new feature breadth.
|
||||
## Phase 1 — Backend: management
|
||||
|
||||
Python, optimised for development speed. Owns the graph structure, persistence and the
|
||||
external interfaces. See `org/structure.canvas` → *Backend – Management*.
|
||||
external interfaces. See `docs/architecture/structure.canvas` → *Backend – Management*.
|
||||
|
||||
- [x] FastAPI + SQLModel + Alembic + Postgres base with JWT auth and user management
|
||||
- [x] Flow engine prototype in `backend/app/flow/`: `Node` / `Pipeline` / `StateBackend`
|
||||
@@ -51,7 +51,7 @@ external interfaces. See `org/structure.canvas` → *Backend – Management*.
|
||||
## Phase 2 — Backend: processing
|
||||
|
||||
Rust, optimised for throughput. Executes nodes and distributes them across workers. See
|
||||
`org/structure.canvas` → *Backend – Processing*.
|
||||
`docs/architecture/structure.canvas` → *Backend – Processing*.
|
||||
|
||||
- [ ] Extract node execution from the Python prototype into a Rust engine
|
||||
- [ ] Worker distribution and load balancing across capable devices
|
||||
@@ -60,7 +60,7 @@ Rust, optimised for throughput. Executes nodes and distributes them across worke
|
||||
|
||||
## Phase 3 — Frontend: admin view
|
||||
|
||||
React + Vite, primarily desktop but usable on mobile. See `org/structure.canvas` →
|
||||
React + Vite, primarily desktop but usable on mobile. See `docs/architecture/structure.canvas` →
|
||||
*Frontend – Admin View*.
|
||||
|
||||
- [x] Dashboard SPA shell: TanStack Router, floating frosted sidebar, auth flows,
|
||||
@@ -75,7 +75,7 @@ React + Vite, primarily desktop but usable on mobile. See `org/structure.canvas`
|
||||
|
||||
## Phase 4 — Frontend: dashboard view
|
||||
|
||||
Shares components with the admin view. See `org/structure.canvas` →
|
||||
Shares components with the admin view. See `docs/architecture/structure.canvas` →
|
||||
*Frontend – Dashboard View*.
|
||||
|
||||
- [ ] User-defined dashboard layout with edit and view modes
|
||||
|
||||
@@ -3,7 +3,7 @@ import { SiCodeberg } from "react-icons/si"
|
||||
const socialLinks = [
|
||||
{
|
||||
icon: SiCodeberg,
|
||||
href: "https://codeberg.org/fluksio",
|
||||
href: "https://git.stroblme.de/Fluksio",
|
||||
label: "Codeberg",
|
||||
},
|
||||
]
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
*
|
||||
* `--primary` is #4a7189, not the identity blue #59849b: the latter measures
|
||||
* 4.04:1 against white, below AA for the label sitting on a bg-primary fill.
|
||||
* #59849b remains the wordmark colour (org/design/fluksio-*.svg). See the root
|
||||
* #59849b remains the wordmark colour (index/src/assets/fluksio-*.svg). See the root
|
||||
* DESIGN-GUIDELINES.md → Colour tokens.
|
||||
*/
|
||||
:root {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* across the app. Mirrors the `--ease-*` / `--duration-*` timing tokens defined
|
||||
* in `index.css`, so CSS transitions and JS animations stay in sync.
|
||||
*
|
||||
* This file is duplicated verbatim in `fluksio` and `website` (the shadcn model,
|
||||
* This file is duplicated verbatim in `app` and `index` (the shadcn model,
|
||||
* see ../../DESIGN.md / the root DESIGN-GUIDELINES.md). Keep the two copies
|
||||
* identical; `make design-check` at the workspace root verifies it.
|
||||
*
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "fluksio",
|
||||
"name": "fluksio-app",
|
||||
"private": true,
|
||||
"workspaces": [
|
||||
"frontend"
|
||||
|
||||
Reference in New Issue
Block a user