Skip to content

seznam/ima

Repository files navigation

IMA.js logo

IMA.js

Build Status dependencies Status Known Vulnerabilities code style: prettier

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 have created the IMA.js framework. Here are a few outlines that we're most proud of:

  • Isomorphic - application logic is first executed at the server-side, generates the page markup, and 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-the-box support for web crawlers and greater overall user experience (or UX for short).
  • 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.
  • Production ready - there's no need for additional setup or configuration. IMA.js uses environment-specific configurations from the start.
  • 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 and more on imajs.io.

Main IMA.js parts

  • core - it contains base classes and common classes for every day work which allows you server side rendering and hydrating application in browser.
  • server - it contains methods which allow you to connect IMA application with the express framework.
  • gulp-tasks - IMA.js uses gulp for bundling and automatization. There are prepared common tasks and a base configuration.

Plugins

See the ima-plugins repository for available IMA.js plugins.

Getting Started

Initialize application skeleton with single command

npx create-ima-app
# or if you are using yarn
yarn create ima-app

and start the development!

cd create-ima-app
npm run dev
# or if you are using yarn
yarn dev

Contributing

See How to Contribute.