pnpm workspace with apps/web, apps/api, apps/collab, and packages/shared; strict TypeScript base config, repo-wide ESLint (flat) + Prettier, Vitest per package, and root scripts lint/typecheck/test/ build. @dorfteich/shared ships a first health-response helper consumed by apps/api to prove workspace linking. Existing markdown docs are reformatted once by the new Prettier setup. Closes #1 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
70 lines
3.5 KiB
Markdown
70 lines
3.5 KiB
Markdown
# Dorfteich
|
|
|
|
Dorfteich is an open-source wiki system built around **ponds** (German:
|
|
_Teiche_) — self-contained wiki spaces that people and teams organize freely
|
|
with hierarchical labels, directories, and Obsidian-style page relations.
|
|
Pages are edited in a collaborative WYSIWYG editor with live cursors and
|
|
offline support.
|
|
|
|
- Project site: <https://dorfteich.cloud>
|
|
- Public flagship instance: <https://dorfteich.online>
|
|
- License: [MIT](LICENSE)
|
|
|
|
## Key features
|
|
|
|
- **Real-time collaboration** — multiple people edit the same page
|
|
simultaneously; everyone sees the other participants' cursors and input
|
|
live. Offline edits merge conflict-free on reconnect (CRDT-based).
|
|
- **Ponds** — isolated wiki spaces with their own members, permissions,
|
|
fonts, and page organization. Every registered person gets a personal pond.
|
|
- **Flexible organization** — hierarchical labels, free page ordering,
|
|
`[[wikilinks]]` with backlinks. A classic page tree is possible but never
|
|
enforced.
|
|
- **Fine-grained permissions** — roles (Site Admin, Pond Admin, Editor,
|
|
Reader, Public) can be granted per pond, per label, or per page; the most
|
|
specific setting wins.
|
|
- **Import & export** — Markdown as the primary exchange format, plus
|
|
best-effort structural import from Word/OpenOffice and export to
|
|
Word/OpenOffice/PDF.
|
|
- **Plugins** — sandboxed extensions (custom blocks, styles, page tools)
|
|
installable at runtime without redeploying the instance.
|
|
- **Self-hosting first** — a single `docker compose up` plus a guided
|
|
first-run setup wizard yields a working instance.
|
|
|
|
## Repository layout
|
|
|
|
| Path | Contents |
|
|
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
|
| `docs/architecture/` | Architecture documentation: ADRs, data model, permission model, collaboration and plugin concepts, deployment and operations |
|
|
| `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
|
|
|
|
Requirements: Node.js ≥ 22 and [pnpm](https://pnpm.io) (`npm install -g pnpm`).
|
|
|
|
```sh
|
|
pnpm install # install all workspace dependencies
|
|
pnpm lint # ESLint + Prettier check across the repo
|
|
pnpm typecheck # TypeScript --noEmit in every package
|
|
pnpm test # Vitest in every package
|
|
pnpm build # build every package (dependency order)
|
|
```
|
|
|
|
The workspace packages live under `apps/` (web, api, collab) and
|
|
`packages/` (shared). Shared logic goes into `packages/shared` and is
|
|
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).
|
|
|
|
## Contributing
|
|
|
|
Code, comments, and documentation are written in English. Write clear code
|
|
that humans can follow easily; when in doubt, prefer readability over
|
|
cleverness. All contributions are accepted under the MIT license.
|