[{"data":1,"prerenderedAt":496},["ShallowReactive",2],{"navigation_docs":3,"-referencia-app-mobile":132,"-referencia-app-mobile-surround":491},[4,24,56,80,113],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","\u002Fgetting-started","1.getting-started",[9,12,16,20],{"title":10,"path":6,"stem":11},"Primeros pasos","1.getting-started\u002Findex",{"title":13,"path":14,"stem":15},"Buscar servicios","\u002Fgetting-started\u002Fbuscar-servicios","1.getting-started\u002Fbuscar-servicios",{"title":17,"path":18,"stem":19},"Crear cuenta","\u002Fgetting-started\u002Fcrear-cuenta","1.getting-started\u002Fcrear-cuenta",{"title":21,"path":22,"stem":23},"Preguntas frecuentes","\u002Fgetting-started\u002Fpreguntas-frecuentes","1.getting-started\u002Fpreguntas-frecuentes",{"title":25,"path":26,"stem":27,"children":28},"Guias","\u002Fguias","2.guias",[29,32,36,40,44,48,52],{"title":30,"path":26,"stem":31},"Guías de uso","2.guias\u002Findex",{"title":33,"path":34,"stem":35},"Cuenta de empresa","\u002Fguias\u002Fcuenta-empresa","2.guias\u002Fcuenta-empresa",{"title":37,"path":38,"stem":39},"Favoritos","\u002Fguias\u002Ffavoritos","2.guias\u002Ffavoritos",{"title":41,"path":42,"stem":43},"Horarios","\u002Fguias\u002Fhorarios","2.guias\u002Fhorarios",{"title":45,"path":46,"stem":47},"Reviews y calificaciones","\u002Fguias\u002Freviews","2.guias\u002Freviews",{"title":49,"path":50,"stem":51},"Servicios","\u002Fguias\u002Fservicios","2.guias\u002Fservicios",{"title":53,"path":54,"stem":55},"Sucursales","\u002Fguias\u002Fsucursales","2.guias\u002Fsucursales",{"title":57,"path":58,"stem":59,"children":60},"Referencia","\u002Freferencia","3.referencia",[61,64,68,72,76],{"title":62,"path":58,"stem":63},"Referencia técnica","3.referencia\u002Findex",{"title":65,"path":66,"stem":67},"API del backend","\u002Freferencia\u002Fapi-backend","3.referencia\u002Fapi-backend",{"title":69,"path":70,"stem":71},"App mobile","\u002Freferencia\u002Fapp-mobile","3.referencia\u002Fapp-mobile",{"title":73,"path":74,"stem":75},"Arquitectura general","\u002Freferencia\u002Farquitectura","3.referencia\u002Farquitectura",{"title":77,"path":78,"stem":79},"Glosario","\u002Freferencia\u002Fglosario","3.referencia\u002Fglosario",{"title":81,"path":82,"stem":83,"children":84},"Changelog","\u002Fchangelog","4.changelog",[85,87,101],{"title":81,"path":82,"stem":86},"4.changelog\u002Findex",{"title":88,"path":89,"stem":90,"children":91},"Backend — Changelog","\u002Fchangelog\u002Fbackend","4.changelog\u002Fbackend\u002Findex",[92,93,97],{"title":88,"path":89,"stem":90},{"title":94,"path":95,"stem":96},"v0.0.1","\u002Fchangelog\u002Fbackend\u002Fv0.0.1","4.changelog\u002Fbackend\u002Fv0.0.1",{"title":98,"path":99,"stem":100},"v0.0.2","\u002Fchangelog\u002Fbackend\u002Fv0.0.2","4.changelog\u002Fbackend\u002Fv0.0.2",{"title":102,"path":103,"stem":104,"children":105},"Mobile — Changelog","\u002Fchangelog\u002Fmobile","4.changelog\u002Fmobile\u002Findex",[106,107,110],{"title":102,"path":103,"stem":104},{"title":94,"path":108,"stem":109},"\u002Fchangelog\u002Fmobile\u002Fv0.0.1","4.changelog\u002Fmobile\u002Fv0.0.1",{"title":98,"path":111,"stem":112},"\u002Fchangelog\u002Fmobile\u002Fv0.0.2","4.changelog\u002Fmobile\u002Fv0.0.2",{"title":114,"path":115,"stem":116,"children":117},"Empresa","\u002Fempresa","5.empresa",[118,120,124,128],{"title":114,"path":115,"stem":119},"5.empresa\u002Findex",{"title":121,"path":122,"stem":123},"Disclaimer","\u002Fempresa\u002Fdisclaimer","5.empresa\u002Fdisclaimer",{"title":125,"path":126,"stem":127},"Roadmap","\u002Fempresa\u002Froadmap","5.empresa\u002Froadmap",{"title":129,"path":130,"stem":131},"Sobre nosotros","\u002Fempresa\u002Fsobre-nosotros","5.empresa\u002Fsobre-nosotros",{"id":133,"title":69,"body":134,"description":484,"extension":485,"links":486,"meta":487,"navigation":488,"path":70,"seo":489,"stem":71,"__hash__":490},"docs\u002F3.referencia\u002Fapp-mobile.md",{"type":135,"value":136,"toc":471},"minimark",[137,141,158,163,279,283,294,298,303,314,318,324,341,345,351,355,362,366,458,461],[138,139,69],"h1",{"id":140},"app-mobile",[142,143,144,145,149,150,153,154,157],"p",{},"La aplicación móvil de ServiciosApp está disponible para ",[146,147,148],"strong",{},"Android"," e ",[146,151,152],{},"iOS"," y está construida con ",[146,155,156],{},"Expo + React Native",".",[159,160,162],"h2",{"id":161},"stack-tecnológico","Stack tecnológico",[164,165,166,179],"table",{},[167,168,169],"thead",{},[170,171,172,176],"tr",{},[173,174,175],"th",{},"Componente",[173,177,178],{},"Tecnología",[180,181,182,191,199,207,215,223,231,239,247,255,263,271],"tbody",{},[170,183,184,188],{},[185,186,187],"td",{},"Framework",[185,189,190],{},"Expo 54",[170,192,193,196],{},[185,194,195],{},"UI",[185,197,198],{},"React Native 0.81",[170,200,201,204],{},[185,202,203],{},"Lenguaje",[185,205,206],{},"TypeScript",[170,208,209,212],{},[185,210,211],{},"Estilos",[185,213,214],{},"NativeWind (Tailwind CSS)",[170,216,217,220],{},[185,218,219],{},"Navegación",[185,221,222],{},"Expo Router (React Navigation)",[170,224,225,228],{},[185,226,227],{},"Estado global",[185,229,230],{},"Zustand",[170,232,233,236],{},[185,234,235],{},"Validación",[185,237,238],{},"Zod",[170,240,241,244],{},[185,242,243],{},"HTTP",[185,245,246],{},"Axios",[170,248,249,252],{},[185,250,251],{},"Mapas",[185,253,254],{},"react-native-maps",[170,256,257,260],{},[185,258,259],{},"Gestos",[185,261,262],{},"react-native-gesture-handler",[170,264,265,268],{},[185,266,267],{},"Animaciones",[185,269,270],{},"react-native-reanimated",[170,272,273,276],{},[185,274,275],{},"Almacenamiento",[185,277,278],{},"AsyncStorage + SecureStore",[159,280,282],{"id":281},"estructura-de-directorios","Estructura de directorios",[284,285,290],"pre",{"className":286,"code":288,"language":289},[287],"language-text","src\u002F\n├── app\u002F              # Rutas y pantallas (Expo Router)\n│   ├── (tabs)\u002F       # Navegación con pestañas\n│   │   ├── index.tsx\n│   │   ├── explore.tsx\n│   │   ├── services.tsx\n│   │   ├── favorites.tsx\n│   │   ├── company.tsx\n│   │   └── user.tsx\n│   ├── login.tsx\n│   ├── register.tsx\n│   └── ...\n├── controllers\u002F      # Coordinadores de UI por pantalla\n├── components\u002F       # Componentes reutilizables\n├── services\u002F         # Lógica de negocio y HTTP\n├── schemas\u002F          # Esquemas de dominio y API\n├── mappers\u002F          # Transformaciones DTO ↔ dominio\n├── hooks\u002F            # Lógica de datos reutilizable\n├── stores\u002F           # Estado global (Zustand)\n├── helpers\u002F          # Utilidades\n└── config\u002F           # Configuración global\n","text",[291,292,288],"code",{"__ignoreMap":293},"",[159,295,297],{"id":296},"arquitectura-en-capas","Arquitectura en capas",[299,300,302],"h3",{"id":301},"capa-de-presentación-controllers-components","Capa de presentación (Controllers + Components)",[142,304,305,306,309,310,313],{},"Los ",[146,307,308],{},"controllers"," coordinan la UI de cada pantalla y se comunican con hooks y servicios. Los ",[146,311,312],{},"componentes"," son reutilizables y no contienen lógica de negocio.",[299,315,317],{"id":316},"capa-de-servicios","Capa de servicios",[142,319,305,320,323],{},[146,321,322],{},"servicios"," se encargan de:",[325,326,327,331,338],"ul",{},[328,329,330],"li",{},"Realizar peticiones HTTP al backend",[328,332,333,334,337],{},"Validar las respuestas con Zod (wrapper ",[291,335,336],{},"{ status, message, data }",")",[328,339,340],{},"Transformar los datos mediante mappers",[299,342,344],{"id":343},"capa-de-mapeo","Capa de mapeo",[142,346,305,347,350],{},[146,348,349],{},"mappers"," transforman los DTOs de la API en modelos de dominio y viceversa, asegurando que cada capa trabaje con sus propios tipos.",[299,352,354],{"id":353},"capa-de-dominio","Capa de dominio",[142,356,357,358,361],{},"Los esquemas de dominio (",[291,359,360],{},"src\u002Fschemas\u002Fdomain\u002F",") definen los tipos y validaciones que utiliza toda la aplicación.",[159,363,365],{"id":364},"pantallas-principales","Pantallas principales",[164,367,368,381],{},[167,369,370],{},[170,371,372,375,378],{},[173,373,374],{},"Pantalla",[173,376,377],{},"Ruta",[173,379,380],{},"Descripción",[180,382,383,396,409,421,433,445],{},[170,384,385,388,393],{},[185,386,387],{},"Inicio",[185,389,390],{},[291,391,392],{},"(tabs)\u002Findex",[185,394,395],{},"Pantalla principal con acceso rápido",[170,397,398,401,406],{},[185,399,400],{},"Explorar",[185,402,403],{},[291,404,405],{},"(tabs)\u002Fexplore",[185,407,408],{},"Búsqueda de servicios con filtros",[170,410,411,413,418],{},[185,412,49],{},[185,414,415],{},[291,416,417],{},"(tabs)\u002Fservices",[185,419,420],{},"Listado y detalle de servicios",[170,422,423,425,430],{},[185,424,37],{},[185,426,427],{},[291,428,429],{},"(tabs)\u002Ffavorites",[185,431,432],{},"Servicios guardados",[170,434,435,437,442],{},[185,436,114],{},[185,438,439],{},[291,440,441],{},"(tabs)\u002Fcompany",[185,443,444],{},"Gestión de perfil empresarial",[170,446,447,450,455],{},[185,448,449],{},"Usuario",[185,451,452],{},[291,453,454],{},"(tabs)\u002Fuser",[185,456,457],{},"Perfil de usuario y configuración",[459,460],"hr",{},[142,462,463,467,468],{},[464,465,466],"a",{"href":58},"← Volver a referencia"," · ",[464,469,470],{"href":78},"Siguiente: Glosario →",{"title":293,"searchDepth":472,"depth":472,"links":473},2,[474,475,476,483],{"id":161,"depth":472,"text":162},{"id":281,"depth":472,"text":282},{"id":296,"depth":472,"text":297,"children":477},[478,480,481,482],{"id":301,"depth":479,"text":302},3,{"id":316,"depth":479,"text":317},{"id":343,"depth":479,"text":344},{"id":353,"depth":479,"text":354},{"id":364,"depth":472,"text":365},"Arquitectura y estructura de la aplicación móvil de ServiciosApp","md",null,{},true,{"title":69,"description":484},"ou7BNkbpuJy1KeMMleYyIkbZpS9bnpUv6oq0pCvLRLE",[492,494],{"title":65,"path":66,"stem":67,"description":493,"children":-1},"Endpoints y autenticación de la API de ServiciosApp",{"title":73,"path":74,"stem":75,"description":495,"children":-1},"Visión general de la arquitectura de ServiciosApp",1783141866541]