TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
翻譯準備中
正在載入完整 README。 以下為已儲存的摘錄。
Wafflebase is a web-based collaborative office suite — spreadsheets, word
documents, presentations, markdown notes, and an infinite canvas, plus viewers
for uploaded PDFs, images, and other files. It offers real-time collaboration
and scalable performance, and bridges the gap between traditional spreadsheets
and database tools for handling large datasets.檢視完整 README ↗Wafflebase is a web-based collaborative office suite — spreadsheets, word documents, presentations, markdown notes, and an infinite canvas, plus viewers for uploaded PDFs, images, and other files. It offers real-time collaboration and scalable performance, and bridges the gap between traditional spreadsheets and database tools for handling large datasets.
Status: Actively developed, pre-1.0. Wafflebase ships tagged releases, publishes
@wafflebase/clito npm and ayorkieteam/wafflebaseimage to Docker Hub, and runs the public site at wafflebase.io. Every document type below works today, including external PostgreSQL and lakehouse data sources — but there is no 1.0 release and we don't call it production-ready yet.
Demo: https://wafflebase.io/shared/bed3dbe8-bdce-46ef-a76e-65fd67178cde
.xlsx (including styles), CSV, JSON, and Parquet.Text CRDT.@user mentions and in-app
notifications./api/v1/ surface, and
the wafflebase command-line client.| Layer | Technology |
|---|---|
| Frontend | React 19, Vite, TailwindCSS, Radix UI |
| Sheets engine | Canvas rendering, ANTLR4 formula parser, Yorkie CRDT |
| Docs engine | Canvas rendering, custom layout & pagination |
| Slides engine | Canvas + DOM-overlay editor, theme/master/layout model, reuses Docs rich-text engine in text boxes |
| Notes engine | CodeMirror 6 source editor, single Yorkie Text CRDT |
| Board engine | Slides scene engine under an injected pan/zoom viewport |
| Backend | NestJS, Prisma, PostgreSQL, GitHub OAuth + JWT |
Per-package detail lives in packages/README.md. The
frontend depends on all five engines — @wafflebase/sheets, @wafflebase/docs,
@wafflebase/slides, @wafflebase/notes, @wafflebase/board — plus
@wafflebase/core as workspace dependencies. Among the engines, slides builds
on docs and board builds on slides; notes stands alone.
The repository ships an .nvmrc, so if you use
nvm you can select the expected Node
version with:
nvm install # first run only — installs the version in .nvmrc
nvm use
pnpm install
Wafflebase depends on PostgreSQL and Yorkie for real-time collaboration. Both run via Docker:
docker compose up -d
Create packages/backend/.env:
FRONTEND_URL=http://localhost:5173
DATABASE_URL=postgresql://wafflebase:wafflebase@localhost:5432/wafflebase
JWT_SECRET=your_jwt_secret
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
GITHUB_CALLBACK_URL=http://localhost:3000/auth/github/callback
To obtain GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET, create a GitHub
OAuth App at https://github.com/settings/developers with the callback URL
above. See packages/backend/README.md for
the full list of environment variables.
pnpm backend migrate
pnpm dev
Open http://localhost:5173 in your browser.
Before submitting a PR, run the self-contained verification lane:
pnpm verify:self
This runs lint, unit tests, builds all packages, and checks chunk budgets and code entropy in one command. CI runs this automatically and posts results as a PR comment.
Browser visual and interaction tests are a separate lane — verify:self
does not run them:
pnpm verify:browser:docker # visual + interaction, in Docker
pnpm verify:frontend:visual # the visual suite alone, locally
For database-backed end-to-end tests (starts PostgreSQL, MinIO, and Azurite containers for you):
pnpm verify:integration:docker
We welcome contributions! See CONTRIBUTING.md for the full workflow — issue triage, design docs, verification lanes, commit conventions, and how AI coding agents fit in.
AGENTS.md via symlink)The repository also runs an agent development loop — how work enters, how it is reviewed, and what runs each part: docs/design/agent-pipeline/agent-pipeline.md.