ToolJet is an open-source low-code platform that enables developers and non-developers to rapidly build internal applications, dashboards, and workflows without writing extensive code. It targets engineering teams, operations staff, and business analysts who need custom tools for data visualization, automation, and internal tooling. ToolJet solves the problem of slow, expensive custom app development by providing a visual interface connected to databases, APIs, and SaaS platforms.
Built with React.js, Node.js, and TypeScript, ToolJet supports deployment via Docker, Kubernetes, AWS, GCP, Azure, and more. It includes a built-in no-code database, JavaScript/Python code execution, and extensible plugins. The platform is AGPL-licensed and serves as the foundation for ToolJet AI, which adds AI-powered app generation and debugging features.
What You Get
- Visual App Builder - Drag-and-drop interface with 60+ responsive components including Tables, Charts, Forms, Lists, and Progress Bars for building full-stack UIs.
- ToolJet Database - Built-in no-code database to store and manage application data without external dependencies.
- 80+ Data Sources - Native connectors to PostgreSQL, MySQL, MongoDB, REST APIs, GraphQL, Airtable, AWS S3, Google Sheets, Stripe, and more.
- Multi-page Apps & Multiplayer Editing - Build complex applications with multiple pages and collaborate in real-time with team members.
- Code Anywhere - Execute JavaScript and Python code directly within components to manipulate data, call external APIs, or add custom logic.
- Secure by Design - AES-256-GCM encryption, proxy-only data flow to prevent data leaks, SSO (SAML/OAuth), and granular access controls.
- Extensibility via CLI - Create custom plugins and data source connectors using the @tooljet/cli npm package.
- Flexible Deployment - Self-host on Docker, Kubernetes (EKS, GKE, AKS), AWS EC2/ECS, Azure, GCP Cloud Run, DigitalOcean, and OpenShift.
- Collaboration Tools - Inline comments, @mentions, and role-based permissions for team-based app development.
- Embedded Apps - Securely embed ToolJet applications within existing portals, websites, or other web applications.
Common Use Cases
- Building internal dashboards - A DevOps team uses ToolJet to visualize CI/CD pipeline metrics from Jenkins and GitHub Actions in real-time.
- Creating customer support tools - A SaaS company builds a ticketing dashboard that pulls data from Zendesk, Stripe, and PostgreSQL to track customer issues and payments.
- Automating HR workflows - An HR department creates a leave request form connected to Google Sheets and Slack to automate approval notifications.
- Developing data ingestion tools - A data analyst builds an AWS S3 browser tool to explore, filter, and download files without CLI access.
Under The Hood
Architecture
- Monolithic mono-repo with clear separation between server, frontend, and plugin modules, enforcing modularity through dedicated directories
- Server-side follows layered architecture with Express-like routing, TypeORM for data access, and service layers using dependency injection via custom registries
- Plugin system enables runtime extensibility through isolated packages that register custom data sources and actions, decoupling third-party integrations from core logic
- Vue.js frontend uses component-based design with Pinia for state management, tightly aligned with server API contracts
- Docker-compose orchestrates multiple services (PostgreSQL, Redis, PostgREST) to simulate microservice deployment while maintaining monorepo simplicity
- Configuration system leverages environment variables and npm workspaces to support consistent deployment across cloud and on-prem environments
Tech Stack
- Node.js 22.15.1 with TypeScript powers the backend, using pg for PostgreSQL and PostgREST as a database abstraction layer
- Vue.js frontend is built with Webpack and Vite-like tooling, compiled via npm scripts with production optimizations and plugin integration
- PostgreSQL serves as the primary database with comprehensive migration and seeding scripts, supported by Redis for caching and session state
- Docker containers isolate server, client, plugins, and supporting services, with custom Dockerfiles and docker-compose for local and preview environments
- CI/CD pipelines on Render and Netlify automate builds for all components using npm-based workflows, with Dependabot managing dependencies across subprojects
- Testing and linting tooling includes Cypress, ESLint with TypeScript plugins, Husky, and Lint-Staged to enforce quality across codebases
Code Quality
- Limited test coverage with widespread use of incomplete test stubs, particularly in plugin suites, and minimal end-to-end testing
- Inconsistent error handling relies on generic exceptions without custom error classes or structured logging, reducing observability
- Strong TypeScript usage in server code with proper entity definitions and dependency injection, but frontend code lacks comparable type discipline
- Server architecture shows clear separation of concerns with well-structured controllers and services, though plugin code suffers from poor modularity
- Plugin directories lack comprehensive linting, consistent naming, and documentation, leading to fragmented code quality
- Heavy reliance on HAR files for test data introduces brittleness and limits test reliability and maintainability
What Makes It Unique
- Native drag-and-drop UI builder with real-time rendering empowers non-developers to construct full-stack applications visually
- Dynamic plugin-based connectors enable seamless integration of databases, APIs, and SaaS tools without backend modifications
- Visual query builder with no-code data transformations eliminates the need for external data preparation tools
- Unified event system directly binds UI interactions to data operations, creating a true low-code application runtime
- Edition-aware components dynamically adapt functionality based on deployment context, unifying open-source and enterprise editions
- Real-time auto-save and persistent state across the entire canvas ensure seamless user sessions without manual deployment or version control