Una aplicación móvil moderna construida con React Native, Expo, NativeWind (Tailwind CSS), y Supabase, que demuestra integración en tiempo real con bases de datos y webhooks de Discord.
- Dashboard en Tiempo Real: Monitoreo de datos con actualizaciones automáticas
- Integración Supabase: Base de datos PostgreSQL con subscripciones en tiempo real
- Webhooks Discord: Integración con BotGhost para control de bots
- UI Moderna: Interfaz elegante con NativeWind (Tailwind CSS)
- Animaciones Fluidas: Transiciones y efectos visuales suaves
- TypeScript: Tipado fuerte para mayor seguridad y mantenibilidad
- Node.js (v14 o superior)
- npm o yarn
- Cuenta de Supabase (gratuita)
- Cuenta de BotGhost (opcional, para webhooks)
- Clonar el repositorio
git clone https://github.com/siramong/reactify-expo.git
cd reactify-expo- Instalar dependencias
npm install- Configurar variables de entorno
Copia el archivo .env.example a .env y completa las variables:
# Supabase Configuration
EXPO_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
EXPO_PUBLIC_SUPABASE_KEY=your_supabase_service_role_key_or_anon_key
# BotGhost Discord Webhook Configuration (Opcional)
EXPO_PUBLIC_BOTGHOST_BOT_ID=your_botghost_bot_id
EXPO_PUBLIC_BOTGHOST_API_KEY=your_botghost_api_key
EXPO_PUBLIC_BOTGHOST_EVENT_ID=your_default_webhook_event_id- Iniciar la aplicación
npm startnpm run androidnpm run iosnpm run web- Crea un proyecto en Supabase
- Crea una tabla
coinscon la siguiente estructura:
create table coins (
id uuid default uuid_generate_v4() primary key,
userId text not null,
username text not null,
amount integer not null default 0,
curso text not null,
created_at timestamp with time zone default timezone('utc'::text, now())
);- Copia la URL del proyecto y la API Key desde Settings > API
Para usar la funcionalidad de webhooks:
- Crea una cuenta en BotGhost
- Obtén tu Bot ID y API Key
- Configura eventos en BotGhost
- Añade las credenciales en
.env
En constants/config.ts:
export const WEBHOOK_EVENTS = {
DEFAULT: getEnvVar("EXPO_PUBLIC_BOTGHOST_EVENT_ID"),
USER_JOINED: "your_user_joined_event_id",
COIN_EARNED: "your_coin_earned_event_id",
};En components/webhooks/WebhookPanel.tsx:
const WEBHOOK_ACTIONS: WebhookAction[] = [
{
eventType: "USER_JOINED",
title: "Usuario Unido",
description: "Notifica que un usuario se unió",
icon: "person-add",
color: "#10B981",
withData: false,
},
];- React Native - Framework móvil multiplataforma
- Expo - Plataforma de desarrollo y deployment
- NativeWind - Tailwind CSS para React Native
- Supabase - Backend as a Service (PostgreSQL + Realtime)
- TypeScript - Lenguaje tipado
- React Navigation - Navegación en la app
reactify-expo/
├── app/ # Pantallas principales (file-based routing)
├── components/ # Componentes reutilizables
│ ├── coins/ # Componentes de monedas
│ ├── dashboard/ # Componentes del dashboard
│ ├── ui/ # Componentes UI base
│ └── webhooks/ # Componentes de webhooks
├── constants/ # Constantes y configuración
├── hooks/ # Custom React hooks
├── services/ # Servicios (Supabase, webhooks)
├── types/ # Definiciones de TypeScript
└── utils/ # Utilidades y helpers
- Diseño Responsivo: Adaptable a diferentes tamaños de pantalla
- Modo Oscuro: Tema oscuro por defecto con colores vibrantes
- Animaciones: Transiciones suaves con react-native-animatable
- Feedback Háptico: Respuesta táctil en interacciones
- Iconos: Ionicons de Expo Vector Icons
- Variables de entorno para credenciales sensibles
- Validación de tipos con TypeScript
- Manejo de errores robusto
- API Keys nunca expuestas en el código
npm start- Inicia Expo development servernpm run android- Ejecuta en Androidnpm run ios- Ejecuta en iOSnpm run web- Ejecuta en navegadornpm run lint- Ejecuta el linter
Las contribuciones son bienvenidas. Por favor:
- Fork el proyecto
- Crea tu Feature Branch (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push al Branch (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto es de código abierto y está disponible bajo la licencia MIT.
Para preguntas o sugerencias, abre un issue en el repositorio.
- Expo Team por la excelente plataforma
- Supabase por el increíble backend
- NativeWind por Tailwind en React Native
- Comunidad de React Native
Hecho con ❤️ usando React Native + Expo + Supabase