* init: Added resetOnSubmit, validateOnSubmit properties and exposed formData value * Added the generate form from dropdown menu on the inspector * feat: Added generate form button and fields section * Added the generate column popup UI * feat: Added UI for form fields * feat: Added the UI for new custom field * chore: Added refresh data and custom schema UI * feat: Added the util function to map the JSON to component * chore: cleanup and fixed bugs on dropdown * feat: Added fields property to the form config * feat: save generated fields on form * feat: generated child components from the JSON * fix: bugs on generating component from JSON * chore: added functionality for view properties and styles on field popover * feat: Added local state for add new custom fields * feat: Added logic to create component on submitting new custom field * fix: bugfies on creating a custom fields * feat: Handled grouping of data in the manage column modal * feat: Handled deletion case of the fields * fix: fixed bug on deleting the fields * chore: Updated the form fields logic to store only the necessary values and fetch the remaining values from the component directly using componentId * chore: updated logic to handle fx in mandatory and selected fields * feat: Added functionality to update the component from form fields * fix: bug on componentType typo * chore: written logic to handle the componentType update * feat: Added multiple updates including componentType change * chore: Added few more input components * chore: Moved the form fields property logic to new formComponentSlice * fix: creating a custom field while dragging across the parent components * chore: reverted the deletion logic a bit to properly fetch the parentID from the component * fix: while moving the component with more than 1 form field, it is clearing the complete list * fix: handle the case of moving component from canvas to form * chore: Removed unwanted UI blocks and added logic to conditionally display data section when custom schema is turned off * chore: cleaned up the Dropdownmenu component & added memo to avoid re-render * feat: Added query support and updated logic to display the columns on the modal * chore: cleanup & passed the correct columns to the component * chore: cleaned up the form status constant * chore: wrapped functions in a * chore: created a separate function to create components from form * chore: cleaned up the code to use the same code for component creation * chore: updated the logic for the form field component update * feat: Added functionality for single field popover icons & moved the single field creation out of common function to simplify the field update * fix: removed the deleted fields while refreshing the form * fix: updated the logic for the refresh fields * feat: Added logic to ignore the components to be deleted for regeration of form * chore: moved the component list supported to a constant * fix: Added a backfill logic for the fields property to handle without migration * fix: added a correct key for custom field * fix: Fixed issue on adding custom fields while regenrating the form * fix: Fixed issues on generating form fields while refreshing the FORM * chore: cleanedup the code * chore: Fixed path and merged with main * fix: avoided the multiple re-renders on FORM and fixed the state issue on data & formData * fix: removed the child components from inspector & added a support for query even if it is an array to generate the form * fix: fixed few bugs and design feedbacks * fix: Added a logic to set the width of the dropdown menu same as dropdown trigger * feat: updated the deprecated section for Form * feat: Added a logic to run query on selecting the query on generate form from * fix: changed the logic of selection handled in the manage column modal. The components will be created only if the column is selected. * refactor: moved the manage fields from button to an icon * fix: merged the field definition with the existing default data to show it on manage column popup * feat: focused the codehinter when the rawJson is selected on the dropdown menu * chore: cleanup * feat: update formComponentSlice with latest changes - Fixed getCurrentPageIndex usage in setComponentPropertyByComponentIds - Enhanced component batch operations functionality - Improved form field management logic * Reverted the git changes reflected on the form PR * Reverted the git changes reflected on the form PR * Reverted the git changes reflected on the form PR * fix: fixed the issues due to merge conflict * feat: Removed componentMapping modal for rawJson. Added JsonSchema in the dropdown menu and moved the refresh button inside the modal footer for the queries * fix: Added a loader in the column mapping & updated the styles * chore: cleanup and moves to separate files * chore: cleanup the components * fix: modal was not poping up when I click a different query * chore: cleanedup `ColumnMappingComponent` * fix: fixed bugs on regenerating the forms, shown the loader while running the query, added support for multiple queries etc * chore: removed unwanted props * fix: fixed the undo/redo issues * fix: Fixed the issue on custom fields not showing up on the columnMappingModal * fix: bugfixes like duplicate field, maping popup stays on screen, visibility not working, form loader etc * fix: Fixed the height of the textare and fixed showing the main popover on click of make mandatory button * fix: Fixed the undo redo issue on deleting the form component * fix: removed the undo/redo while saving the form data section * chore: updated the default data for rawJSON * fix: Fixed bugs on toggleswitch, scroll, placeholder etc * fix: Added a condition to render the placeholder input * chore: taken care bito feedback * fix: fixed the modal closing issue * fix: Fixed the gutter issue as the canvas height needs to be updated once the child components are generated * chore: fixed design feedback * fix: Added hover to the modal body instead of each section |
||
|---|---|---|
| .do | ||
| .github | ||
| .husky | ||
| .vscode | ||
| cli | ||
| cypress-tests | ||
| deploy | ||
| docker | ||
| docs | ||
| frontend | ||
| marketplace | ||
| plugins | ||
| queryPanel | ||
| release-scripts | ||
| server | ||
| .dockerignore | ||
| .env.example | ||
| .eslintignore | ||
| .gitattributes | ||
| .gitconfig | ||
| .gitignore | ||
| .gitmodules | ||
| .nvmrc | ||
| .slugignore | ||
| .version | ||
| CODE_OF_CONDUCT.md | ||
| CODEOWNERS | ||
| CONTRIBUTING.md | ||
| dependabot.yml | ||
| docker-compose-debug.yaml | ||
| docker-compose.yaml | ||
| LICENSE | ||
| netlify.toml | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| render.yaml | ||
| resolve-conflicts-submodules.sh | ||
| SECURITY.md | ||
| update-version.js | ||
ToolJet is an open-source low-code framework to build and deploy internal tools with minimal engineering effort. ToolJet's drag-and-drop frontend builder allows you to create complex, responsive frontends within minutes. Additionally, you can integrate various data sources, including databases like PostgreSQL, MongoDB, and Elasticsearch; API endpoints with OpenAPI spec and OAuth2 support; SaaS tools such as Stripe, Slack, Google Sheets, Airtable, and Notion; as well as object storage services like S3, GCS, and Minio, to fetch and write data.
⭐ If you find ToolJet useful, please consider giving us a star on GitHub! Your support helps us continue to innovate and deliver exciting features.
All features
- Visual App Builder: 45+ built-in responsive components, including Tables, Charts, Lists, Forms, and Progress Bars.
- ToolJet Database: Built-in no-code database.
- Multi-Page: Build an application with multiple pages.
- Multiplayer editing: Allows simultaneous app building by multiple developers.
- 50+ data sources: Integrate with external databases, cloud storage, and APIs.
- Desktop & mobile: Customize layout widths to fit various screen sizes.
- Self-host: Supports Docker, Kubernetes, AWS EC2, Google Cloud Run, and more.
- Collaborate: Add comments anywhere on the canvas and tag your team members.
- Extend with plugins: Use our command-line tool to easily bootstrap new connectors.
- Version control: Manage multiple application versions with a structured release cycle.
- Run JS & Python code: Execute custom JavaScript and Python snippets.
- Granular access control: Set permissions at both group and app levels.
- Low-code: Use JS code almost anywhere within the builder, such as setting text color based on status with
status === 'success' ? 'green' : 'red'. - No-code query editors: Query Editors are available for all supported data sources.
- Join and transform data: Transform query results using JavaScript or Python code.
- Secure: All the credentials are securely encrypted using
aes-256-gcm. - Data Privacy: ToolJet serves solely as a proxy and does not store data.
- SSO: Supports multiple Single Sign-On providers.
Quickstart
The easiest way to get started with ToolJet is by creating a ToolJet Cloud account. ToolJet Cloud offers a hosted solution of ToolJet. If you want to self-host ToolJet, kindly proceed to deployment documentation.
Try using Docker
Want to give ToolJet a quick spin on your local machine? You can run the following command from your terminal to have ToolJet up and running right away.
docker run \
--name tooljet \
--restart unless-stopped \
-p 80:80 \
--platform linux/amd64 \
-v tooljet_data:/var/lib/postgresql/13/main \
tooljet/try:ee-lts-latest
For users upgrading their ToolJet version, we recommend choosing the LTS version over the latest version. The LTS version ensures stability with production bug fixes, security patches, and performance enhancements.
Tutorials and examples
Time Tracker Application
Build your own CMS using low-code
AWS S3 Browser
Documentation
Documentation is available at https://docs.tooljet.ai.
Self-hosted
You can use ToolJet Cloud for a fully managed solution. If you want to self-host ToolJet, we have guides on deploying ToolJet on Kubernetes, AWS EC2, Docker, and more.
| Provider | Documentation |
|---|---|
| Digital Ocean | Link |
| Docker | Link |
| AWS EC2 | Link |
| AWS ECS | Link |
| OpenShift | Link |
| Helm | Link |
| AWS EKS (Kubernetes) | Link |
| GCP GKE (Kubernetes) | Link |
| Azure AKS (Kubernetes) | Link |
| Azure Container | Link |
| Google Cloud Run | Link |
| Deploying ToolJet client | Link |
| Deploying ToolJet on a Subpath | Link |
Marketplace
ToolJet can now be found on both AWS and Azure Marketplaces, making it simpler than ever to access and deploy our app-building platform.
Find ToolJet on AWS Marketplace here and explore seamless integration on Azure Marketplace here.
Community support
For general help using ToolJet, please refer to the official documentation. For additional help, you can use one of these channels to ask a question:
- Slack - Discussions with the community and the team.
- GitHub - For bug reports and feature requests.
- 𝕏 (Twitter) - Get the product updates quickly.
Roadmap
Check out our roadmap to stay updated on recently released features and learn about what's coming next.
Branching model
We use the git-flow branching model. The base branch is develop. If you are looking for a stable version, please use the main branch or tags labeled as v1.x.x.
Contributing
Kindly read our Contributing Guide to familiarize yourself with ToolJet's development process, how to suggest bug fixes and improvements, and the steps for building and testing your changes.
Contributors
License
ToolJet © 2023, ToolJet Solutions Inc - Released under the GNU Affero General Public License v3.0.