cover photo
Tochal, Tehran, 6 November 2019
updated on Aug 10, 2024

CliqMind

CliqMind has a rich history. At InKnowTex , we consistently aimed to optimise our enterprise software, RaaiVan, to be suitable for teams and small businesses.

In 2019, I realised that instead of just wanting to make this change, we should take action. I reached out to my business partner with the idea: we've been considering an agile RaaiVan, so why not make it happen? My partner agreed, and we decided to go for it.

With a talented team already in place, we gathered everyone and announced our new project, CliqMind . The whole team was on board!

We initiated three simultaneous activities:

  • Planning a technical migration to a scalable, cloud-friendly architecture
  • Preparing a business plan
  • Seeking partnerships and investors

In this article, I will discuss the technical aspects of our journey.

What is CliqMind ?

CliqMind is essentially a streamlined version of RaaiVan designed for small teams and enterprises. It's a team productivity tool that allows teams to reuse existing templates for Forms and Workflows, or create their own customised versions using CliqMind 's intuitive and user-friendly tools. Additionally, it features a social space and a wiki with a block editor, enabling teams to collaborate and share information effectively.

From the website :

Teams deal with different types of information about different things every day. CliqMind boosts team productivity by collecting and connecting team information in a Digital Team Brain. Create a timeless and shared understanding within your team by CliqMind .
Introduction to CliqMind

The Team and My Role

I served as the Technical Lead at CliqMind , the same role I held at InKnowTex . Our team included:

  • Myself as the lead and full-stack developer
  • Two front-end developers
  • A business analyst who also acted as the scrum master
  • A designer
  • A part-time DevOps engineer

With a small technical team, I was responsible not only for leading but also for all non-front-end technical aspects.

Tech Stack and Microservices

As mentioned, CliqMind is a revolutionary version of RaaiVan tailored for teams and small businesses. Unlike RaaiVan, which is a monolithic application, CliqMind features a cloud-friendly architecture with multiple microservices.

The microservices and their tech stacks are as follows:

Authentication Server

The authentication server is written in Java Spring Boot and uses PostgreSQL as its database. It handles authentication and authorisation, with authentication based on JWT tokens.

Account Management

This microservice manages subscriptions and service usage. It is also written in Java Spring Boot and uses MongoDB as its database.

Search Engine

The search engine is a cluster of Solr nodes synchronised by Zookeeper.

API Servers

CliqMind includes several modules such as Core, Forms, Workflow Engine, Wiki, and Social, each with its own API server.

These API servers originated from RaaiVan’s large API server, which was written in C# .NET Framework. We split them into microservices, implementing some with C# .NET 6 and others with Java Spring Boot. All APIs are fully annotated with OpenAPI and accessible via Swagger UI.

The databases used are a combination of MS SQL Server and PostgreSQL.

Front-End

We developed the front-end with React and TypeScript, later transitioning to Next.js. This was particularly challenging because the original front-end was written in plain JavaScript, and converting everything to React would have taken a long time. Therefore, we used both side by side, gradually migrating the legacy code to modern code.

We also developed a component library using React and TypeScript, which we auto-published as an npm package using GitHub Actions. We implemented the design system and numerous reusable components in the library. The components were available on Storybook and published on Chromatic for design review and visual regression testing (VRT).

Messaging

We utilised RabbitMQ for messaging, primarily for:

  • Updating Solr, our search engine. When a user updates any part of a page, it emits a notification to re-index the page. Due to frequent triggers for a single page, throttling was necessary.
  • Sending external notifications such as emails and SMS.

HTML to PDF

This microservice, implemented with Java Spring Boot, has a single API endpoint for converting HTML content to PDF. It includes features to add headers, footers, page numbers, and passwords to the generated PDF documents.

Other Technologies Used

In addition to the microservices mentioned, we also used the following technologies:

  • S3 for file storage
  • Jenkins along with GitHub Actions and GitHub Webhooks to automate the CI/CD process
  • Docker and Kubernetes for deploying the product to different environments
  • Redis for caching
  • Implemented integrations with Google Docs and Notion as well as login with Google and LinkedIn.

Recognition

Kevin Jahanian (Co-founder | Chairman)

I highly recommend Ramin as a full stack developer and colleague. I have had the privilege of working alongside him for many years, and he has consistently proven to be an exceptional talent in the field. Ramin's passion for tackling challenges and making a meaningful impact is truly inspiring.

His expertise in programming, software & database design, and software development is outstanding. Ramin's ability to approach complex problems with logical and structured solutions sets him apart. He is not only a smart and capable developer but also a dedicated and honest team member.

Ramin is undoubtedly an asset to any team, and I have no doubt that he will continue to excel in his career and contribute significantly to any organization he joins. It's been a pleasure working alongside him, and I wholeheartedly endorse him for any professional endeavor.