Skip to content

TypeCellOS/TypeCell

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