ToolJet is the open-source foundation of ToolJet AI - the enterprise app generation platform for building internal tools, dashboard, business applications, workflows and AI agents 🚀
Find a file
Sherfin Shamsudeen 642c5caa71
Feature/multi page applications (Task ID - CU-2h1bfvw) (#4729)
* 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>
2022-12-08 17:51:09 +05:30
.do add health check on digital ocean deploy template 2022-07-19 23:26:58 +05:30
.github Netlify files (#4901) 2022-12-06 17:14:36 +05:30
.husky Setup husky and lint-staged 2021-04-30 15:40:48 +05:30
.vscode Mailgun integration (#2392) 2022-03-11 08:14:04 +05:30
cli [Feature] Make plugins installable (#3069) 2022-10-27 16:59:43 +05:30
cypress-tests [Cypress] Automation for table elements (#4813) 2022-11-22 10:02:22 +05:30
deploy all: fix spelling (#4326) 2022-10-11 13:46:40 +05:30
docker fix: change client.Dockerfile.dev node_modules path (#4824) 2022-11-28 10:59:31 +05:30
docs [Feature]: Form Widget (#4595) 2022-12-08 14:41:02 +05:30
frontend Feature/multi page applications (Task ID - CU-2h1bfvw) (#4729) 2022-12-08 17:51:09 +05:30
marketplace [Marketplace] AWS S3 (#4670) 2022-11-01 16:24:30 +05:30
plugins add: custom endpoint for s3 hosts (#4881) 2022-12-07 14:15:05 +05:30
server Feature/multi page applications (Task ID - CU-2h1bfvw) (#4729) 2022-12-08 17:51:09 +05:30
.dockerignore Dev and deploy setup revision (#604) 2021-08-26 20:34:30 +05:30
.env.example Feature :: Onboarding revamp (#4044) 2022-12-08 13:24:31 +05:30
.eslintignore Revert "Feature: Snowflake integration (#996)" (#1046) 2021-10-14 22:10:18 +05:30
.gitattributes Fix: Add git attributes file to standardize EOL characters (#3332) 2022-06-27 13:05:56 +05:30
.gitignore Mailgun integration (#2392) 2022-03-11 08:14:04 +05:30
.nvmrc Add nvmrc config file (#1117) 2021-10-18 09:00:01 +05:30
.slugignore changes for heroku fix (#4888) 2022-12-02 22:23:27 +05:30
.version Bump version to 2.0.0-beta 2022-12-07 19:33:40 +05:30
app.json changes for heroku fix (#4888) 2022-12-02 22:23:27 +05:30
Aptfile Feature/oracledb plugin (#2388) 2022-03-15 08:00:02 +05:30
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2021-12-23 12:45:44 +05:30
CONTRIBUTING.md docs: fix the link to github flow in contributing.md file (#4345) 2022-10-07 16:32:13 +05:30
docker-compose.yaml Revise docker setup (#3954) 2022-09-05 21:06:11 +05:30
heroku-postbuild.sh Move plugins to root (#1728) 2022-01-17 12:38:17 +05:30
LICENSE Switch to AGPL license (#854) 2021-09-28 12:37:26 +05:30
netlify.toml Added configuration to select plugins (#3024) 2022-05-20 19:32:46 +05:30
package-lock.json chore: update @tooljet/cli version (#4758) 2022-11-15 10:50:38 +05:30
package.json chore: update @tooljet/cli version (#4758) 2022-11-15 10:50:38 +05:30
Procfile Move plugins to root (#1728) 2022-01-17 12:38:17 +05:30
README.md Update README.md (#4841) 2022-11-23 19:50:03 +05:30
render.yaml chore: Setup github action for render deploy (#4750) 2022-11-15 17:02:23 +05:30


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.

Docker Cloud Build Status GitHub contributors GitHub issues GitHub stars GitHub closed issues GitHub pull requests GitHub release (latest by date) GitHub commit activity GitHub license Twitter Follow

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.

Deploy to Heroku Deploy to DigitalOcean

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.