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