NocoDB

An Open Source Airtable Alternative Build With Vue.js

Turns any MySQL, PostgreSQL, SQL Server, SQLite & MariaDB into a smart-spreadsheet.

Quick try

1-Click Deploy

Heroku

Deploy NocoDB to Heroku with 1-Click

Using Docker

docker run -d --name nocodb -p 8080:8080 nocodb/nocodb

Using Npm

npx create-nocodb-app

Using Git

git clone https://github.com/nocodb/nocodb-seed
cd nocodb-seed
npm install
npm start

GUI

Access Dashboard using : http://localhost:8080/dashboard

Screenshots

2

1

7

5

6

3

4

11

10

8

9

Features

Rich Spreadsheet Interface

  • ⚡  Search, sort, filter, hide columns with uber ease
  • ⚡  Create Views : Grid, Gallery, Kanban, Gantt, Form
  • ⚡  Share Views : public & password protected
  • ⚡  Personal & locked Views
  • ⚡  Upload images to cells (Works with S3, Minio, GCP, Azure, DigitalOcean, Linode, OVH, BackBlaze)!!
  • ⚡  Roles : Owner, Creator, Editor, Commenter, Viewer, Commenter, Custom Roles.
  • ⚡  Access Control : Fine-grained access control even at database, table & column level.

App Store for workflow automations :

  • ⚡  Chat : Microsoft Teams, Slack, Discord, Mattermost
  • ⚡  Email : SMTP, SES, Mailchimp
  • ⚡  SMS : Twilio
  • ⚡  Whatsapp
  • ⚡  Any 3rd Party APIs

Programmatic API access via :

  • ⚡  REST APIs (Swagger)
  • ⚡  GraphQL APIs.
  • ⚡  Includes JWT Authentication & Social Auth
  • ⚡  API tokens to integrate with Zapier, Integromat.

Production Setup

NocoDB requires a database to store metadata of spreadsheets views and external databases.
And connection params for this database can be specified in NC_DB environment variable.

Docker

Example MySQL

docker run -d -p 8080:8080 \
    -e NC_DB="mysql2://host.docker.internal:3306?u=root&p=password&d=d1" \
    -e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \
    nocodb/nocodb

Example Postgres

docker run -d -p 8080:8080 \
    -e NC_DB="pg://host:port?u=user&p=password&d=database" \
    -e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \
    nocodb/nocodb

Example SQL Server

docker run -d -p 8080:8080 \
    -e NC_DB="mssql://host:port?u=user&p=password&d=database" \
    -e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \
    nocodb/nocodb

Docker Compose

git clone https://github.com/nocodb/nocodb
cd docker-compose
cd mysql or pg or mssql
docker-compose up

Environment variables

Variable Mandatory Comments If absent
NC_DB Yes See our database URLs A local SQLite will be created in root folder
DATABASE_URL No JDBC URL Format. Can be used instead of NC_DB. Used in 1-Click Heroku deployment
DATABASE_URL_FILE No path to file containing JDBC URL Format. Can be used instead of NC_DB. Used in 1-Click Heroku deployment
NC_PUBLIC_URL Yes Used for sending Email invitations Best guess from http request params
NC_AUTH_JWT_SECRET Yes JWT secret used for auth and storing other secrets A Random secret will be generated
NC_SENTRY_DSN No For Sentry monitoring
NC_CONNECT_TO_EXTERNAL_DB_DISABLED No Disable Project creation with external database
NC_DISABLE_TELE No Disable telemetry
NC_BACKEND_URL No Custom Backend URL http://localhost:8080 will be used

Running locally

git clone https://github.com/nocodb/nocodb
cd nocodb

# run backend
cd packages/nocodb
npm install
npm run watch:run

# open localhost:8080/dashboard in browser

# run frontend 
cd packages/nc-gui
npm install
npm run dev

# open localhost:3000/dashboard in browser

Changes made to code automatically restart.

GitHub

https://github.com/nocodb/nocodb