Vuex enforces below high-level principles,
* The Application-level state need to be centralized in the store
* The state should be mutated by committing mutations only(i.e, for synchronous transactions)
* The actions should be used for asynchronous transactions.