ToolJet Evaluation

Overview of ToolJet

ToolJet is an open-source low-code framework to build and deploy internal tools quickly. You can connect to your data sources such as databases (PostgreSQL, MongoDB, MySQL, Elasticsearch, Firestore, DynamoDB and more), API endpoints (ToolJet supports importing OpenAPI spec & OAuth2 authorization) and external services (Stripe, Slack, Google Sheets, etc ) and use pre-built UI widgets to build internal tools.

Setting up ToolJet

There are two ways to set up ToolJet
  1. Create a ToolJet Cloud account at ToolJet Cloud offers a hosted solution of ToolJet.
  1. Self-host ToolJet i.e. you need to setup the components of ToolJet yourself. There are two main components of ToolJet:
      • ToolJet Server
        • ToolJet server is a Ruby on Rails API-only application. It is responsible for authentication, authorization, persisting application definitions, running queries, storing datasource credentials securely etc.
          1. PostgreSQL - ToolJet server persists data to a postgres database.
          1. Email service (SMTP/Sendgrid/Mailgun/etc) - Required to send user invitations and password reset emails.
      • ToolJet Client
        • ToolJet client is a ReactJS application. Client is responsible for visually editing the applications, building & editing queries, rendering applications, executing events and their trigger, etc.
I chose to set up ToolJet by creating a ToolJet Cloud account as it seemed to be the easiest method out of the two. All I needed to do was register with an email address and login using the created account.
notion image
Self-hosting ToolJet is a more complicated approach as you need to install the required components i.e. ToolJet server & ToolJet client on your machine, which will take more time and resources as compared to method 1.


ToolJet APIs/Webhooks

After some exploration and research on ToolJet, it does not appear that ToolJet has a built-in webhook like Wekan. ToolJet is a relatively new tool (launched only in early June this year), hence it is likely that features like webhooks have not been integrated yet. Hence, I went to look into the APIs that it supports.
ToolJet currently only supports 6 APIs:
notion image
Brief description for each of the API (excluding Google Sheets):
  • Rest API - Used to transfer data. REST APIs can be used to perform standard database functions like creating, reading, updating, and deleting records (also known as CRUD) within a resource.
  • GraphQL - A query language for APIs and a runtime for fulfilling those queries with your existing data. Basically it is used to load data from a server to a client.
  • Stripe - Allows developers to access the functionality of Stripe, which is a service that allows users to accept payments online.
  • Airtable - Used to create, read, update, and delete records from Airtable base. Airtable is basically a mix between a spreadsheet and a database.
  • Slack - A WebSocket-based API that allows you to receive events from Slack in real-time. Slack is basically a messaging app.
Based on the descriptions of the APIs, Stripe/Airtable/Google Sheets/Slack are irrelevant to us as these APIs are used to access the functionality of their respective applications. Since both Rest API and GraphQL are used for transferring data, it could be possible that it can be used for the transfer of real-time events. However, more research would need to be done to confirm this.


Widgets provided in ToolJet:
notion image
Looking at the built-in UI widgets provided in ToolJet, I do not see a way to recreate the investigation board/triage board/case cards that were done in Wekan. As a result, the scripts that were created for Wekan would be rendered irrelevant.
Since there is no way to port the work that was done in Wekan, I would not recommend ToolJet as the new frontend library.