Architecture Overview¶
This section is the contributor map for the Dataface codebase.
Use it to answer three questions quickly:
- What are the main systems in this repo?
- Which parts are platform code versus application surfaces?
- Where should canonical documentation live?
Repo shape¶
At a high level, the repository has four different kinds of code:
| Area | Path | Role |
|---|---|---|
| Core platform | dataface/ |
Shared engine, CLI, AI integrations, and platform services |
| Applications | apps/ |
User-facing product surfaces built around the platform |
| Internal libraries | libs/ |
Semi-independent packages and tooling with their own local docs |
| Planning and notes | master_plans/, ai_notes/ |
Execution tracking and working knowledge |
flowchart TD
platform["dataface/\nplatform package"]
apps["apps/\nproduct surfaces"]
libs["libs/\ninternal packages"]
docs["docs/\ncanonical contributor docs"]
notes["ai_notes/\nworking notes"]
plans["master_plans/\nplanning and execution"]
apps -->|call into| platform
docs -->|describe| platform
docs -->|describe| apps
notes -->|support| docs
plans -->|track work on| platform
plans -->|track work on| apps
Read in this order¶
- Platform Overview for the top-level repo boundaries
- Core Engine for
dft-coreinternals - Applications for the app surfaces in
apps/
Documentation rules¶
Keep documentation in the layer where it is most likely to stay accurate:
- Put stable platform and application architecture in
docs/docs/contributing/architecture/ - Keep workflow and agent instructions in repo-level
AGENTS.mdandCLAUDE.md - Keep tool- or library-specific canonical docs close to the code in
libs/* - Keep drafts, explorations, and temporary reasoning in
ai_notes/ - Keep milestone and task execution state in
master_plans/
Libraries are different¶
The libs/ directory contains packages such as cbox, asql, and markdown-svg. These should generally keep their canonical docs next to the library itself rather than being duplicated in the central architecture section.
The central architecture docs should only explain:
- what the library is for
- how it relates to the Dataface platform
- where its canonical local documentation lives