What is ConanJs?

The Goal

Our goal is very simple:

To make developing end to end web applications easy and scalable.

We focus on real use cases too, and this is why we have a demo gallery where you can see how to solve some of the most common requirements using ConanJs.

At the core, we focus on:

  • Conan Data: With Conan data you can manage you application state, by letting you divide your state into capsules of reusable state which are ultimately plain JS objects

To read more about how we compare to traditional state management in react, have a look at this article:

  • Conan Runtime: A major part of our runtime is the dependency injection, with ConanJs, in the same framework you can not only manage your state, but also have dependency injection.

Let's look in detail at this two, Conan Data and Conan Runtime.

The foundation - Conan Data and Conan Runtime

There are two pillars that build ConanJs

Conan Data

ConanJs separates the UI and the state into Conan Data.

If you have developed web applications before, you have dealt with state.

We consider state all the changing data and metadata that you need to manage to fulfil your business requirements.

We provide you with Conan Data (state and flows), which gives you a unified approach to manage the state

State in ConanJs is built so that you don't have to decide what pattern to use when dealing with state.

Some of the patterns that you might be familiar and that ConanJs unifies are:

  • Local state via setState / hooks / callbacks

  • Context state via hooks

  • Global state via Redux / Redux tool kit / selectors..

You can see this in our scoping section

Conan Runtime

ConanJs provides you with necessary tools to deliver enterprise grade applications

Ultimately we want to have the state completely decoupled from the views, our end goal would be to enable developers to write their views as if they were stateless.

To help with this, and to help developers decoupling their code, we provide with dependency injection.

We also provide with a Logging system that you can reuse on your app and that is used internally by everything else in ConanJs.

At last, we also provide with ASAPs, our own implementation of Promises which is fully compatible with your currently existing promises.

What's next?

Still, confused? Don't blame you!

What is ConanJs?

It might help to look at understanding why you should use ConanJs depending on your background.

Have a look at: Why ConanJs...

You might otherwise prefer to start looking at our examples...

... or maybe you prefer reading up, in which case, we would recommend start by reading about ConanData

Our vision

ConanJs as of v1.0, has a lot to offer, and we think is ready to be considered as an alternative to Redux or vanilla state management.

But we think that there is a lot more that can be done.

In the next releases we will like to:

  • Add support for other frameworks (Angular and Vue to start with)

  • Cover more use cases in our Demos

    • Forms and validations

    • Layouts

    • Navigation

    • CRUD

  • Allow for even more complex state to be created.

    • Lists

    • Streams

  • Add support for transactions to our ConanData

    • Commit

    • Rollback

    • Undo/Redo...

  • Reduce even further the amount of boilerplate code needed.

    • When creating async actions

    • Flows

    • Adding reactions

  • Introduce the concept of resources to encapsulate the logic around fetching data.

  • Provide with backend implementations to our demos to illustrate end to end scenarios

All this is to support our goal:

To make developing end to end web applications easy and scalable.

As you can see, we have a lot of work ahead of us.

If you like what you see, find below our About us page, and shoot us a message / github star / tweet e.t.c.