CxJS Goes Open Source

Marko Stijak
Codaxy
Published in
4 min readSep 24, 2021

--

After 5 years of development, more than 2200 commits, and 400 releases, CxJS is becoming free software. The whole set of widgets, charts, themes, demo applications, documentation, and tools is from now on available under the MIT license.

What is CxJS?

CxJS is a batteries-included JavaScript framework for single-page applications. CxJS is built on top of React and features a large collection of widget and chart components, alongside state management, client-side routing, theming, localization, and other application-level concepts. The goal of CxJS is to be a one-stop shop for projects such as admin applications and dashboards.

Motivation for License Change

It was clear from the beginning that maintaining a large JavaScript framework will be a difficult task. We chose a commercial licensing model hoping to directly fund development and support from sales, but we never got enough traction. Even without funding, CxJS continued to evolve. Here at Codaxy, we’re working on many consulting projects and we’re constantly adding new features based on the requirements we encounter. After five years of development, CxJS matured into a comprehensive battle-tested solution, but commercial offering simply does not make sense anymore.

Let’s go back and see some of the most challenging projects that influenced the development of the framework over the years.

TurboTrack (2017)

TurboTrack was the first big CxJS project. The application is used for real-time GPS vehicle tracking and reporting on top of the collected data. This was an opportunity to complete the Material theme support in CxJS and develop a library for Google Maps integration. It’s interesting that the application layout is fully responsive, meaning it can be used on large desktop screens and mobile phones.

Screenshot of TurboTrack

Assetmax (2018)

Special thanks go to Assetmax, who is one of the first adopters of CxJS for their online wealth-management platform. Assetmax UI proved to be a big challenge with features such as configurable dashboards, configurable navigation, light/dark visual themes, custom reporting, PDF exports, printing, configurable admin tables with a large number of columns and rows, advanced sorting/filtering options, and other UX requirements. There are a lot of improvements added to CxJS related to this project, but most changes were related to the Grid (data table) widget with features such as row and cell editing, column resizing and reordering, buffered rendering, etc.

Screenshot of Assetmax

Rise Wallet (2019)

Rise Wallet allows purchasing small amounts of Bitcoin using gift cards. Developing a web application wrapped in a mobile web view is not usually the best approach, but the proof of concept was so good that we decided to go all the way. Except for buttons and charts, most of the components had to be developed within the application, but this was an excellent opportunity to work out CxJS features related to touch event handling, hash-based routing, and ironing out Safari quirks.

Screens from the Rise Wallet mobile application

The Future

Now when CxJS is completely free, the biggest hope we have is that it will be used more. It would be nice to see CxJS used within other open-source products and especially to see contributions from the community. There are many open opportunities. The CxJS documentation application is pretty nice and could be extracted into a reusable documentation project template. It is time for a new visual theme. Google-like calendar widget? Maybe pgAdmin could be rewritten in CxJS!? It would be great to see application templates for different backends, i.e. Node.js, .NET, Java, or PHP. That’s something that we always wanted but never had time to deliver. There is an application template for integration with Tailwind CSS, but we could use one for Bootstrap too.

Try it out and become a member of the CxJS community

You can quickly try out CxJS by setting up a new project using CxJS CLI tools. In our previous post, we presented how CxJS and Tailwind CSS play nicely and that might be a good starting point.

If you like CxJS, give it a star on GitHub. If you need help, ask a question on StackOverflow. If you find a bug, please raise an issue. Request an invite to our Slack channel and become a member of the CxJS community.

--

--