Hasta que estés satisfecho, está terminado

Obra Civil

En MaiPro contamos con personal capacitado para desarrollar
proyectos de obra civil residencial, comercial e industrial
con seguridad, presición y calidad garantizada

Acabados

Aplicación y renovación  de recubrimientos, pintura, yeso, pisos, muros y detalles estéticos.
En Maipro transformamos tus espacios con acabados profesionales y materiales de alta calidad
para proyectos residenciales, comerciales e industriales.

Mantenimiento

Servicios de mantenimiento preventivo y correctivo para instalaciones
residenciales, comerciales e industriales.
Conserva tus espacios en óptimas condiciones con la ayuda de
profesionales calificados y disponibles a demanda

Instalaciones especiales

Soluciónese técnicas y de alto valor agregado.

En Maipro contamos con especialistas para ejecutar proyectos complejos
con precisión, innovación y enfoque personal

Soluciones

Resolvemos tus problemas sin vueltas

Confiabilidad

Nuestros clientes son nuestra garantía

Planeamiento

Con una cuidadosa visita técnica planificamos los pasos a seguir

Asesoramiento

Despejamos tus dudas y te recomendamos la mejor solución

Acerca de maipro

“En MAIPRO, hasta que estés satisfecho, está terminado.”

Nuestro principal valor es la confiabilidad. Nos comprometemos contigo desde el primer día hasta el final del proyecto, asegurando que cada detalle se realice con precisión, limpieza y profesionalismo.

Lo que nos distingue:

  • Garantía de satisfacción total: el trabajo no se da por terminado hasta que tú estás completamente satisfecho.
  • Compromiso transparente: nuestros colaboradores solo reciben el pago final cuando tú das el visto bueno.
  • Relación de confianza: trabajamos como si fuera para nosotros, con respeto, orden y atención al detalle.

 

En MAIPRO, tu tranquilidad es parte del servicio.

¿Por qué trabajar con Maipro?

  • Atención oportuna
    Solicita servicios justo cuando los necesitas, sin largas esperas ni procesos complicados.

  • Profesionales verificados
    Todos nuestros técnicos y especialistas han sido evaluados y seleccionados por su experiencia y confiabilidad.

  • Calidad garantizada
    Supervisamos cada trabajo y ofrecemos garantía en nuestros servicios para tu tranquilidad.

  • Tecnología a tu favor
    Plataforma digital para cotizar, agendar y dar seguimiento a tus servicios de forma fácil y rápida.

  • Precios justos y transparentes
    Cotizaciones claras, sin cargos ocultos, con diferentes opciones según tus necesidades.

  • Seguridad y confianza
    Nuestros colaboradores siguen protocolos de seguridad y trato respetuoso en cada visita.

  • Cobertura residencial, comercial e industrial
    Atendemos hogares, negocios, oficinas, instituciones, desarrollos inmobiliarios y plantas industriales.

  • Soluciones integrales en un solo lugar
    No necesitas buscar múltiples proveedores: Maipro centraliza todo lo que tu inmueble necesita.

  • Enfoque en el cliente
    Escuchamos, asesoramos y acompañamos cada proyecto para asegurar tu completa satisfacción.

  • Garantía de cumplimiento Nuestros servicios se terminan al 100%, ya que contamos con equipo de respaldo que lo garantiza. 

¿Cómo funciona?

  1. Entra a nuestra app o sitio web.
  2. Selecciona el servicio que requieres.
  3. Describe brevemente el trabajo que necesitas.
  4. Escoge si deseas atención inmediata o agendar una cita.
  5. Selecciona si deseas volver tu servicio recurrente.
  6. ¡Listo! Un profesional se pondrá en camino.


Activa las notificaciones

Instala nuestra app movil

Toca compartir

Agregar a inicio

Instala nuestra app movil

(function(){ // ===== CONFIG (tus IDs de Elementor popups) ===== var POPUP_INSTALL_ANDROID = 1134; // Instalación Android/desktop var POPUP_INSTALL_IOS = 1166; // Instalación iOS (A2HS) var POPUP_PUSH_ACTIVATE = 1176; // Activar notificaciones (en PWA) // ================================================= var LS = window.localStorage||{getItem:function(){},setItem:function(){},removeItem:function(){}}; var deferredPrompt = null; var SHOWN_INSTALL_FLAG='maipro.install.shown'; var SHOWN_PUSH_FLAG='maipro.push.shown'; function log(){ if (window.console && console.log) console.log.apply(console, ['[Maipro]'].concat([].slice.call(arguments))); } function warn(){ if (window.console && console.warn) console.warn.apply(console, ['[Maipro]'].concat([].slice.call(arguments))); } function $(s){return document.querySelector(s);} function getCookie(n){var m=document.cookie.match(new RegExp('(?:^|; )'+n+'=([^;]+)'));return m?decodeURIComponent(m[1]):'';} function isStandalone(){var m=false;try{m=window.matchMedia&&window.matchMedia('(display-mode: standalone)').matches;}catch(e){} return m||(window.navigator.standalone===true);} function isIOS(){return /iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream;} function canShowInstallPopup(){ if(isStandalone()) return false; return !LS.getItem(SHOWN_INSTALL_FLAG); } function canShowPushPopup(){ // Mostramos el popup de activación solo si estamos en modo standalone (PWA) y no hay permiso ya concedido if(!isStandalone()) return false; if(window.Notification && Notification.permission==='granted') return false; return !LS.getItem(SHOWN_PUSH_FLAG); } // ---------- Elementor Popups helpers ---------- function openPopupById(id){ try{ if(window.elementorProFrontend && elementorProFrontend.modules && elementorProFrontend.modules.popup){ elementorProFrontend.modules.popup.showPopup({id:id}); return true; } }catch(e){ warn('No se pudo abrir popup', id, e); } return false; } function closePopups(){ try{ if(window.elementorProFrontend && elementorProFrontend.modules && elementorProFrontend.modules.popup){ elementorProFrontend.modules.popup.closePopup(); } }catch(e){} } function openPopupWhenReady(id, maxWaitMs){ var started = Date.now(); (function tick(){ if (openPopupById(id)) return; if (Date.now() - started > (maxWaitMs||6000)) { warn('Timeout abriendo popup', id); return; } setTimeout(tick, 250); })(); } // ---------- Instalación PWA ---------- window.addEventListener('beforeinstallprompt', function(e){ e.preventDefault(); deferredPrompt = e; log('beforeinstallprompt capturado'); var btn = $('#btn-install-pwa'); if (btn){ btn.disabled=false; btn.textContent='Instalar app'; } }); function maybeShowWebInstallFallback(){ if (canShowInstallPopup() && !isIOS() && !isStandalone()) { log('Mostrando popup de instalación (fallback web)'); LS.setItem(SHOWN_INSTALL_FLAG,'1'); openPopupWhenReady(POPUP_INSTALL_ANDROID, 6000); } } function maybeShowIOSInstall(){ if (canShowInstallPopup() && isIOS() && !isStandalone()) { log('Mostrando popup iOS A2HS'); LS.setItem(SHOWN_INSTALL_FLAG,'1'); openPopupWhenReady(POPUP_INSTALL_IOS, 6000); } } function wireInstallButtons(){ var bInstall=$('#btn-install-pwa'); if(bInstall){ if(!deferredPrompt){ bInstall.disabled = true; bInstall.textContent='Preparando instalación…'; } bInstall.addEventListener('click', function(ev){ ev.preventDefault(); if(!deferredPrompt){ alert('Aún preparando instalación. Intenta otra vez.'); return; } deferredPrompt.prompt(); deferredPrompt.userChoice.then(function(choice){ log('Instalación:', choice && choice.outcome); deferredPrompt = null; closePopups(); })['catch'](function(){ deferredPrompt=null; closePopups(); }); }); } var bDismiss=$('#btn-install-dismiss'); if(bDismiss){ bDismiss.addEventListener('click', function(){ closePopups(); }); } var bDismissIOS=$('#btn-install-ios-dismiss'); if(bDismissIOS){ bDismissIOS.addEventListener('click', function(){ closePopups(); }); } } // ---------- OneSignal helpers (no inyectar SDK aquí) ---------- function waitForOneSignalReady(timeoutMs) { timeoutMs = timeoutMs || 8000; return new Promise(function (resolve) { var waited = 0; var interval = 150; var t = setInterval(function () { if (window.OneSignal && typeof OneSignal.push === 'function') { clearInterval(t); return resolve(true); } waited += interval; if (waited >= timeoutMs) { clearInterval(t); return resolve(false); } }, interval); }); } function safeSetExternalUserId() { try { var externalId = (window.MaiproOneSignalConfig && MaiproOneSignalConfig.externalUserId) ? String(MaiproOneSignalConfig.externalUserId) : (window.USER_ID ? String(window.USER_ID) : null); if (!externalId) return; OneSignal.push(function() { if (typeof OneSignal.setExternalUserId === 'function') { try { OneSignal.setExternalUserId(externalId); log('OneSignal externalUserId seteado:', externalId); } catch(e){ warn('setExternalUserId error', e); } } }); } catch(e) { warn('safeSetExternalUserId', e); } } // Mostrar prompt de OneSignal (slidedown o registro) function showOneSignalPrompt() { waitForOneSignalReady(8000).then(function(ready){ if (!ready) { warn('OneSignal SDK no listo'); alert('OneSignal SDK no cargado todavía. Intenta de nuevo.'); return; } // Asociar external user id si existe safeSetExternalUserId(); OneSignal.push(function(){ if (typeof OneSignal.showSlidedownPrompt === 'function') { OneSignal.showSlidedownPrompt(); } else if (typeof OneSignal.registerForPushNotifications === 'function') { OneSignal.registerForPushNotifications().catch(function(e){ warn('registerForPushNotifications failed', e); }); } else { warn('No hay método de prompt disponible en OneSignal'); } }); }); } // Opcional: guardar mapping OneSignal userId <-> WP user_id en servidor (recomendado) // Puedes descomentar y ajustar la URL /wp-admin/admin-ajax.php?action=maipro_save_onesignal function saveOneSignalIdOnServer(oneSignalUserId) { try { if (!oneSignalUserId) return; // Si quieres que el servidor guarde el mapping, implementa el handler PHP para maipro_save_onesignal /* fetch('/wp-admin/admin-ajax.php?action=maipro_save_onesignal', { method: 'POST', credentials: 'same-origin', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ onesignal_id: oneSignalUserId }) }).then(function(r){ return r.json(); }).then(function(j){ log('Saved OS id on server', j); }).catch(function(e){ warn('saveOneSignalIdOnServer error', e); }); */ } catch(e){ warn('saveOneSignalIdOnServer', e); } } // Cuando se suscriba, OneSignal dispara subscriptionChange / puedes obtener userId function bindOneSignalEvents() { waitForOneSignalReady(8000).then(function(ready){ if(!ready) return; OneSignal.push(function(){ try { OneSignal.on && OneSignal.on('subscriptionChange', function(isSubscribed){ log('OneSignal subscriptionChange:', isSubscribed); if (isSubscribed) { OneSignal.getUserId().then(function(osId){ log('OneSignal userId:', osId); // Guardar mapping opcional: saveOneSignalIdOnServer(osId); }).catch(function(e){ warn('getUserId error', e); }); } }); } catch(e){ warn('bindOneSignalEvents error', e); } }); }); } // ---------- Notificaciones: integrar con el popup de Elementor ---------- function setPushStatus(t){ var el=$('#push-status'); if(el) el.textContent=t||''; } function wirePushPopup(){ function attach(){ var root = document.querySelector('.elementor-popup-modal[data-elementor-id="'+POPUP_PUSH_ACTIVATE+'"]'); if (!root) return false; var btn = root.querySelector('#btn-activar-push'); if (!btn || btn.__wired) return false; btn.__wired = true; btn.style.display='inline-flex'; btn.style.visibility='visible'; btn.style.opacity='1'; // reemplazamos la lógica que antes usaba Firebase por llamada a OneSignal prompt btn.addEventListener('click', function(ev){ ev.preventDefault(); setPushStatus('Preparando OneSignal...'); // Mostrar prompt de OneSignal (manejamos internamente si SDK no existe) showOneSignalPrompt(); }); return true; } var mo = new MutationObserver(function(){ attach(); }); mo.observe(document.documentElement, { childList:true, subtree:true }); setTimeout(attach, 300); if (window.jQuery && window.elementorProFrontend) { try { jQuery(document).on('elementor/popup/show', function(e,id){ if(id===POPUP_PUSH_ACTIVATE) setTimeout(attach,50); }); } catch(e){} } } function maybeShowPushPopup(){ try { var p=new URLSearchParams(window.location.search); if(p.get('showpush')==='1'){ openPopupWhenReady(POPUP_PUSH_ACTIVATE,6000); return; } } catch(e){} if (canShowPushPopup()) { log('Mostrando popup de activar notificaciones (PWA)'); LS.setItem(SHOWN_PUSH_FLAG,'1'); openPopupWhenReady(POPUP_PUSH_ACTIVATE, 6000); } } // ---------- Inicio y flujo ---------- function init(){ wireInstallButtons(); wirePushPopup(); // Enlazar eventos OneSignal para capturar subscriptionChange y mapear al servidor si hace falta bindOneSignalEvents(); if(isStandalone()){ // si estamos en PWA, esperar a que OneSignal esté listo y luego mostrar el popup si corresponde waitForOneSignalReady(8000).then(function(){ maybeShowPushPopup(); }); }else{ // si no estamos en PWA, mostrar popups de instalación según plataforma maybeShowIOSInstall(); maybeShowWebInstallFallback(); } } if(document.readyState==='complete' || document.readyState==='interactive'){ setTimeout(init, 300); } else { document.addEventListener('DOMContentLoaded', function(){ setTimeout(init,300); }); } // Mostrar instaladores si no está instalado pasado cierto timeout setTimeout(function(){ if(!isStandalone()){ if(isIOS()) maybeShowIOSInstall(); else maybeShowWebInstallFallback(); } }, 3000); window.addEventListener('appinstalled', function(){ LS.removeItem(SHOWN_INSTALL_FLAG); closePopups(); }); // Delegated listener fallback para botones que no se pudieron enganchar document.addEventListener('click', function(ev){ var el = ev.target; // activar push (fallback): si hay un botón con id btn-activar-push en cualquier parte if (el && (el.id === 'btn-activar-push' || (el.closest && el.closest('#btn-activar-push')))) { ev.preventDefault(); showOneSignalPrompt(); } }, true); // CSS para que el botón siempre sea visible en el popup (function(){ var css = document.createElement('style'); css.textContent = '' + '.elementor-popup-modal[data-elementor-id="'+POPUP_PUSH_ACTIVATE+'"] #btn-activar-push{' + ' display:inline-flex !important; visibility:visible !important; opacity:1 !important;' + '}'; document.head.appendChild(css); })(); })();