/TypeCell

Primary LanguageTypeScriptGNU Affero General Public License v3.0AGPL-3.0

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