Skip to content

This repository contains the React application for the pennant-notebook project.

License

Notifications You must be signed in to change notification settings

pennant-notebook/client

Repository files navigation

Pennant Notebook Logo

Welcome to Pennant! An Open-Source Computational Notebook Supporting Real-Time Collaboration and Flexible Code Execution in Markdown, JavaScript, and Python.


Pennant Notebook Demo



Read Our Case Study

Features

  • Real-Time Collaboration: Powered by Yjs, a CRDT that enables real-time collaboration and synchronization between different users.
  • Versatile Code Editing: CodeMirror 6 provides a rich coding environment, integrated with Yjs for collaborative editing.
  • Offline Persistence: Efficient caching and offline capabilities with y-indexeddb.
  • Drag-and-Drop Functionality: Powered by react-dnd.
  • Markdown Support: Enhanced markdown editing experience with BlockNote.
  • Python Support: Fully equipped to handle Python notebooks.
  • Shared Execution Context: Facilitates collaborative coding where outputs are updated in real-time, and visible to all connected users.
  • Notebook-Style Code Execution: Independently run cells or the full notebook, tailored for exploratory coding and enhanced learning.

Quick Start

Pennant is structured as a multi-repo project for modular development and deployment. The instructions below are for the client repository only. For detailed setup instructions for all components, please refer to the CONTRIBUTING.md file.

Setup

Prerequisites

  • Set up a .env file in your project root using .env.example as a template.
  • Fill in the necessary environment variables.

Installation

Clone the repo

git clone https://github.com/pennant-notebook/client.git

Install NPM packages

npm install

Usage

To start the development server, run:

npm start

Testing

  • Comprehensive testing with Playwright for E2E and component tests.
  • Tests are organized in the __tests__ directory.

Running Tests

For E2E tests:

npm run test:e2e

For component tests:

npm run test:ct

Documentation

The preliminary documentation is available at https://docs.trypennant.com.

Please feel free to explore and provide feedback to help us improve.

Upcoming Features

Support for additional programming languages: Golang, Ruby

Contributing

Feel free to submit issues, feature requests, or pull requests. Your contributions are highly valued and welcome. For detailed guidelines, refer to CONTRIBUTING.md.

Credits

Our work builds upon the foundations laid by several outstanding open source projects and the generous support of JetBrains:

  • Yjs: The CRDT framework that enables RTC through its efficient shared data model and types.
  • CodeMirror: The open source text editor that powers Chrome DevTools.
  • BlockNote: Markdown editor that powers our markdown cells.
  • TypeScript: Our compiler and language toolkit.

 
     Credits
 

License

Pennant Notebook is MIT licensed.