Aplicación móvil/PWA desarrollada con React Native, Expo y Supabase, construida como proyecto de aprendizaje y práctica de desarrollo full-stack.
CodeNest es una aplicación creada en Expo Snack / Expo CLI que integra un frontend en React Native con un backend basado en Supabase (base de datos PostgreSQL, autenticación y APIs en tiempo real). El proyecto busca poner en práctica conceptos de arquitectura de software, diseño de bases de datos, consumo de APIs y despliegue de aplicaciones móviles y web (PWA).
- Características
- Stack tecnológico
- Requisitos previos
- Instalación
- Variables de entorno
- Ejecución del proyecto
- Estructura del proyecto
- Base de datos
- Despliegue
- Roadmap
- Contribuciones
- Licencia
- Interfaz construida con React Native y componentes reutilizables.
- Backend gestionado con Supabase (PostgreSQL + Auth + Storage/Realtime según se necesite).
- Soporte para ejecución como aplicación móvil (Expo Go / build nativo) y como PWA.
- Autenticación de usuarios mediante Supabase Auth.
- Consultas y mutaciones a base de datos mediante
@supabase/supabase-js.
| Capa | Tecnología |
|---|---|
| Frontend | React Native, Expo |
| Backend / BaaS | Supabase (PostgreSQL, Auth, Edge Functions) |
| Lenguaje | JavaScript |
| Control de versiones | Git / GitHub |
| Entorno de desarrollo | Visual Studio Code, Node.js, npm |
| Despliegue | Expo (EAS) / Vercel (para la versión web) |
Antes de instalar el proyecto asegúrate de tener:
- Node.js (v18 o superior recomendado)
- npm o yarn
- Expo CLI instalado globalmente (
npm install -g expo-cli) o uso víanpx expo - Una cuenta y proyecto creado en Supabase
- Git
# Clonar el repositorio
git clone https://github.com/<tu-usuario>/codenest.git
# Entrar a la carpeta del proyecto
cd codenest
# Instalar dependencias
npm installCrea un archivo .env en la raíz del proyecto con las credenciales de tu proyecto de Supabase:
EXPO_PUBLIC_SUPABASE_URL=https://<tu-proyecto>.supabase.co
EXPO_PUBLIC_SUPABASE_ANON_KEY=<tu-clave-anon-o-publishable>Importante: nunca subas el archivo
.enval repositorio. Verifica que esté incluido en tu.gitignore.
# Iniciar el servidor de desarrollo de Expo
npx expo startDesde la terminal podrás:
- Escanear el código QR con la app Expo Go para probar en un dispositivo físico.
- Presionar
apara abrir en un emulador de Android. - Presionar
ipara abrir en un simulador de iOS (requiere macOS). - Presionar
wpara abrir la versión web / PWA en el navegador.
codenest/
├── assets/ # Imágenes, íconos y recursos estáticos
├── components/ # Componentes reutilizables de React Native
├── screens/ # Pantallas / vistas de la aplicación
├── navigation/ # Configuración de navegación (React Navigation)
├── services/ # Lógica de conexión a Supabase y APIs externas
├── hooks/ # Custom hooks de React
├── utils/ # Funciones auxiliares
├── App.js # Punto de entrada de la aplicación
├── app.json # Configuración de Expo
├── package.json
└── .env # Variables de entorno (no versionado)
Ajusta esta estructura a la organización real de tu repositorio.
El backend utiliza Supabase como proveedor de base de datos PostgreSQL. Se recomienda documentar aquí:
- Tablas principales del esquema (
users,posts,plans, etc.). - Políticas de Row Level Security (RLS) activas.
- Funciones y Edge Functions desplegadas, si aplica.
- Relación con integraciones externas (por ejemplo, Stripe para pagos y webhooks).
Puedes generar el esquema actualizado ejecutando en el SQL Editor de Supabase:
select table_name, column_name, data_type
from information_schema.columns
where table_schema = 'public';- App móvil: compilación con EAS Build para generar binarios de Android/iOS.
- Versión web / PWA: despliegue en Vercel usando
npx expo export:webo la configuración de exportación web de Expo.
- Autenticación completa con Supabase Auth (correo, redes sociales).
- Integración de planes y pagos con Stripe.
- Soporte offline / sincronización de datos.
- Mejoras de UI/UX y modo oscuro.
- Pruebas automatizadas (unitarias e integración).
Las contribuciones son bienvenidas. Para colaborar:
- Haz un fork del repositorio.
- Crea una rama para tu funcionalidad (
git checkout -b feature/nueva-funcionalidad). - Realiza tus cambios y haz commit (
git commit -m 'Agrega nueva funcionalidad'). - Sube tu rama (
git push origin feature/nueva-funcionalidad). - Abre un Pull Request.
Este proyecto se distribuye bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.