NocoDB is an open-source, self-hostable platform that transforms existing SQL databases into intuitive, Airtable-like spreadsheet interfaces. It empowers non-technical users to manage data through visual grids, Kanban boards, forms, and galleries — while developers retain full access to the underlying database via REST APIs and SQL. Built with TypeScript and designed for self-hosting, NocoDB supports PostgreSQL, MySQL, and SQLite, and deploys via Docker or binary installers.
The platform integrates with popular tools like Slack, AWS S3, and SMTP services through its App Store, and provides JWT-based authentication and SDKs for programmatic access. With no data lock-in and support for millions of rows, NocoDB is ideal for teams seeking control over their data without sacrificing ease of use.
What You Get
- Spreadsheet-Style Database Interface - A familiar Excel-like grid view with row/column editing, sorting, filtering, and hiding columns — no SQL required.
- Multiple Data Views - Grid, Kanban, Gallery, Form, and Calendar views to visualize and interact with data in context-specific ways.
- Built-in REST API & SDK - Automatic generation of RESTful APIs for any connected database, with JavaScript/TypeScript SDK for programmatic access.
- Role-Based Access Control - Granular permissions at database, table, and row levels to control who can view, edit, or delete data.
- App Store for Automations - Pre-built integrations with Slack, Discord, AWS S3, Minio, SMTP, and MailerSend to trigger actions based on database events.
- Self-Hosted with Docker Support - Deploy on your own infrastructure using Docker Compose or single binaries for Linux, macOS, and Windows — with auto-updates and SSL via Traefik.
Common Use Cases
- Running a CRM without SaaS lock-in - A small business uses NocoDB to manage customer contacts and interactions by connecting to their existing PostgreSQL database, with custom views and Slack notifications for new leads.
- Managing project tasks with Kanban boards - A product team links NocoDB to their MySQL database to visualize sprints as Kanban columns, assign owners, and track deadlines without switching tools.
- Building internal inventory trackers - A warehouse operator creates a no-code inventory system using NocoDB’s form and gallery views to scan and update stock levels, with automatic image uploads to Minio.
- Automating data workflows across teams - An operations manager connects NocoDB to their SQL database and sets up email alerts via SMTP when inventory falls below threshold, with data exported to AWS S3 for reporting.
Under The Hood
Architecture
- Monorepo structure cleanly separates frontend (nc-gui), backend (nocodb), and shared utilities (nocodb-sdk) using pnpm workspaces to enforce modular boundaries
- Backend follows clean architecture with NestJS modules (Controller, Service, Repository) and dependency injection to encapsulate business logic
- API endpoints are versioned and organized by resource type, using Knex.js for database abstraction to avoid ORM lock-in
- Frontend leverages component composition and composable functions to decouple UI logic from data fetching
- Hook system enables dynamic event triggers and pluggable integrations, supporting extensibility without core modifications
Tech Stack
- Node.js backend powered by NestJS and Nuxt.js, with RESTful endpoints for database metadata and record operations
- Vue 3 frontend with Pinia for state management, Tiptap for rich text editing, and WindiCSS for utility-based styling
- Monorepo managed via Lerna and pnpm with strict TypeScript enforcement and Vite/esbuild for bundling
- Multi-database support through Knex.js with built-in migrations and query abstraction
- Automated dependency updates and pre-commit hooks ensure consistent security and code hygiene
Code Quality
- Testing is severely underdeveloped, with superficial assertions and minimal coverage, leaving critical paths unvalidated
- Code organization is inconsistent, with clean patterns in core modules but fragmented logic in utilities and tests
- Error handling is generic and lacks structured logging or custom exceptions, leading to opaque failures
- Naming conventions are inconsistent, reducing readability and increasing cognitive load
- Type safety is inconsistently applied, with JavaScript files bypassing TypeScript in key areas
What Makes It Unique
- Transforms any SQL or NoSQL database into a live, spreadsheet-like interface with real-time synchronization
- Extensible plugin system allows custom logic and UI components to be injected without forking or rebuilding
- Dynamic column typing adapts to diverse data sources while preserving relational integrity
- AI-powered data transformation engine suggests context-aware cleaning rules to reduce manual ETL
- Unified workspace consolidates databases, APIs, and services into a visual, drag-and-drop data orchestration platform