Plantilla starter para aplicaciones móviles multiplataforma construida con Expo, Apollo Client para gestión de datos GraphQL, y React Native Paper para componentes UI Material Design. Ideal para desarrollar apps iOS, Android y Web con una sola base de código.
- Características
- Tecnologías
- Requisitos Previos
- Instalación
- Uso
- Estructura del Proyecto
- Configuración GraphQL
- Personalización del Tema
- Comandos Disponibles
- Recursos Adicionales
- Licencia
- ⚡ Desarrollo Multiplataforma: Ejecuta tu aplicación en iOS, Android y Web desde un único código base
- 🔌 Integración GraphQL: Configuración lista para usar con Apollo Client 3.x
- 🎨 Material Design: Componentes UI modernos y accesibles con React Native Paper
- 📘 TypeScript: Tipado estático completo para mejor experiencia de desarrollo
- 🔧 Calidad de Código: ESLint y Prettier configurados con reglas modernas
- 🚀 Hot Reload: Recarga en caliente con Expo para iteración rápida
- 🎯 Hooks de Git: Husky integrado para validación automática de código antes de commits
| Tecnología | Versión | Descripción |
|---|---|---|
| Expo | ~42.0.1 | Framework para desarrollo React Native |
| React | 16.13.1 | Biblioteca para interfaces de usuario |
| React Native | SDK 42 | Framework para apps móviles nativas |
| Apollo Client | ^3.3.21 | Cliente GraphQL con caché inteligente |
| React Native Paper | ^4.9.2 | Componentes Material Design |
| GraphQL | ^15.5.1 | Lenguaje de consulta para APIs |
| TypeScript | ~4.0.0 | Superset tipado de JavaScript |
| ESLint | ^7.31.0 | Herramienta de linting |
| Prettier | 2.3.2 | Formateador de código |
| Husky | >=6 | Hooks de Git |
Antes de comenzar, asegúrate de tener instalado:
- Node.js (versión 14 o superior) - Descargar
- Yarn o npm - Gestor de paquetes
- Expo CLI -
npm install -g expo-clioyarn global add expo-cli - Expo Go (app móvil) - Disponible en iOS App Store y Google Play
- Clona el repositorio:
git clone https://github.com/tu-usuario/expo-apollo-paper.git
cd expo-apollo-paper- Instala las dependencias:
# Con Yarn (recomendado)
yarn install
# O con npm
npm install- Inicia el servidor de desarrollo:
yarn start
# o
npm start- Ejecuta en tu dispositivo:
- Escanea el código QR con Expo Go (iOS/Android)
- Presiona
ipara abrir en simulador iOS - Presiona
apara abrir en emulador Android - Presiona
wpara abrir en navegador web
El proyecto incluye una configuración básica de Apollo Client conectada a un endpoint GraphQL de ejemplo. Para comenzar a desarrollar:
Edita el archivo src/utils/graphql/client.ts:
export const client = new ApolloClient({
uri: 'TU_ENDPOINT_GRAPHQL_AQUI',
cache: new InMemoryCache(),
});El componente principal en App.tsx muestra un ejemplo de consulta:
client
.query({
query: gql`
query GetRates {
rates(currency: "USD") {
currency
}
}
`,
})
.then((result) => console.log(result));Para más ejemplos, consulta la documentación oficial de Apollo Client.
expo-apollo-paper/
├── src/
│ ├── assets/ # Imágenes, iconos y recursos estáticos
│ │ ├── adaptive-icon.png
│ │ ├── favicon.png
│ │ ├── icon.png
│ │ └── splash.png
│ └── utils/
│ ├── config.ts # Configuración de URLs y constantes
│ ├── theme.ts # Personalización del tema de Paper
│ └── graphql/
│ └── client.ts # Configuración del cliente Apollo
├── App.tsx # Componente principal de la aplicación
├── app.json # Configuración de Expo
├── package.json # Dependencias y scripts
├── tsconfig.json # Configuración de TypeScript
├── babel.config.js # Configuración de Babel
├── .eslintrc.js # Reglas de ESLint
├── .prettierrc # Configuración de Prettier
└── README.md # Documentación del proyecto
Este proyecto utiliza Apollo Client para gestionar consultas y mutaciones GraphQL. La configuración actual apunta a un endpoint público de demostración.
- Edita
src/utils/config.tspara definir tu backend:
export const BASE_URL = 'https://tu-dominio.com';
export const GRAPHQL_URL = `${BASE_URL}/graphql`;- Actualiza
src/utils/graphql/client.tspara usar la nueva URL:
import { GRAPHQL_URL } from '../config';
export const client = new ApolloClient({
uri: GRAPHQL_URL,
cache: new InMemoryCache(),
});Para incluir tokens de autenticación en las cabeceras:
export const client = new ApolloClient({
uri: GRAPHQL_URL,
cache: new InMemoryCache(),
headers: {
Authorization: `Bearer TU_TOKEN`,
},
});El tema de React Native Paper está configurado en src/utils/theme.ts e incluye colores personalizados:
- ✅
success- Verde (#0d741e) ⚠️ warning- Ámbar (#b97611)- ❌
danger- Rosa (#dd1c66) - ℹ️
info- Azul (#0d99c4)
Edita el archivo theme.ts para personalizar la paleta:
const success = '#tu-color-success';
const warning = '#tu-color-warning';
// ... etcConsulta la guía de tematización de React Native Paper para más opciones.
| Comando | Descripción |
|---|---|
yarn start |
Inicia el servidor de desarrollo de Expo |
yarn android |
Ejecuta en emulador/dispositivo Android |
yarn ios |
Ejecuta en simulador/dispositivo iOS |
yarn web |
Ejecuta en navegador web |
yarn lint |
Ejecuta ESLint y corrige errores automáticamente |
yarn eject |
Expulsa el proyecto de Expo Managed Workflow |
- Documentación de Expo
- Tutorial de Apollo Client con React
- Componentes de React Native Paper
- Guía de TypeScript para React Native
- GraphQL Learn
Las contribuciones son bienvenidas. Por favor:
- Haz fork del repositorio
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.
Hecho con ❤️ usando Expo, Apollo GraphQL y React Native Paper