explaingit

gristlabs/grist-core

11,045TypeScriptAudience · generalComplexity · 4/5LicenseSetup · moderate

TLDR

Grist is an open source spreadsheet that works like a database, columns have types, formulas are written in Python, and you can self-host it on your own server or use the hosted version at getgrist.com.

Mindmap

mindmap
  root((Grist))
    What it does
      Spreadsheet plus DB
      Python formulas
      Typed columns
    Deployment
      Self-hosted Docker
      Desktop app
      getgrist.com hosted
    Features
      Linked views
      REST API
      Forms
      Incremental import
    Audience
      Teams
      Data workers
      Governments
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Replace Airtable with a self-hosted spreadsheet-database that your team fully controls and can extend.

USE CASE 2

Build an interactive dashboard where clicking a row in one table automatically filters linked charts and cards beside it.

USE CASE 3

Create a public data collection form that writes directly into a structured spreadsheet your team can query with Python formulas.

USE CASE 4

Store and manage data in a SQLite file format so any standard database tool can open and read it directly.

Tech stack

TypeScriptPythonSQLite

Getting it running

Difficulty · moderate Time to first run · 30min

Self-hosting requires Docker or Node.js, no setup needed if using the hosted service at getgrist.com.

Use, modify, and distribute freely including commercially, keep the license notice, changes to the library itself must be shared under the same Apache 2.0 license.

In plain English

Grist is a spreadsheet application that works more like a database than a traditional spreadsheet. In a regular spreadsheet, each cell can hold whatever you put in it. In Grist, columns are named and hold one type of data, and formulas update automatically when referenced data changes, much like how formulas behave in Excel but with the structure of a database table. If you have used Airtable, the model will feel familiar. The open source grist-core repository is the Community edition, which you can run on your own server to host spreadsheets for yourself or your team. The same codebase also powers a hosted service at getgrist.com. There are two companion repositories: grist-desktop is a standalone app for Linux, macOS, and Windows that stores spreadsheets locally, and grist-static lets you embed a read-only Grist spreadsheet in any static website without a server. Formulas in Grist are written in Python, with access to the full Python standard library and many Excel functions. An AI assistant is built in for generating formulas, and it works with multiple AI providers. Files are stored in SQLite, which is a widely supported database format, so you can open a Grist file with any SQLite-compatible tool and read the data directly. The feature set for building views and dashboards is substantial. You can lay out charts, card views, calendars, and tables side by side and link them so that clicking a row in one view filters data in another. You can create forms that write directly to your spreadsheet. Incremental imports let you bring in new rows from a CSV without duplicating records you already have. The REST API, webhooks, and Zapier integration connect Grist to other tools. There are also access control options for sharing specific views or data with specific people. The project is open source under the Apache 2.0 license, developed by Grist Labs with significant contributions from French government agencies. The full README is longer than what was shown.

Copy-paste prompts

Prompt 1
I want to self-host Grist using Docker. Walk me through the docker-compose setup, including persistent storage and setting an admin password.
Prompt 2
Write a Grist Python formula that calculates the number of working days between a Start_Date column and an End_Date column, excluding weekends.
Prompt 3
How do I use the Grist REST API to programmatically add new rows to a table from a Python script?
Prompt 4
Set up a Grist layout where a table of projects and a linked card view show only records for the selected project row, explain which link settings to configure.
Prompt 5
I want to import a CSV into Grist incrementally so new rows are added but existing rows are not duplicated. Walk me through the incremental import settings.
Open on GitHub → Explain another repo

← gristlabs on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.