diff --git a/README.md b/README.md index a4c1345..fddca47 100644 --- a/README.md +++ b/README.md @@ -32,15 +32,27 @@ offline support. first-run setup wizard yields a working instance. Start here: [`docs/self-hosting/README.md`](docs/self-hosting/README.md). +## Documentation + +- **What is Dorfteich?** — [`docs/features.md`](docs/features.md) +- **Manuals** (user / pond admin / site admin / API / MCP) — + [`docs/manual/`](docs/manual/README.md) +- **Extending it** (plugins, core) — + [`docs/developer/extending.md`](docs/developer/extending.md) +- **Running it** — [`docs/self-hosting/`](docs/self-hosting/README.md) +- **How it works inside** — [`docs/architecture/`](docs/architecture/README.md) + ## Repository layout -| Path | Contents | -| -------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| `docs/architecture/` | Architecture documentation: ADRs, data model, permission model, collaboration and plugin concepts, deployment and operations | -| `docs/self-hosting/` | Install, update, backup, and troubleshooting guide for running your own instance | -| `apps/` | Application packages (web frontend, API server, collaboration server) — created as implementation proceeds | -| `packages/` | Shared packages (types, permission logic, plugin SDK) | -| `deploy/` | Docker Compose stacks and deployment tooling | +| Path | Contents | +| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `docs/manual/` | User-facing manuals: user, pond-admin, site-admin, API, and MCP guides (start at [`docs/manual/README.md`](docs/manual/README.md)) | +| `docs/developer/` | Extending Dorfteich: plugin development and core contributions | +| `docs/architecture/` | Architecture documentation: ADRs, data model, permission model, collaboration and plugin concepts, deployment and operations | +| `docs/self-hosting/` | Install, update, backup, and troubleshooting guide for running your own instance | +| `apps/` | Application packages (web frontend, API server, collaboration server) — created as implementation proceeds | +| `packages/` | Shared packages (types, permission logic, plugin SDK) | +| `deploy/` | Docker Compose stacks and deployment tooling | ## Development @@ -60,9 +72,10 @@ imported as `@dorfteich/shared` — never copy code between apps. ## Status -The project is in the architecture and backlog phase. Implementation stories -are tracked as issues in this repository. Start reading at -[`docs/architecture/README.md`](docs/architecture/README.md). +Feature-complete for a 1.0: collaboration, permissions, import/export, +plugins, public REST API + MCP, backups with off-host copies and in-app +restore — all shipped and release-gated. Work is tracked as issues in +this repository. ## Contributing diff --git a/docs/developer/extending.md b/docs/developer/extending.md new file mode 100644 index 0000000..2592df9 --- /dev/null +++ b/docs/developer/extending.md @@ -0,0 +1,154 @@ +# Developer guide — extending Dorfteich + +Two ways to make Dorfteich do more: write a **plugin** (no fork, no +redeploy, safe by construction) or contribute to the **core**. Start +with a plugin unless you need to change how the product itself works. + +## Writing a plugin + +Read [`docs/architecture/plugin-architecture.md`](../architecture/plugin-architecture.md) +once — it is the contract. The short version: + +A plugin is a ZIP with a `manifest.json`, a single ES-module bundle +`plugin.js`, optional `styles.css`, `i18n/*.json`, and `assets/…`. It +contributes one or more **extension points**: + +| Type | You build | Example | +| -------------- | ------------------------------------------------------ | ---------------------- | +| `sectionStyle` | named CSS styles for content sections (no code at all) | `section-styles-basic` | +| `pageTool` | a read-only widget in the page-tools panel | `toc`, `page-index` | +| `block` | a custom editor block with its own data and edit UI | `mermaid`, `drawio` | + +### The sandbox — what your code can and cannot do + +Your `plugin.js` runs in an `