OpenBlock is an open-source modular personal OS for tracking work, projects, and operations. It provides a self-hosted workspace with issue tracking, project management, goal setting, and extensible "blocks" that add domain-specific functionality -- like a custom-built Notion you fully control.
pnpm install
pnpm devOpens at http://localhost:3200. An embedded Postgres database starts automatically -- no external DB setup required.
OpenBlock is a monorepo with five main areas:
packages/
db/ Drizzle ORM schema, migrations, DB client
shared/ Types, constants, validators (used by server + UI)
server/ Express API (routes, services, middleware)
ui/ React/Vite frontend (Radix + Tailwind)
blocks/ Domain-specific extensions (each block adds schema, routes, pages)
- Server: Express with TypeScript
- UI: React 19 + Vite
- Database: Embedded Postgres with Drizzle ORM
- Styling: Tailwind CSS + Radix UI
- Data fetching: TanStack Query
- Routing: react-router-dom
Blocks are self-contained modules that extend OpenBlock with domain-specific functionality.
- Create a directory under
blocks/(e.g.,blocks/myblock/) - Add a
block.tsmanifest declaring the block's metadata - Define your schema in
blocks/myblock/schema/(Drizzle tables) - Add API routes in
blocks/myblock/routes/ - Add UI pages in
blocks/myblock/pages/ - Agents live in
blocks/myblock/agents/(seeagents/AGENTS.mdfor the operating guide)
See SPEC.md for detailed architecture, conventions, and design decisions.