A Notion-like collaborative workspace built with Next.js, Fastify, and Y.js. Create nested pages, rich-text documents, and relational databases — all with real-time multiplayer editing.
- Rich text editor — Headings, lists, code blocks, callouts, toggles, images, task lists
- Slash commands — Type
/to insert any block type - @mentions — Type
@to link to any page in the workspace - Real-time collaboration — Multiplayer cursors and live sync via Y.js + Hocuspocus
- Databases — Table and board/kanban views with typed properties (text, number, select, date, checkbox, multi-select, URL, email)
- Row detail panel — Click any database row to open its full page editor inline
- Page cover images — Upload a cover image per page
- Comment threads — Threaded comments with replies and resolve/unresolve
- Version history — Snapshot and restore previous page states
- Public share links — Share pages with view/comment/edit access
- Full-text search —
⌘Kcommand palette to find pages across the workspace - Workspace members — Invite collaborators with role-based access (owner / admin / editor / viewer)
packages/
├── api/ Fastify REST API :3001
├── collab/ Hocuspocus WebSocket :1234
├── web/ Next.js 14 frontend :3000
└── shared/ Zod schemas + TypeScript types
| Layer | Technology |
|---|---|
| Frontend | Next.js 14, React 18, Tailwind CSS, TipTap |
| API | Fastify 4, Drizzle ORM, PostgreSQL 16 |
| Real-time | Hocuspocus, Y.js (CRDT) |
| Auth | JWT (access + refresh token rotation) |
| Cache | Redis 7 |
| File uploads | @fastify/multipart, served via @fastify/static |
| Package manager | pnpm workspaces |
See INSTALL.md for full local setup instructions.
# 1. Start infrastructure
docker compose up -d
# 2. Install dependencies
pnpm install
# 3. Copy and configure environment files
cp packages/api/.env.example packages/api/.env
cp packages/collab/.env.example packages/collab/.env
cp packages/web/.env.local.example packages/web/.env.local
# 4. Run database migrations
pnpm db:migrate
# 5. Start all services in parallel
pnpm devOpen http://localhost:3000.
See DEPLOY.md for production deployment to Google Cloud Run.
MIT