Skip to content
JavaScript CSS Other
Branch: master
Clone or download
mjancarik Merge pull request #46 from seznam/replace-state-redirection
fix: use replaceState for redirects instead of pushState
Latest commit 30000ab Feb 18, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs docs: fix opening mobile menu Feb 10, 2020
packages fix: use replaceState for redirects instead of pushState Feb 17, 2020
utils test: 💍 Fix version replacement in benchmark test Dec 6, 2019
.eslintrc.js feat: added ima-devtools, ima-devtools-scripts Dec 5, 2019
.gitattributes chore: 🤖 Initialize monorepo structure and its process Nov 7, 2019
.gitignore feat: added ima-devtools, ima-devtools-scripts Dec 5, 2019
.npmrc chore: 🤖 Initialize monorepo structure and its process Nov 7, 2019
.prettierignore refactor: 💡 removed ignores from lerna config Dec 5, 2019
.stylelintrc feat: added ima-devtools, ima-devtools-scripts Dec 5, 2019
.travis.yml feat: added ima-devtools, ima-devtools-scripts Dec 5, 2019
CHANGELOG.md chore(release): publish Jan 9, 2020
LICENSE chore: 🤖 Initialize monorepo structure and its process Nov 7, 2019
README.md refactor: 💡 merged master, aop@0.3.1 Dec 17, 2019
gulpfile.js chore: 🤖 Initialize monorepo structure and its process Nov 7, 2019
jest.conf.js refactor: 💡 Rename ima packages to @ima scoped packages (#2) Nov 13, 2019
lerna.json refactor: 💡 fixed lerna ignor patterns for devtools-scripts Jan 13, 2020
package-lock.json ci: 🎡 fixed CI install of devtools dependencies Jan 7, 2020
package.json ci: 🎡 fixed CI install of devtools dependencies Jan 7, 2020

README.md

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 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 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).
  • 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 evironment-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 days work which allow you server side rendering and hydrating application in browser.
  • server - it contains methods which allow you connect IMA application with express framework.
  • gulp-tasks - IMA.js use for bundling and automatisation gulp. There are prepared common tasks and base configuration.

Plugins

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

Getting Started

Initialize application skeleton with single command

npx create-ima-app

and start the development!

cd create-ima-app
npm run dev

Contributing

Contribute to this project via Pull-Requests.

We are following Conventional Commits Specification. To simplify the commit process, you can use npm run commit command. It opens an interactive interface, which should help you with commit message composition.

You can’t perform that action at this time.