Skip to content

TypeCellOS/TypeCell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a9bd795 Β· May 22, 2024
Sep 26, 2023
Dec 11, 2021
Sep 26, 2023
May 22, 2024
May 22, 2024
Sep 26, 2023
Sep 26, 2023
Sep 26, 2023
Sep 26, 2023
May 24, 2021
May 22, 2024
Sep 26, 2023
Dec 1, 2022
Sep 26, 2023
May 22, 2024
May 22, 2024
Apr 18, 2021
Dec 1, 2022
Sep 30, 2021

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