diff --git a/resources/js/store/modules/login.js b/resources/js/store/modules/login.js
new file mode 100644
index 0000000..704a882
--- /dev/null
+++ b/resources/js/store/modules/login.js
@@ -0,0 +1,51 @@
+import axios from "axios";
+
+const state = {
+    regiones: null,
+    grupos_de_compra: null,
+    region_elegida: null,
+    grupo_de_compra_elegido: null,
+};
+
+const mutations = {
+    setRegiones(state, { regiones }) {
+        state.regiones = regiones;
+    },
+    setRegionYBarrios(state, { region, grupos_de_compra }) {
+        state.region_elegida = region;
+        state.grupos_de_compra = grupos_de_compra;
+    },
+    selectGrupoDeCompra(state, { grupo_de_compra }) {
+        state.grupo_de_compra_elegido = grupo_de_compra;
+    },
+};
+
+const actions = {
+    async getRegiones({ commit }) {
+        const response = await axios.get("/api/regiones");
+        commit('setRegiones', { regiones: response.data });
+    },
+    async selectRegion({ commit }, { region }) {
+        const response = await axios.get("/api/grupos-de-compra");
+        commit('setRegionYBarrios', { region: region, grupos_de_compra: response.data[region] });
+    }
+};
+
+const getters = {
+    admin() {
+        return window.location.pathname.startsWith('/admin');
+    },
+    mensajes() {
+        return {
+            mensaje: `Contraseña de ${getters.admin() ? 'administración ' : ''}del barrio`,
+            ayuda: `Si no la sabés, consultá a ${getters.admin() ? 'la comisión informática ' : 'tus compañerxs'}.` };
+    },
+};
+
+export default {
+    namespaced: true,
+    state,
+    mutations,
+    actions,
+    getters,
+};