* Add routes for multi-page apps * Modify Editor, Viewer and Inspector to accept new app structure * Show a page selector on left side bar * Align component deletion logic with new app schema * Make subcontainer work with multi-page apps * Load components state properly in viewer * Use UUID instead of handle for pages * Display sidebar on viewer to switch pages * Add proper URL suffixing for pages in viewer * Add action to switch page * Revert translation file back to its pre-existing linting * Fix bug that caused modal to not open/close * Add support for query params in page switch * Fix the issue that caused navigation to fail while accessed via slug * Add missing SwitchPage file * Add support for page level variables * Add migration to convert existing apps to new schema * Add rollback for converting multi-page definitions back to single-page * Fix migration for multi-page apps * Adapt import/export service for multi-pages * [improvements] Multi-page applications (#4755) * UI updates for page selector popup card * delete page * delete page check: if only one page exits * switch to home page if the selected page is removed * adds and switch to new page * updating page name * updates to home page and starting page * handle updating the home page when home page is deleted * search box for filtering pages and minor style updates for the page handler card * header search box style fixes * for creating a new page, page handle needs to be unique * seperating into smaller components * updated pinned icon for page selector styles and settinf styles * Leftsidebar header ui component * handle dark theme * page handle ui and dark theme fixes for page menu * page handler edit modal * pinned state and update pinned state for menu options triggered * dark theme fixes for edit modal * handle on update should not be empty or prev * page handler updater * added loading state for saving * handles cancels * fixes slug ui * fixes crash for older app versions * updates the query params when handle gets an update * update homePage to homePageId * removes console.log * go back to the popover for modal close * fixes: Difficult to select page * fixes: Difficult to select the three-dot menu * fixes: on visiting the root url, navigate to homepage on viewer * adds tooltip for url * updates the page selector sidebar with sync with query manager * refactor and cleanup * refactor and cleanup * Compute component state when page is switched * modal should not close on click outside * disable save button if there is not change in the page handle input * should show/hide page menu when hovered * page icon * updates delete icon for disabled state * query manager should always be on top of page selector * checks if homePage key exists in pages def * updates page handler menu * updates the clear icon * page handler menu position * page handler menu position * handle icon * alert msg * global settings handler for updating viewer page navigation * show/hode page navigation for viewer * info text for toggle * Multipages:with sortable list [DnD] (#4783) * applied sortable list * on sort updates the definitions * fixies: app crash for dnd * viwer: canvas width should be 100% when navigation drawer is disbaled * fixes: homepage/startpage reload * clean up Co-authored-by: Sherfin Shamsudeen <sherfin94@gmail.com> * Multipage UI viewer (#4801) * new ui changes for viewer pages * fixes postions for debugger and datasources popover * removes console.log * Multipage : hide page and unhide page feature (#4803) * adds: ability to hide pages * hides pages in viewer * unhide page * hide icon * allow accessing hidden pages from url * add: duplicate page (#4802) * add: duplicate page * do not copy the same references from the original page * page name and page handler should be unique for duplicate pages too * Add support for on-page-load events * Add icon from page settings menu item * Convert existing templates to multi-page schema * error logs for page level and app level errors (#4842) * Adapt comments feature for multi-pages * [Bugfix] multipage - page menu interactions (#4844) * fixes: menu popup interaction * fixes: on modal input focus, we switch the page * Adapt multi-player to multi-pages * Add editingPageId to ymap * Log self, others and editor props in real-time avatar generation * Save editing page id to appDef * Add editingPageId to presence in RealtimeCursors * adds no results ui for empty search results (#4869) * page icon updated (#4870) * fixes:Version switching crashes if the target version does not contain the current page (#4868) * Remove unnecessary setting of editingPageId on ymap * Remove unnecessary console.log * [Bugfix] Multipages: widget inspector event popover unmounts (#4887) * introduced a local state for events * cleaned up inspector.jsx * fixes: table widget inspector event accordion * Do not run switchPage twice when viewer is loaded * Preview should open the currently editing page * Properly place navigation and canvas in viewer * Update app definition whenever event manager changes are made * Add support for browser back and forward button in multi-pages * Rename handleBackButton to handlePageSwitchingBasedOnURLparam * Add support for cut/copy/paste and clone * Fix the crash caused by boxShadow * Add support for background colors in viewer in multi-pages * Run queries to be run on load on viewer, in multi-pages * Fix issue that caused inspector popovers to collapse * resolves workspace vars in viewer mode (#4892) * Multipage : Navigation for Mobile-ui (#4814) * refactored to components * burger menu for mobile ui * merge conflict fix for hidden pages * hamburger menu positioned in the header * viewer header reafctored * viewer mobile page manu styles * handles dark theme * mobile menu with dark mode toggle in the footer * components are moved to page level, handle for mobile layout * style fixes * removing unwanted code block * dark theme fixes * style fixes * fixes: events are sortable (#4895) * fixes: events are sortable * Remove uneccesarily repeated call of setEvents in EventManager Co-authored-by: Sherfin Shamsudeen <sherfin94@gmail.com> * renamed settings to Event handlers (#4898) * updates the page setting title to Page Events * temp commit * Add support for setting max width in percentage * fixes: paramUpdates for boxes: 🙌🏻 * [Bugfix] Multipage - viewer canvas dark theme (#4897) * fixes: darktheme bg for viewer canvas * reverts canvas size * Fix for inspector bouncing back to previous values * resolves pages variables in pythong and js transformation (#4905) * csa support to event manager for pages (#4907) * Add support for setting canvas width in percentages * Persist page level variables across page switches * latest definitions is merged with the current appdef (#4914) * latest definitions is merged with the current appdef * mutating the local obj * cleanup * iterate through pages for new versions are created Co-authored-by: Arpit <arpitnath42@gmail.com> |
||
|---|---|---|
| .do | ||
| .github | ||
| .husky | ||
| .vscode | ||
| cli | ||
| cypress-tests | ||
| deploy | ||
| docker | ||
| docs | ||
| frontend | ||
| marketplace | ||
| plugins | ||
| server | ||
| .dockerignore | ||
| .env.example | ||
| .eslintignore | ||
| .gitattributes | ||
| .gitignore | ||
| .nvmrc | ||
| .slugignore | ||
| .version | ||
| app.json | ||
| Aptfile | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| docker-compose.yaml | ||
| heroku-postbuild.sh | ||
| LICENSE | ||
| netlify.toml | ||
| package-lock.json | ||
| package.json | ||
| Procfile | ||
| README.md | ||
| render.yaml | ||
ToolJet is an open-source low-code framework to build and deploy internal tools quickly with minimal engineering effort. ToolJet's drag and drop frontend builder allows you to build complicated responsive frontends within minutes. You can also connect to your data sources, such as databases ( PostgreSQL, MongoDB, Elasticsearch & more), API endpoints (ToolJet supports importing OpenAPI spec & OAuth2 authorization), SaaS tools (Stripe, Slack, Google Sheets, Airtable, Notion & more) and object storage services ( S3, GCS, Minio, etc ) to fetch and write data.
All features
- Visual app builder: 40+ built-in responsive widgets such as Tables, Charts, Lists, Forms, Progressbars, and more.
- Multiplayer editing multiple users can use the app builder at the same time.
- 40+ data sources: connect to databases, cloud storages and APIs.
- Desktop & mobile: layout widths can be customised to support different screens.
- Self-host: (supports Docker, Kubernetes, Heroku, AWS EC2, Google Cloud Run, and more).
- Collaborate: add comments anywhere on the canvas and tag your team members.
- Extend with plugins: use our commandline tool to easily bootstrap new connectors.
- Version control: every application have different versions with proper release cycle.
- Run JS & Python code: ability custom JavaScript & Python snippets
- Granular access control on group-level and app-level.
- Low-code: write JS code almost anywhere in the builder. For example, the color property of text can be set to
status === 'success' ? 'green' : 'red' - No-code query editors: for all supported data sources.
- Join and transform data: transform query results using just JavaScript/Python code.
- Secure: All the credentials are securely encrypted using
aes-256-gcm. - Doesn't store data: ToolJet acts only as a proxy and doesn't store any data.
- SSO: Supports multiple SSO 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.
You can deploy ToolJet on Heroku for free using the one-click-deployment button only until 28th November 2022.
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 \
--user root \
--restart unless-stopped \
-p 3000:3000 \
-v tooljet_data:/var/lib/postgresql/13/main \
tooljet/try:latest
Tutorials and examples
GitHub contributor leaderboard using ToolJet
Cryptocurrency dashboard using ToolJet
WhatsApp CRM using ToolJet
AWS S3 file explorer
Documentation
Documentation is available at https://docs.tooljet.com.
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, Heroku and more.
| Provider | Documentation |
|---|---|
| AWS EC2 | Link |
| AWS EKS (Kubernetes) | Link |
| AWS ECS | Link |
| GCP GKE (Kubernetes) | Link |
| Azure AKS (Kubernetes) | Link |
| Heroku | Link |
| Docker | Link |
| Google Cloud Run | Link |
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 easily.
Roadmap
Check out our roadmap to get informed of the latest features released and the upcoming ones.
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 learn and understand about our development process, how to propose bug fixes and improvements, and how to build and test your changes to ToolJet.
Contributors
License
ToolJet © 2022, ToolJet Solutions Inc - Released under the GNU Affero General Public License v3.0.