Empowering Offline Collaboration in Spreadsheets
Break free from the chains of constant connectivity with the power of local-first software. Dive into a revolutionary way of collaboratively editing spreadsheet formulas without the need for real-time online presence. Experience seamless merges using CRDTs and witness the power of structured conflict resolution.
- AST-based Formula Representation: Convert and visualize Excel formulas as structured Abstract Syntax Trees.
- Conflict-free Merges with CRDTs: Tailored CRDT implementations that bring robustness to merging offline formula edits.
- Interactive UI: Engage with an intuitive interface, input your formulas, and see the magic unfold.
In today's cloud-centric era, most collaboration tools rely on real-time connectivity. But what if there's a better way? Our project explores the vast potential of local-first applications, focusing on the niche of spreadsheet formula editing.
With an abundance of text-based collaborative tools, collaborative spreadsheet editing remains a daunting challenge. By harnessing the inherent structure of Excel formulas, we're crafting a solution that promises precise merging with reduced conflicts.
-
Install nix: We use Nix for a reproducible development experience. Ensure you have it installed. Instructions for installation can be found here.
- Note for Windows Users: Nix does not run natively on Windows. To use Nix on Windows, you need to set up the Windows Subsystem for Linux (WSL). Follow the WSL installation guide to get started.
-
Enable nix flake: The
flake
feature is still considered experimental thus a specific Nix configuration is necessary in~/.config/nix/nix.conf
:
experimental-features = nix-command flakes
-
Clone the repository:
git clone https://github.com/fabian-gubler/cellster.git
-
Navigate to the project directory:
cd cellster
-
Using Nix, set up the development environment. This will ensure that all the required dependencies for both the backend (Python) and the frontend (Web tech) are installed:
nix develop
Important
Using Pip vs Nix:
- Nix: Guarantees a consistent development environment by managing dependencies, ensuring reproducibility across different setups.
- Pip: Prone to variations in package versions and local configurations, leading to potential inconsistencies.
- Recommendation: We recommend using
nix
for a more reliable setup. If usingpip
, be aware of these limitations.
- Python Installation: Ensure that Python is installed on your system. You can download it from the official Python website.
- Pip Installation: Make sure you have
pip
installed, which is Python's package installer. It usually comes with Python installation.
To check if pip
is already installed on your system, run the following command:
pip --version
-
Clone the repository:
git clone https://github.com/fabian-gubler/cellster.git
-
Navigate to the project directory:
cd cellster
-
Create a virtual environment:
python -m venv venv
-
Activate the virtual environment:
- On Windows:
.\venv\Scripts\activate
- On Unix or MacOS:
source venv/bin/activate
- On Windows:
-
Install the requirements:
pip install -r requirements.txt
Running the Application:
- To start the interface, run:
python main.py
Running Tests with Pytest:
- Ensure that you are in the project's root directory.
- Execute the following command to run the tests:
pytest
We're always open to feedback and contributions. Feel free to open issues, suggest features, or contribute to the codebase.