IMA.js-skeleton icon indicating copy to clipboard operation
IMA.js-skeleton copied to clipboard

The package was moved to https://github.com/seznam/ima/tree/master/packages/create-ima-app.

IMA.js logo

IMA.js skeleton application

The IMA.js is an application development stack for developing isomorphic applications written in pure JavaScript and React.

Why we use IMA.js and you should too?

Here at Seznam.cz, development of a frontend application comes with many checkboxes that need to be ticked off before the project goes public. Mainly because of a diverse audience and a challenging product requirements.

In order to not reinvent the wheel on every project and to address all of these problems (checkboxes) we created the IMA.js framework. Here are a few outlines that we're most proud of:

  • [X] Isomorphic - application logic is first executed at the server-side, generates the page markup, and then when the application logic is executed at the client-side it automatically binds to the server-generated markup and acts like a single-page application (or a multi-page application if the client does not support JavaScript). This allows for fast load times, out-of-box support for web crawlers and greater overall user experienc (or UX for short).
  • [X] React compatible - IMA.js Views extend the React Component and are in tight cooperation with our Controllers. That means you can use the full magic of React v16 without loosing anything.
  • [X] Production ready - there's no need for additional setup or configuration. IMA.js uses evironment-specific configurations from the start.
  • [X] Battle tested - IMA.js is used on various projects across Seznam.cz. Some of them pushing the limits of what a frontend application can do.

Documentation

We have prepared a complex tutorial for you: Your first IMA.js application. This tutorial covers the basics of creating isomorphic web applications using IMA.js, but you will encounter some more advanced concepts in there as well.

For a more in-depth information about the IMA.js see a full documentation.

Main IMA.js parts

  • IMA core - it contains base classes and common classes for every days work which allow you server side rendering and hydrating application in browser.
  • IMA server - it contains methods which allow you connect IMA application with express framework.
  • IMA bundle - IMA.js use for bundling and automatisation gulp. There are prepared common tasks and base configuration.

Plugins

Here's a list of plugins maintained by Seznam.cz and other contributors that you can safely use in your app: