Skip to content

Repository files navigation

TypeCell

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.

Discord

TypeCell demo

Features

  • 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!

Documentation 📖

Read the docs and complete the interactive tutorial to get familiar with TypeCell:

» Check out the docs and Live Coding Tutorial

Feedback 🙋‍♂️🙋‍♀️

We'd love to hear your thoughts and see your experiments, so come and say hi on Discord.

Contributing 🙌

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.

Credits ❤️

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!

NLNet

Releases

Packages

Contributors

Languages