ToolJet
Open-source low-code platform for internal tools.
Overview
ToolJet is an open-source low-code platform designed for building internal tools and business applications without extensive coding. Created to bridge the gap between no-code limitations and full development complexity, ToolJet enables teams to rapidly create dashboards, admin panels, CRUD applications, and workflow automation tools using a visual drag-and-drop interface. The platform supports over 40 data source integrations including databases, APIs, and SaaS tools, making it particularly valuable for organizations that need to consolidate data from multiple systems into unified interfaces.
This stack combines ToolJet with PostgreSQL to create a production-ready internal tool development environment. PostgreSQL serves as ToolJet's metadata store, managing application configurations, user permissions, data source connections, and component definitions, while also functioning as a primary data source for applications built within the platform. The combination leverages PostgreSQL's robust transaction support and JSON capabilities to handle ToolJet's complex application schemas and dynamic query requirements.
This configuration is ideal for development teams, IT departments, and growing companies that need to rapidly prototype and deploy internal applications. Unlike SaaS alternatives, this self-hosted setup provides complete data control, unlimited users, and the ability to integrate with internal systems behind firewalls, making it particularly valuable for organizations with strict data governance requirements or those seeking to avoid recurring subscription costs.
Key Features
- Visual drag-and-drop application builder with 45+ pre-built UI components including tables, charts, forms, and custom widgets
- Native integrations with 40+ data sources including PostgreSQL, MySQL, MongoDB, REST APIs, GraphQL, Slack, and Google Sheets
- JavaScript code editor for custom business logic, data transformations, and complex workflows within low-code applications
- Multi-user workspace management with granular permissions, role-based access control, and application sharing capabilities
- Real-time collaboration features allowing multiple developers to work on applications simultaneously with version control
- Custom component marketplace and plugin system for extending functionality beyond built-in components
- PostgreSQL-backed application metadata storage with full ACID compliance for configuration integrity
- Mobile-responsive application deployment with automatic scaling for different screen sizes and devices
Common Use Cases
- 1Building internal dashboards that aggregate data from multiple databases, APIs, and third-party services into unified views
- 2Creating CRUD applications for managing customer data, inventory systems, and employee databases without full stack development
- 3Developing approval workflow systems for expense reports, leave requests, and procurement processes with automated notifications
- 4Prototyping data visualization tools and business intelligence reports before investing in enterprise BI solutions
- 5Building admin panels for managing application settings, user accounts, and system configurations across multiple services
- 6Creating customer support tools that integrate ticketing systems, knowledge bases, and communication channels
- 7Developing content management interfaces for marketing teams to update websites, campaigns, and product catalogs
Prerequisites
- Minimum 2GB RAM and 10GB storage space for ToolJet application runtime and PostgreSQL data storage
- Docker and Docker Compose installed with support for multi-container networking and persistent volumes
- Basic understanding of SQL and database concepts for configuring data sources and building queries
- Familiarity with environment variables and secure secret management for database passwords and encryption keys
- Port 3000 available for ToolJet web interface access and understanding of reverse proxy setup for production use
- Knowledge of JavaScript fundamentals for implementing custom logic and data transformations within applications
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 tooljet: 3 image: tooljet/tooljet-ce:latest4 container_name: tooljet5 restart: unless-stopped6 environment: 7 TOOLJET_HOST: http://localhost:30008 PG_HOST: postgres9 PG_DB: tooljet10 PG_USER: tooljet11 PG_PASS: ${DB_PASSWORD}12 SECRET_KEY_BASE: ${SECRET_KEY}13 LOCKBOX_MASTER_KEY: ${LOCKBOX_KEY}14 ports: 15 - "3000:3000"16 depends_on: 17 - postgres18 networks: 19 - tooljet2021 postgres: 22 image: postgres:15-alpine23 container_name: tooljet-postgres24 restart: unless-stopped25 environment: 26 POSTGRES_USER: tooljet27 POSTGRES_PASSWORD: ${DB_PASSWORD}28 POSTGRES_DB: tooljet29 volumes: 30 - postgres_data:/var/lib/postgresql/data31 networks: 32 - tooljet3334volumes: 35 postgres_data: 3637networks: 38 tooljet: 39 driver: bridge.env Template
.env
1DB_PASSWORD=changeme2SECRET_KEY=generate-a-secret-key3LOCKBOX_KEY=generate-a-lockbox-keyUsage Notes
- 1Access at http://localhost:3000
- 2Visual app builder
- 340+ data source integrations
Individual Services(2 services)
Copy individual services to mix and match with your existing compose files.
tooljet
tooljet:
image: tooljet/tooljet-ce:latest
container_name: tooljet
restart: unless-stopped
environment:
TOOLJET_HOST: http://localhost:3000
PG_HOST: postgres
PG_DB: tooljet
PG_USER: tooljet
PG_PASS: ${DB_PASSWORD}
SECRET_KEY_BASE: ${SECRET_KEY}
LOCKBOX_MASTER_KEY: ${LOCKBOX_KEY}
ports:
- "3000:3000"
depends_on:
- postgres
networks:
- tooljet
postgres
postgres:
image: postgres:15-alpine
container_name: tooljet-postgres
restart: unless-stopped
environment:
POSTGRES_USER: tooljet
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: tooljet
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- tooljet
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 tooljet:5 image: tooljet/tooljet-ce:latest6 container_name: tooljet7 restart: unless-stopped8 environment:9 TOOLJET_HOST: http://localhost:300010 PG_HOST: postgres11 PG_DB: tooljet12 PG_USER: tooljet13 PG_PASS: ${DB_PASSWORD}14 SECRET_KEY_BASE: ${SECRET_KEY}15 LOCKBOX_MASTER_KEY: ${LOCKBOX_KEY}16 ports:17 - "3000:3000"18 depends_on:19 - postgres20 networks:21 - tooljet2223 postgres:24 image: postgres:15-alpine25 container_name: tooljet-postgres26 restart: unless-stopped27 environment:28 POSTGRES_USER: tooljet29 POSTGRES_PASSWORD: ${DB_PASSWORD}30 POSTGRES_DB: tooljet31 volumes:32 - postgres_data:/var/lib/postgresql/data33 networks:34 - tooljet3536volumes:37 postgres_data:3839networks:40 tooljet:41 driver: bridge42EOF4344# 2. Create the .env file45cat > .env << 'EOF'46DB_PASSWORD=changeme47SECRET_KEY=generate-a-secret-key48LOCKBOX_KEY=generate-a-lockbox-key49EOF5051# 3. Start the services52docker compose up -d5354# 4. View logs55docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/tooljet/run | bashTroubleshooting
- ToolJet fails to start with 'PG connection refused': Verify postgres container is running and PG_HOST environment variable matches the PostgreSQL service name in docker-compose
- Applications load slowly or timeout: Increase PostgreSQL shared_buffers and work_mem settings, or add database indexes for frequently queried ToolJet metadata tables
- Secret key errors during startup: Generate proper SECRET_KEY_BASE and LOCKBOX_MASTER_KEY values with sufficient entropy (64+ characters) and ensure they remain consistent across restarts
- Data source connections fail within ToolJet: Check that external services are reachable from the Docker network and verify firewall rules allow container-to-host communication
- User authentication issues or session timeouts: Verify TOOLJET_HOST environment variable matches the actual access URL including protocol and port number
- PostgreSQL disk space errors: Monitor postgres_data volume usage and implement log rotation or increase available storage for the Docker volume
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Ad Space
Shortcuts: C CopyF FavoriteD Download