From zero to 10,000 stars and 160 contributors on GitHub
Tags: beginners, showdev, github, react
Published: 2022-05-16 12:10:29

We are excited to announce that our GitHub repository crossed 10,000 stargazers. It has been an amazing journey building ToolJet alongside our energetic and involved community. In this article, we will discuss about our learnings from this fast-paced journey of building an open-source product that the community loves.

> For those who haven't heard about [ToolJet](https://github.com/ToolJet/ToolJet), ToolJet is an open-source low-code framework for building custom internal tools.

The first commit to our GitHub repository was on March 31, 2021, and we made the repository public on June 7, 2021, and [launched it on Hackernews](https://news.ycombinator.com/item?id=27421408).

### Our journey since we made our repository public!

![milestone](https://blog.tooljet.com/content/images/size/w1600/2022/05/s6.png)

### April 2021
The first commit to the repository was on March 31st, 2021. Most of the April was spent on pushing more and more commits to the repository. Major challenges were to get the drag and drop builder working.

ToolJet's POC looked like this:
![april2021](https://blog.tooljet.com/content/images/size/w1000/2022/05/s2.png)

and then improved to this at the end of April:

![april2021end](https://blog.tooljet.com/content/images/size/w1000/2022/05/s3.png)

### May 2021
I reached out to a few companies that I had relationships with to try out ToolJet and worked more on iterating ToolJet based their feedback. Some of my friends also stepped in to help build ToolJet by contributing to the repository. At this point, the repository was private.

At the beginning of  May, I tried to reach out to angel investors/VC firms and applied for Y Combinator but everyone rejected since there was no traction to convince the idea. I've written about this in detail in this article: [Building and launching ToolJet](https://blog.tooljet.com/building-and-launching-tooljet/).

### June 2021: The launch of public beta & fundraising.
Building the website, creating graphics for posting on ProductHunt and finding a hunter was done in the last week of May and first week of June.

ToolJet was launched on ProductHunt first and then a few hours later on Hacker News. [ProductHunt post](https://www.producthunt.com/posts/tooljet-0-5-3) was among the top 5 of the day within a few minutes and later ended up being **#1 product of the day**.

Now we have some inbound interest from VC firms since we got the initial traction that we needed to convince that this is an idea worth pursuing. Now the challenge is to find investors who understand developer tools and open-source. Long story short ( because we have another article that explains why we raised funding and how did we chose the partners - [link](https://blog.tooljet.com/raising-vc-funding-for-open-source-project/) ), we were lucky that we quickly found [Nexus](https://nexusvp.com/) interested in leading our seed round. They had great experience in developer tools and open-source as they were the early investors in companies like Hasura, Min.io and Postman.

We also managed to onboard two other VC firms and a few angel investors. We did not try to get more termsheets or reach out to more firms as we were optimising for quickly closing the round so that we can go back to building ToolJet. In the end, we raised a $1.55 million seed round.

Decision to go ahead with VC funding helped us in many ways, will write about it in in detail in the coming weeks.

### July 2021: The importance of stack in open-source.
ToolJet server was initially built using Ruby ( Ruby on Rails ) and ToolJet client was built using ReactJS. Having two languages ( Ruby and JavaScript ) in the codebase was a barrier for many to contribute to ToolJet. The suggestion of choosing the right stack and a plugin-based architecture for an open-source project came up when I had a chance to talk to Tanmai Gopal, co-founder of [Hasura](https://hasura.io/).

Since ToolJet was still in it's early stages, we decided to port the server completely to JavaScript/TypeScript. The whole process took around 6 weeks but it helped us change the architecture to make the server modular. It was a difficult decision to stop working on new features and spend more than a month on migration but this decision paid off in the long run.

We've written in detail about this on our blog:
[Part1: Why we are migrating to Node.js](https://blog.tooljet.com/migrating-toojet-from-ruby-on-rails-to-nodejs/)
[Part2: How we migrated from Rails to NestJS](https://blog.tooljet.com/how-we-migrated-tooljet-server-from-ruby-to-node-js/)

### August & September 2021: Building the team.
We hired our first four engineers in July and onboarded them in August. The first 15-20 team members sets the culture of the company and thus we were focusing more on culture and less on experience in Node.js. We managed to hire senior engineers from our networks as well as from hiring platforms.

### The rest of 2021
In the last quarter of 2021, we managed to ship a bunch of major features:

- Team collaboration features: users can comment anywhere on canvas and tag other team members.
- Ability to run JavaScript from within ToolJet.
- Application template library for users to get started easily.
- Connectors for cloud storages such as AWS S3, GCS & Min.io.
- Ability to export applications and import them into different environments.
- Permissions based on user groups.
- Support for authentication using Google SSO.

During this time, our GitHub repository crossed 4,000 stargazers & 100 contributors. We also added the first developer advocate to the team to address the needs of our growing community.

### January 2022: De-coupling connectors as plugins & preparing for v1.0 launch.
The initial version of ToolJet did not have the concept of plugins and every connector lived in the codebase. When we migrated to Node.js, the logic for connectors was abstracted into a `**plugins**` folder within the directory for ToolJet server in the codebase.

We soon realised that it will not be possible to scale connectors if they had to live within the codebase. Having hundreds of connectors can slow down the server and most of the users will not need more than 5 connectors.

Majority of the low-code frameworks have very less number of connectors and often the long tail of connectors are ignored. We wanted to chase this long tail of connectors and also give users the ability to quickly build connectors as per their requirements.

We decided to de-couple the connectors from the codebase as plugins and built a **Plugin Development Kit** for the community to easily build plugins.

Now the connectors can stay completely outside the codebase and these plugins can be easily bootstrapped using `tooljet-cli` ([link](https://www.npmjs.com/package/@tooljet/cli)).

We also decided to launch ToolJet v1.0 in February. ToolJet was being used by many large organisations in production since last few months but we did not want to call it a v1.0 unless we've de-coupled the plugins.

In January, we smashed numerous bugs and user experience issues that were causing trouble to the users. We also spent time on adding more templates to our template library, adding more ways to deploy ToolJet on premises, support for more SSO providers, etc.

### February: Launching v1.0
On February 8th, we released ToolJet v1.0 and launched it on [ProductHunt](https://www.producthunt.com/posts/tooljet-2). Having the beta tag prevented many organisations from using ToolJet as beta is often read as "not stable, expect bugs". Now this issue is resolved!

We've written in detail about the changes that we've made in v1.0 [here](https://blog.tooljet.com/announcing-tooljet-v1/).

{% twitter 1490970429841838080 %}

We did not stop there, we shipped a lot of other features in February such as integrations with Snowflake, n8n, etc. Majority of our time was being spent on feature requests and bug reports from the community at this point.

We also crossed 5,000 stars in February!

### March: Meeting the team in person for the first time
We've grown into a team of 12 at this point but most of the team members haven't met the others in person. Our plan was to organise team meetups every quarter but the covid situation did not let us do that until now. We spent a week in Goa, India collaborating and brainstorming on different features. It was exciting to meet the people with whom you talk on a daily basis ( mostly texts because we prefer asynchronous communication ) but never got a chance to meet in person.

During this month, we were focusing on three main things:

- Support for multiplayer editing.
- Ability to have multiple workspaces within ToolJet.
- More connectors.

### April: ToolJet now supports multiplayer editing & custom React components
At this point, large teams that were using ToolJet started facing issues because only one user will be able to edit an application at a given time. We started looking into making ToolJet a collaborative workspace. Figma has done this well and have also documented how they did it ([link](https://www.figma.com/blog/how-figmas-multiplayer-technology-works/)). This resource was very helpful for us. Here is our article explaining a POC built using CRDTs: [link](https://blog.tooljet.com/multiplayer-tic-tac-toe-using-react-crdt-yjs/).

We've also added support for bringing your own React components to ToolJet. Low-code frameworks are not known for their flexibility but now with ToolJet, you can bring your own React components, create connectors using our plugin development kit and even create JavaScript snippets and run them from within ToolJet. That covers almost all areas where a user will need flexibility.

We also added support for multiple workspaces within ToolJet. Users can now be part of different workspaces and the workspaces can have their own SSO configurations.

During this period, we also crossed 150 contributors on GitHub!

{% twitter 1512473319022293000 %}

We also made it to #2 among the fastest growing open-source startups. [Link](https://runacap.com/ross-index/q1-2022/).

![topopensource](https://blog.tooljet.com/content/images/2022/05/image-18.png)

### What did we learn from this journey?
Getting product-community fit is crucial for any open-source startup. We have been working closely with our community to understand their needs and improve accordingly and it worked well for us. Moving forward, we are allocating more resources to help the community. This involves providing better support through our Slack group, faster turnaround times for issues & pull requests, creating more content for the community to get started easily, creating more short reference videos and articles on how to use ToolJet, organising more community events and more!

### What's going on and what's next?
We believe we are still in the early days of ToolJet. A lot of things can be done that helps to get lot more things done using ToolJet. We are working on shipping more connectors and more complicated UI widgets. But that's not all, we are working on major features such as syncing applications with GitHub, support for even more SSO providers, improving query builders, making plugins installable, etc. We've a public roadmap [here](https://github.com/ToolJet/ToolJet/projects/2)  that captures what's going to be built over the next few months.

In short, we want to improve the productivity of developers by letting them build complicated business applications, internal tools and workflows with very minimal engineering effort. For this, we are expanding our engineering, product and community teams at the moment.

Stay tuned for more exciting updates in the coming weeks. We write this at the end of every article but we have also kept that promise by releasing a new and improved version of ToolJet every other week!