Electrical installation planner for French residential projects, built around the NF C 15-100 standard.
Describe your project (rooms, surfaces, floors), and the app helps you plan the required outlets, lighting points and dedicated circuits, then lays out the electrical panel (tableau électrique) — with proper modules, breaker ratings and cable sections — and flags anything that falls outside the norm.
Example: a 28 m² living room with only 6 socket outlets is flagged — NF C 15-100 requires at least 7 (one per 4 m², minimum 5).
Client-only. No server, no account. Your data stays in the browser.
🚧 Early POC. Working end-to-end: create projects, add rooms (type, surface, outlets, lighting, equipment + a reusable custom-equipment catalog with mono/tri power sizing), see live NF C 15-100 guidelines and non-conformities per room, and get an auto-generated panel (tableau) — circuits grouped under residual-current devices, breaker/cable sizing, supply feed, modules + reserve, and norm warnings. State persists to localStorage. Grouping is a documented heuristic; divisional panels and module placement are still to come.
- Project — name + supply type (mono/triphasé).
- Rooms — per floor: type, dimensions, surface.
- Requirements — minimum outlets / lighting / dedicated circuits per room, from the norm. Deviations are flagged.
- Tableau — auto-laid-out panel(s): a main panel plus divisional panels per floor (e.g. RDC + N+1), with modules, breaker ratings and cable sections.
A Bun workspace monorepo. Heavy domain logic lives in framework-agnostic packages, kept separate from the rendering layer — so the same logic can later back a Tauri desktop/mobile build, a CLI, or DXF import/export.
tableau-elec/
├── apps/
│ └── web/ # TanStack Router SPA (Vite + React 19 + Tailwind v4)
└── packages/
├── norms/ # NF C 15-100 data + pure rule functions (zero deps)
└── core/ # Domain model + compliance checks + tableau planning
| Package | Responsibility |
|---|---|
@tableau-elec/norms |
The standard as data: per-room minimums, circuit specs. |
@tableau-elec/core |
Domain types, room/project evaluation, panel layout. |
@tableau-elec/web |
UI. Depends on core + norms, holds no domain logic. |
Packages are consumed as TypeScript source (no per-package build); Vite and Bun compile them directly. They get their own build pipeline only if/when one ships standalone.
- Bun workspaces · TypeScript (strict)
- TanStack Router (file-based) · React 19 · Vite
- Tailwind CSS v4
- Biome (format + lint)
bun install
bun dev # start the web app (Vite)Other scripts:
bun run typecheck # tsc across all workspaces
bun test # unit tests (bun:test)
bun run check # Biome lint + format check
bun run check:fix # Biome autofix- Wire the room editor + live norm checks into the UI
- Persistence (localStorage)
- Reusable custom-equipment catalog (mono/tri, power-based sizing)
- Tableau auto-layout — circuit grouping, DDR assignment, breaker/cable sizing, supply, modules
- Panel topology — main + divisional panels, room→panel assignment, parent feeds
- DIN-rail layout + head-end (PDL arrival, branch breaker / feed from parent)
- Triphasé phase balancing — auto L1/L2/L3 (greedy LPT) + per-circuit/per-rail manual override + imbalance %
- Full NF C 15-100 rule set (from the official extract) — ongoing;
extract-nf-c-15-100.md - Per-floor organisation + room adjacency → cable-length estimation
- Import/export (JSON, then DXF)
- Plan photo → room extraction
- Tauri desktop / mobile build
A planning aid, not a substitute for a certified electrician or the official NF C 15-100 text. Encoded rules are a partial, best-effort interpretation. Always have an installation validated by a qualified professional (Consuel).