Some checks failed
CD / Build and push images (push) Successful in 3m57s
CD / Deploy to Test (push) Successful in 9s
CI / Lint, typecheck, test (push) Failing after 4m16s
CI / Auth e2e pack (push) Has been skipped
CI / Import/export fidelity gate (push) Has been skipped
CI / Build container images (push) Has been skipped
CD / Smoke tests against Test (push) Successful in 1m19s
CD / Promote to Int (push) Successful in 11s
The slug-based machine surfaces now see and shape the hierarchy: - REST: page list/detail carry parent (the parent page's slug, nulled when the token's user may not read it — same no-leak rule as the internal list); create accepts parent; PATCH accepts parent (slug nests, null moves to the top level, appended at the end of the new sibling group via the new PagesService.moveToEnd). Cycle/depth refusals keep their regular error codes. OpenAPI updated. - MCP: list_pages returns parent, create_page takes an optional parent slug, update_page moves with parent (slug|null); tool errors carry the api code (page_cycle covered in the e2e pack). - ZIP export deliberately stays flat — noted in features.md; the hierarchy is organizational only. e2e: REST pack covers nested create, list shape, move/root-move, 409 page_cycle, 404 unknown parent; MCP pack covers nested create, list parent, and the cycle tool error. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
117 lines
5.3 KiB
Markdown
117 lines
5.3 KiB
Markdown
# Dorfteich — what it is and why you might want it
|
|
|
|
_Deutsche Fassung: [docs/de/features.md](de/features.md)_
|
|
|
|
Dorfteich is an open-source wiki for people who want to think and write
|
|
together — in real time, on their own server, without handing their
|
|
knowledge to a cloud company.
|
|
|
|
The name means "village pond": the place where everyone in the village
|
|
comes together. Your wiki is organized into **ponds** — one personal pond
|
|
for every member, plus shared ponds for teams, clubs, families, or
|
|
projects.
|
|
|
|
## Writing together, live
|
|
|
|
- **Real-time collaboration.** Open the same page as a colleague and
|
|
watch each other type — with named cursors and a presence strip showing
|
|
who is on the page. No locking, no "someone else is editing" dialogs,
|
|
no lost changes.
|
|
- **Works offline.** Keep typing when the connection drops; your edits
|
|
merge back in automatically when you are online again.
|
|
- **A friendly editor.** Headings, lists, task lists, tables, quotes,
|
|
code blocks, and images — with full **Markdown** round-trip: what you
|
|
write can always leave the system as clean Markdown again.
|
|
- **Wikilinks.** Type `[[page-name]]` to link pages. Links to pages that
|
|
do not exist yet are collected for you, one click creates them.
|
|
Backlinks show you where every page is referenced.
|
|
|
|
## Never lose anything
|
|
|
|
- **Version history.** Every page keeps automatic snapshots plus named
|
|
versions you save yourself. Compare, see who contributed, and restore
|
|
any earlier state — restores are visible live in every open editor.
|
|
- **Trash with a grace period.** Deleted pages sit in a per-pond trash
|
|
and can be restored for weeks before they are purged.
|
|
- **Real backups.** Nightly database + file backups, optional off-host
|
|
copies to any **Nextcloud** you control, and a tested one-click restore
|
|
— including a documented path to rebuild an instance from nothing.
|
|
|
|
## Organize the way you think
|
|
|
|
- **Page tree**: nest pages under pages (up to 6 levels) — slugs and links
|
|
stay flat, so moving a page never breaks anything; the ZIP export also
|
|
stays flat (the hierarchy is organizational only)
|
|
- **Labels**, hierarchical if you like, to slice a pond any way you want
|
|
— and to scope access rules (see below).
|
|
- **Fast full-text search** across everything you may read — accent- and
|
|
umlaut-insensitive, with substring matching.
|
|
- **A table of contents, page indexes, diagrams** and more through
|
|
built-in plugins (see "Extensible" below).
|
|
|
|
## Share exactly as much as you want
|
|
|
|
- **Fine-grained permissions.** Grant read or write access per pond, per
|
|
label, or per page — to individual people, to all signed-in members, or
|
|
to the public internet. Deny rules carve out exceptions. A built-in
|
|
inspector explains _why_ someone can or cannot see a page.
|
|
- **Public pages.** Publish selected pages read-only to the world, with
|
|
clean URLs — the rest of the pond stays private.
|
|
- **Comments.** Discuss in threads next to the content, resolve what is
|
|
settled, and choose per pond whether every reader or only editors may
|
|
comment.
|
|
- **Notifications you control.** Watch pages or whole ponds, get an
|
|
in-app inbox, and choose e-mail digests (hourly, daily, or off) with a
|
|
working unsubscribe link.
|
|
|
|
## Your documents come and go freely
|
|
|
|
- **Import** Word (`.docx`), LibreOffice (`.odt`), and Markdown files —
|
|
including embedded images.
|
|
- **Export** any page as Markdown, Word, LibreOffice, or **PDF** (with
|
|
your pond's typography), and any pond as a ZIP of Markdown files. No
|
|
lock-in, ever.
|
|
|
|
## Machines are welcome too — on your terms
|
|
|
|
- **REST API.** A clean, token-authenticated public API to read, write,
|
|
search, label, and comment — with an OpenAPI description. Tokens carry
|
|
exactly the permissions of their owner, never more.
|
|
- **Built-in MCP endpoint.** Connect Claude Code or any MCP-capable AI
|
|
assistant directly to your wiki — it can search, read, and (if you
|
|
allow it) write pages. Both interfaces are **off by default** and each
|
|
pond opts in separately.
|
|
|
|
## Extensible, but safely
|
|
|
|
- **Plugins** add block types (Mermaid diagrams, full **draw.io**
|
|
editing), page tools (table of contents, page index), and section
|
|
styles. Every plugin runs in a strict sandbox: no cookies, no storage,
|
|
no network — it cannot read more than the person looking at it.
|
|
- Reference plugins ship with the product and double as documented
|
|
examples for writing your own.
|
|
|
|
## Private by design
|
|
|
|
- **Self-hosted.** One `docker compose up`, a friendly first-run wizard,
|
|
and it is yours. Everything — fonts included — is served from your own
|
|
domain: pages make **zero requests to third parties**.
|
|
- **GDPR-friendly.** Imprint and privacy-policy pages built in (with
|
|
templates), personal data export as ZIP, account deletion with
|
|
content-preserving pseudonymization, and an audit trail of
|
|
administrative actions.
|
|
- **Bilingual.** The entire interface speaks German and English; every
|
|
user picks their language.
|
|
|
|
## Honest operations
|
|
|
|
- Health endpoints that distinguish "down" from "degraded", an admin
|
|
system panel with job status, backup state, audit log and storage
|
|
overview, monthly automated restore drills — the operator can _prove_
|
|
the backups work, not just hope.
|
|
|
|
---
|
|
|
|
_Dorfteich is MIT-licensed open source. If you can run Docker, you can
|
|
run Dorfteich — see [self-hosting](self-hosting/README.md)._
|