Welcome to TypeCell, where Notion meets Jupyter Notebooks - all open source. TypeCell is a fresh take on what documents and software can look like. Together, we want to make it a lot easier to build software, and ultimately to understand, build and share knowledge.
- Open Source Notion-style workspaces and documents (powered by BlockNote)
- Local-First architecture built using Yjs, with support for live multi-user collaboration
- Code Blocks for a live, as-you-type coding experience enabling End-User Programming
- Same, powerful editing experience as VS Code
- Full TypeScript and React support! (no weird custom language constructs)
- The Reactive Runtime makes sure code blocks automatically re-evaluate when their dependencies update (learn more)
- Import NPM packages + types just by writing a regular
import
statement
» Create your free workspace to get started!
Read the docs and complete the interactive tutorial to get familiar with TypeCell:
» Check out the docs and Live Coding Tutorial
We'd love to hear your thoughts and see your experiments, so come and say hi on Discord.
See CONTRIBUTING.md for more info and guidance on how to run the project (TLDR: just use npm start
).
TypeCell is organised as a monorepo containing several packages. Directory structure:
typecell
├── packages
│ ├── editor - The main React application
│ ├── engine - The live-code execution engine and Reactive Runtime
│ ├── frame - sandboxed iframe where end-user code evaluates
│ ├── packager - Tool to bundle TypeCell notebook apps (WIP)
│ ├── parsers - Helpers to convert to / from TypeCell documents
│ ├── server - HocusPocus + Supabase server for storing documents
│ ├── shared - TypeCell specific models shared across the codebase
│ ├── shared-test - Helper functions shared across the codebase for unit tests
│ ├── util - Generic helper functions
│ └── y-penpal - yjs transport for crossdomain / crossframe communication
├── patches - patch-package patches
└── test-util - Data for unit tests
The codebase is automatically tested using Vitest and Playwright.
We build on top of some really great technologies:
- Monaco: the open source editor that also powers VS Code
- Yjs: CRDT for multi-user collaboration
- MobX: for our Reactive Runtime
- ESM.sh: for dynamic ESM imports from NPM
- Typescript: for our compiler and language toolkit
TypeCell is proudly sponsored by the renowned NLNet foundation who are on a mission to support an open internet, and protect the privacy and security of internet users. Check them out!