‹ Reports
The Dispatch

GitHub Repo Analysis: ToolJet/ToolJet


Executive Summary

ToolJet is an open-source low-code platform for building internal business applications, managed by a vibrant community. It features a drag-and-drop builder and supports integration with numerous data sources. The project is highly active, with a strong trajectory towards enhancing user experience and expanding functionality.

Recent Activity

Team Members and Activities

Patterns and Themes

Risks

Of Note

Quantified Reports

Quantify issues



Recent GitHub Issues Activity

Timespan Opened Closed Comments Labeled Milestones
7 Days 43 16 192 9 1
30 Days 135 46 778 10 1
90 Days 230 89 959 15 4
All Time 4412 3571 - - -

Like all software activity quantification, these numbers are imperfect but sometimes useful. Comments, Labels, and Milestones refer to those issues opened in the timespan in question.

Rate pull requests



2/5
The pull request addresses an infinite render issue by modifying a useEffect dependency and removing redundant code. However, it fails the SonarCloud quality gate due to maintainability concerns, indicating potential issues with code quality or structure. The change is minor, involving only a small number of lines, and lacks significant impact or thoroughness. Overall, it appears to be a necessary but insufficiently robust fix, warranting further refinement.
[+] Read More
2/5
The pull request addresses a minor issue related to the casing of event names in documentation. While it ensures consistency, the change is trivial and lacks significant impact on functionality or user experience. The PR modifies numerous files but only alters a single line in each, changing 'On Page Change' to 'On page change'. There are no new features, bug fixes, or improvements beyond this cosmetic adjustment. Given its insignificance and limited scope, a rating of 2 is appropriate.
[+] Read More
3/5
This pull request updates documentation for the Link Component, addressing specific descriptions and layout details. While the changes are clear and improve the existing documentation, they are relatively minor and do not introduce new features or significant improvements to the codebase. The PR is well-executed but lacks substantial impact, making it an average contribution.
[+] Read More
3/5
The pull request introduces a new feature for generating credit card test data, which is a useful addition to the project. The code is well-structured and passes quality checks with no security issues or code duplication. However, the change primarily involves adding JSON configuration files and JavaScript functions without significant complexity or innovation. The functionality is straightforward and does not introduce any groundbreaking improvements to warrant a higher rating. Overall, it is an average contribution that fulfills its purpose but lacks exceptional qualities.
[+] Read More
3/5
The pull request involves minor documentation updates, including title changes, column renaming, and content adjustments. These changes enhance clarity but are not significant or complex. The PR is well-executed with no apparent flaws, but it lacks substantial impact or innovation. It aligns with typical documentation maintenance tasks, warranting an average rating.
[+] Read More
3/5
The pull request involves minor documentation changes to the textarea component, primarily reformatting and slight adjustments in wording. While it passes quality checks with no issues or security hotspots, the changes are not significant or complex. The PR does not introduce new functionality or major improvements, making it average and unremarkable. It fulfills its purpose but lacks any notable impact or complexity.
[+] Read More
3/5
The pull request updates documentation for the Tabs component, making minor textual changes and clarifications. While it passes quality checks with no issues, the changes are relatively insignificant, involving simple text edits and formatting adjustments. The PR does not introduce any new features or significant improvements, nor does it address any critical issues. It is a standard documentation update that aligns with average expectations.
[+] Read More
3/5
The pull request introduces a new workflow for Docker release, adding support for LTS 3.0. It modifies the GitHub Actions workflow file to include conditions and steps specific to the new LTS version. The changes are straightforward and appear to be correctly implemented without introducing security risks or bugs, as indicated by the SonarCloud analysis. However, the PR is relatively minor in scope, affecting only one file with a net addition of 19 lines. It lacks significant complexity or impact beyond the specific workflow update, making it an average contribution.
[+] Read More
3/5
The pull request updates documentation by changing titles and descriptions to improve clarity. While these changes are beneficial for understanding, they are minor and do not introduce significant new content or functionality. The PR is well-executed with no apparent issues, but it lacks substantial impact, making it an average contribution.
[+] Read More
3/5
The pull request focuses on minor documentation updates for the Star Rating Component, including changes in event names and descriptions. While these changes improve clarity, they are not significant or complex enough to warrant a higher rating. The PR does not introduce any new features or code changes, and the impact is limited to documentation. Therefore, it is rated as average.
[+] Read More

Quantify commits



Quantified Commit Activity Over 14 Days

Developer Avatar Branches PRs Commits Files Changes
Johnson Cherian 1 1/0/0 4 402 77200
Parth 1 0/0/0 2 5 30290
Pratik Agrawal 5 10/10/4 33 355 4351
Shaurya Sharma (shaurya-sharma064) 4 4/4/0 15 22 3847
Aman Regu 3 5/3/1 12 15 1666
Devanshu Rastogi 1 0/0/0 3 15 1175
Karan Rathod 1 4/4/0 10 30 967
None (vjaris42) 1 2/2/0 3 30 681
Rohan Lahori (rohanlahori) 1 2/3/0 5 40 489
Rudhra Deep Biswas (rudeUltra) 1 2/3/0 6 14 344
Kartik Gupta (Kartik18g) 1 2/2/0 2 12 317
Joshua Oluikpe 1 1/1/0 8 3 268
Hisham Akmal 1 1/1/0 5 2 214
Nakul Nagargade (nakulnagargade) 2 4/3/0 5 12 124
Dhruv Sharma 1 1/1/0 1 2 120
Vrushabh Gawas 1 1/1/0 1 2 100
Saipavan Lingamallu 1 1/1/0 1 2 96
Abhinav 1 1/1/0 1 2 92
Atul1231 1 1/1/0 1 2 88
Vanshjain2701 1 1/1/0 1 2 86
avnish100 1 1/1/0 1 2 84
Aayush Paigwar 1 1/1/0 1 2 82
Aryan Khurana 1 1/1/0 1 2 81
Olibhia Ghosh 1 0/1/0 1 2 76
Suraj 1 1/1/1 1 2 72
Adish M (adishM98) 4 2/0/0 6 2 69
Cyphrr_07 1 4/1/3 5 2 66
void-hr 1 0/1/0 1 2 64
Baibhav Kumar 1 1/1/0 1 2 64
Sanket Rajendra Shinde 1 0/1/0 1 2 64
Vaishnavi-Raykar 1 0/1/0 1 2 60
Himanshu Balani 1 1/1/0 1 2 48
Akshay (akshaysasidrn) 1 1/1/0 2 3 12
Midhun G S (gsmithun4) 1 1/1/0 1 3 6
Raman Yudo 1 2/0/1 1 1 4
Aman Sharma (mnshrm) 0 1/0/0 0 0 0
Jon Pablo (JP-sDEV) 0 1/0/0 0 0 0
Aman Kumar (Namchi7) 0 1/0/0 0 0 0
Sumit Kumar Das (skdas20) 0 1/0/0 0 0 0
Amitabh Sahu (asdotdev) 0 1/0/1 0 0 0
Ayush Chauhan (eyesee11) 0 5/0/4 0 0 0
Ishan Sawai (ishan657) 0 1/0/0 0 0 0
Mayank (vortex-m) 0 1/0/1 0 0 0
Subham Singh (webobite) 0 0/0/1 0 0 0
Anas Younis (yunus102) 0 3/0/2 0 0 0
Mayur Kawale (Mefisto04) 0 1/0/1 0 0 0
Noha M. (NohaFahmi) 0 1/0/1 0 0 0
Parth Dwivedi (Parth4git) 0 1/0/0 0 0 0
Devagn Maniya (devagn611) 0 1/0/1 0 0 0
Mihir Kasare (mihir2004) 0 1/0/1 0 0 0
Mohit Deshmukh (mohizzzol) 0 1/0/1 0 0 0
Rohan (Rohan-3337) 0 0/1/0 0 0 0
Sonali Singh (Sonali9737) 0 1/0/0 0 0 0
Manbhav Sugla (manbhav234) 0 1/0/0 0 0 0
sahilborse18 (sahilborse) 0 4/0/3 0 0 0
Akash Jana (AkashJana18) 0 1/0/0 0 0 0
Anas Khafaga (anasKhafaga) 0 0/0/1 0 0 0
Joshua Jinu (joshua-jinu) 0 1/0/0 0 0 0
karan kumar (karandevhub) 0 1/0/1 0 0 0
Kushal Agrawal (kushal34712) 0 0/0/1 0 0 0
Maniteja (Maniteja0126) 0 2/0/2 0 0 0
Saurabh Gurde (SaurabhGurde) 0 1/0/0 0 0 0
Mihir Vargante (MihirVargante) 0 1/0/1 0 0 0
Nishant Rana (NishantRana07) 0 1/0/1 0 0 0
Bhojraj Lalit Narware (bhojrajnarwae) 0 2/0/1 0 0 0
Lakshita (lakshita10341) 0 0/0/1 0 0 0
Alok Singh (Alok-Singh-ops) 0 0/0/1 0 0 0
Souradip Dasgupta (GeeekySouro003) 0 0/0/1 0 0 0
Prashant Kumar Rai (prashantrai-30) 0 1/0/1 0 0 0
Arnav Mahalpure (AranavMahalpure) 0 2/0/2 0 0 0
Virender Bhambra (VirenderBhambra) 0 1/0/0 0 0 0
Mayur Athavale (mayurathavale18) 0 2/0/1 0 0 0
PUSHPAK CHAUDHARI (PushpakChaudhari) 0 1/0/1 0 0 0
Atul Singh (atulSingh1234567) 0 0/0/1 0 0 0
None (SanchitMahajan236) 0 1/0/0 0 0 0
Rudraksh Gajanan Nalbalwar (rudrakshnalbalwar) 0 1/0/0 0 0 0
Janumala Akhilendra (JanumalaAkhilendra) 0 1/0/1 0 0 0
Deepanshu Yadav (DeepanshuYadav-code) 0 1/0/0 0 0 0

PRs: created by that dev and opened/merged/closed-unmerged during the period

Quantify risks



Project Risk Ratings

Risk Level (1-5) Rationale
Delivery 3 The project faces moderate delivery risks due to a backlog of unresolved issues. In the past 90 days, 230 issues were opened versus 89 closed, indicating potential delays in addressing critical tasks. Feature requests like dark mode support (#10909) and layout improvements (#10894) remain open, posing risks if not prioritized. However, active maintenance efforts and enhancements to the ToolJet Database (TJDB) suggest ongoing progress.
Velocity 4 The project's velocity is at risk due to a high volume of issues being opened compared to those closed (43 opened vs. 16 closed in the last week). This backlog could slow down progress. While there are active development efforts, such as enhancements to TJDB and new features like the SharePoint plugin, the focus on documentation updates may detract from more impactful development tasks.
Dependency 3 Dependency risks are moderate as the project shows proactive management through updates like Docker release workflows for LTS compatibility. However, reliance on key contributors for significant changes poses a risk if they become unavailable. The introduction of new plugins like SharePoint also requires thorough testing to avoid dependency failures.
Team 2 Team risks appear low with strong collaboration among members and engagement with community contributions. This distribution of tasks helps mitigate burnout and conflict. However, dependency on key contributors for major changes could pose challenges if not managed well.
Code Quality 3 Code quality risks are moderate due to large-scale changes by key developers that need careful review. Issues like PR#11117 failing SonarCloud quality gate highlight maintainability concerns. Documentation updates indicate adherence to standards but do not address core functionality improvements.
Technical Debt 3 Technical debt risks are moderate with some pull requests failing quality checks due to maintainability issues (e.g., PR#11117). Large changes by few developers could accumulate debt if not managed properly. Documentation updates help maintain clarity but do not reduce existing debt significantly.
Test Coverage 4 Test coverage is a concern as many pull requests lack automated test validation, posing risks for reliability and robustness. The absence of test coverage on new code indicates potential gaps in catching regressions or bugs.
Error Handling 2 Error handling appears robust with active bug fixes and responsiveness to user-reported issues (e.g., component handle visibility #11083). The use of tools like 'CodeHinter' in 'EventManager.jsx' enhances input validation and error prevention.

Detailed Reports

Report On: Fetch issues



GitHub Issues Analysis

Recent Activity Analysis

The ToolJet project has seen active engagement with numerous issues created and addressed recently. Documentation updates and feature requests are prevalent, indicating ongoing improvements and community involvement.

Notable Anomalies and Themes

  • Documentation Updates: A significant number of issues focus on updating documentation, especially for components like Image, Link, and QR Scanner. This suggests a drive to improve clarity and usability for contributors and users.

  • Feature Requests: There are several feature requests related to enhancing existing functionalities, such as adding dark mode support (#10909) and improving the user experience in layout creation (#10894).

  • Bug Fixes: Numerous bugs have been reported and addressed, including issues with component handles (#11083) and query manager inconsistencies (#9599).

  • Community Contribution: Many issues are labeled for community contribution, reflecting an open-source ethos encouraging external participation.

  • ToolJet Database (TJDB): Several issues pertain to TJDB enhancements, such as bulk updates (#10963) and CSV import functionality (#10962), highlighting its importance in the project's roadmap.

Issue Details

Most Recently Created Issues

  1. #11124: Update documentation for the Image Component

    • Priority: Low
    • Status: Open
    • Created: 1 day ago
  2. #11123: Update documentation for the Link Component

    • Priority: Low
    • Status: Open
    • Created: 1 day ago
  3. #11122: Update documentation for the Pagination Component

    • Priority: Low
    • Status: Open
    • Created: 1 day ago

Most Recently Updated Issues

  1. #11084: NumberInput default value issue

    • Priority: Medium
    • Status: Closed
    • Updated: 2 days ago
  2. #11068: GitHub after before issue

    • Priority: Low
    • Status: Closed
    • Updated: 4 days ago
  3. #11049: Datepicker actions clear and setDate request

    • Priority: Medium
    • Status: Closed
    • Updated: 2 days ago

Important Observations

  • Community Engagement: The project actively encourages first-time contributors through labels like "good first issue" and "hacktoberfest," fostering a welcoming environment for new developers.

  • Ongoing Development: Continuous updates to documentation and feature requests indicate an evolving platform with a focus on user feedback and community-driven improvements.

  • Bug Resolution: Rapid closure of bug-related issues demonstrates effective maintenance practices, ensuring stability and reliability of the platform.

Overall, ToolJet's GitHub activity reflects a dynamic project with strong community involvement, consistent updates, and a commitment to enhancing both functionality and user experience.

Report On: Fetch pull requests



Pull Request Analysis for ToolJet

Open Pull Requests

Notable Open PRs

  1. #11138: Documentation Update for Image Component

    • State: Open
    • Created: 0 days ago
    • Issues: Contributor License Agreement (CLA) not signed.
    • Comments: The CLA needs to be signed for the contribution to be accepted.
  2. #11137: Pagination Component Casing Fix

    • State: Open
    • Created: 0 days ago
    • Issues: CLA not signed.
    • Comments: Similar issue with CLA as above.
  3. #11135: Star Rating Component Documentation

    • State: Open
    • Created: 0 days ago
    • Comments: All committers have signed the CLA, no issues reported by SonarCloud.
  4. #11117: Infinite Render Fix in Table

    • State: Open
    • Created: 1 day ago
    • Issues: Quality Gate failed on SonarCloud due to maintainability rating.
    • Comments: Needs attention to improve code quality.
  5. #11112 & #11111: Docker Release Workflow Updates

    • State: Open
    • Created: 1 day ago
    • Comments: Both PRs passed Quality Gate but require an upgrade to review with AI Code Review Agent.

General Observations

  • Many open PRs are documentation updates, indicating ongoing efforts to improve user guidance.
  • Several PRs have issues with Contributor License Agreements, which need resolution for merging.
  • Some technical PRs have failed quality checks, highlighting areas needing code improvement.

Closed Pull Requests

Notable Closed PRs

  1. #11136: Pagination Component Casing Fix

    • State: Closed without merge
    • Reason: Contributor License Agreement issue; not all committers signed it.
  2. #11129: Update Release Notes

    • State: Merged
    • Significance: Enhances documentation for ToolJet 3.0 release, providing users with updated information.
  3. #11108 & #11107: Duplicate Documentation Updates for Tabs Component

    • State: Closed without merge
    • Reason: Duplicate submissions; contributors advised to consolidate changes into a single PR.
  4. #11096: UTF-8 Encoder and Decoder Template

    • State: Closed without merge
    • Reason: Likely superseded by another submission or internal decision.

General Observations

  • Some closed PRs were duplicates or had unresolved issues like CLA signing.
  • Successful merges often involved documentation improvements, reflecting a focus on enhancing user experience and clarity.
  • Technical updates such as workflow enhancements are being actively integrated, ensuring continuous improvement of the platform's infrastructure.

Conclusion

The ToolJet project is actively maintained with frequent updates to both code and documentation. However, there are recurring issues with Contributor License Agreements that need addressing to facilitate smoother contributions. The focus on documentation suggests a commitment to improving user accessibility and understanding of the platform's features. Technical improvements continue, although some require better maintainability practices as indicated by SonarCloud feedback.

Report On: Fetch Files For Assessment



Source Code Assessment

File: frontend/src/Editor/Inspector/EventManager.jsx

  • Structure & Organization:

    • The file is quite large (1100 lines), which can make it difficult to maintain. Consider breaking it into smaller components or utilities.
    • Logical separation of concerns is evident, with distinct functions handling specific tasks.
  • Code Quality:

    • Extensive use of hooks and context API demonstrates a modern React approach.
    • The use of lodash for deep comparisons and other utilities is appropriate for handling complex data structures.
    • Comments are sparse; adding comments could improve readability and maintainability.
    • There are several inline styles; consider using a CSS-in-JS solution or external stylesheets for better maintainability.
  • Functionality:

    • Handles event management with dynamic rendering of event handlers and actions.
    • Utilizes third-party libraries like react-beautiful-dnd for drag-and-drop functionality, which is well-integrated.
  • Performance:

    • Use of useEffect with JSON stringification could be optimized by dependency arrays to avoid unnecessary re-renders.
    • The file might benefit from memoization techniques to optimize performance further.

File: frontend/src/Editor/Inspector/Inspector.jsx

  • Structure & Organization:

    • The file is moderately sized (647 lines) and appears well-organized with clear separation between UI components and logic.
  • Code Quality:

    • Consistent use of hooks and state management aligns with best practices in React development.
    • The use of utility functions like deepClone indicates attention to immutability, which is good practice.
    • Some complex logic could be abstracted into custom hooks or utility functions for clarity.
  • Functionality:

    • Provides a comprehensive inspector interface with tabs for properties and styles, enhancing user interaction.
    • Integration with translation (useTranslation) shows internationalization support.
  • Performance:

    • The component uses useEffect effectively but could benefit from additional memoization to prevent unnecessary renders.
    • Consider lazy loading or code splitting for components that are not immediately needed.

File: package.json

  • Structure & Organization:

    • Well-organized with clear separation between dependencies, devDependencies, scripts, and linting configurations.
  • Code Quality:

    • Specifies Node.js and npm versions, ensuring environment consistency across different setups.
    • Uses lint-staged and husky for pre-commit hooks, indicating a focus on maintaining code quality through automated checks.
  • Functionality:

    • Comprehensive set of scripts for building, deploying, and managing the application across different environments.
    • Includes commands for database operations, which suggests integration with CI/CD pipelines.

File: server/src/services/components.service.ts

  • Structure & Organization:

    • The file is well-organized into service methods that handle CRUD operations on components.
  • Code Quality:

    • Makes good use of TypeScript features such as types and decorators (@InjectRepository).
    • Error handling is present but could be more robust with specific error types or logging mechanisms.
  • Functionality:

    • Provides core backend services related to component management, including transactions and layout updates.
    • Utilizes TypeORM for database interactions, which is appropriate for managing relational data.
  • Performance:

    • Transactions are handled using utility functions (dbTransactionForAppVersionAssociationsUpdate), which should ensure atomic operations.
    • Potentially heavy operations (e.g., merging component data) could benefit from optimization or batching strategies.

General Observations

  • Consistency & Best Practices:

    • The project follows modern JavaScript/TypeScript practices with a focus on modularity and reusability.
  • Maintainability:

    • Large files could be refactored into smaller modules to enhance readability and maintainability.
  • Documentation & Comments:

    • Sparse commenting in some files may hinder understanding for new contributors. Adding more descriptive comments would be beneficial.

Overall, the codebase reflects a mature project with attention to modern development practices. However, there are opportunities for optimization in terms of performance and maintainability.

Report On: Fetch commits



Development Team and Recent Activity

Team Members and Activities

  • Karan Rathod

    • Worked on documentation updates, fixing broken links, and adding release notes.
    • Collaborated with Pratik Agrawal.
  • Pratik Agrawal

    • Focused on extensive documentation updates across various components and guides.
    • Collaborated with multiple team members including Karan Rathod.
  • Johnson Cherian

    • Merged several pull requests related to documentation fixes and feature enhancements.
    • Worked on frontend and server-side improvements.
  • Shaurya Sharma

    • Addressed issues related to app saving, dark mode, and environment dropdowns.
    • Made significant changes to the frontend and server services.
  • Nakul Nagargade

    • Fixed issues related to component rendering and sidebar functionalities.
    • Worked on improving the app canvas utilities.
  • Rudhra Deep Biswas

    • Made UI changes and bug fixes in the onboarding flow.
    • Worked on workspace constant bug fixes.
  • Adish M

    • Updated Docker release workflows and made corrections in conditions.
    • Worked on deployment-related configurations.
  • Aman Regu

    • Made multiple documentation updates, particularly around setup guides.
    • Worked on the new home page design for documentation.
  • Devanshu Rastogi

    • Enhanced Sharepoint plugin with pagination support and error handling improvements.

Patterns, Themes, and Conclusions

  • Documentation Focus: A significant portion of recent activity has been dedicated to updating and fixing documentation. This includes correcting links, updating guides, and adding new content for features like Sharepoint integration.

  • Collaboration: Team members frequently co-authored commits, indicating a collaborative approach to both development and documentation tasks.

  • Frontend Enhancements: There was a strong focus on improving the frontend experience, with fixes for UI components, dark mode issues, and app builder functionalities.

  • Plugin Development: Efforts were made to enhance marketplace plugins such as Sharepoint, showcasing ongoing development in expanding ToolJet's integration capabilities.

  • Bug Fixes: Numerous commits addressed bug fixes across various components, emphasizing stability improvements in both the frontend and backend systems.