Skip to content

mens-git/MENS-App

Repository files navigation

MENS App 💪

Aplicación móvil de entrenamiento y disciplina construida con React Native y Expo.

📋 Descripción

MENS es una aplicación de fitness que permite a los usuarios:

  • Crear y gestionar rutinas de entrenamiento personalizadas
  • Registrar sesiones de entrenamiento con seguimiento de series, peso y repeticiones
  • Ver métricas de progreso y estadísticas
  • Sistema de disciplina con racha de entrenamiento
  • Soporte multiidioma (Español/Inglés)
  • Perfil de usuario con logros y progreso

🚀 Configuración Inicial

Prerrequisitos

Asegúrate de tener instalado:

  • Node.js (versión 18 o superior)
  • Git
  • Expo Go en tu dispositivo móvil (para testing)

Instalación

  1. Clona el repositorio

    git clone <URL_DEL_REPOSITORIO>
    cd mens-app
  2. Instala las dependencias

    npm install
  3. Configura Firebase

    Crea un archivo firebaseConfig.ts en src/config/ con tu configuración de Firebase:

    import { initializeApp } from 'firebase/app';
    import { getAuth } from 'firebase/auth';
    import { getFirestore } from 'firebase/firestore';
    
    const firebaseConfig = {
      apiKey: "TU_API_KEY",
      authDomain: "TU_AUTH_DOMAIN",
      projectId: "TU_PROJECT_ID",
      storageBucket: "TU_STORAGE_BUCKET",
      messagingSenderId: "TU_MESSAGING_SENDER_ID",
      appId: "TU_APP_ID"
    };
    
    const app = initializeApp(firebaseConfig);
    export const auth = getAuth(app);
    export const db = getFirestore(app);

    ⚠️ IMPORTANTE: Solicita las credenciales de Firebase al administrador del proyecto. Este archivo NO debe subirse a Git.

  4. Inicia el servidor de desarrollo

    npm start
  5. Abre la app

    • Escanea el código QR con Expo Go (Android) o la cámara (iOS)
    • O presiona a para Android emulator / i para iOS simulator

📁 Estructura del Proyecto

mens-app/
├── app/                      # Rutas y pantallas (Expo Router)
│   ├── (auth)/              # Pantallas de autenticación
│   ├── (tabs)/              # Pantallas principales con tabs
│   ├── routines/            # Gestión de rutinas
│   └── _layout.tsx          # Layout principal
├── src/
│   ├── components/          # Componentes reutilizables
│   │   ├── common/         # Componentes genéricos
│   │   ├── specific/       # Componentes específicos
│   │   ├── profile/        # Componentes del perfil
│   │   └── workout/        # Componentes de entrenamiento
│   ├── config/             # Configuración (Firebase, etc.)
│   ├── hooks/              # Custom hooks
│   ├── locales/            # Traducciones (i18n)
│   ├── services/           # Servicios (Firebase, API)
│   ├── types/              # TypeScript types
│   └── utils/              # Utilidades
└── assets/                 # Imágenes, fuentes, etc.

🛠️ Tecnologías Principales

  • React Native - Framework móvil
  • Expo - Plataforma de desarrollo
  • TypeScript - Tipado estático
  • Firebase - Backend (Auth + Firestore)
  • Expo Router - Navegación basada en archivos
  • React Native Reanimated - Animaciones
  • i18next - Internacionalización

📱 Funcionalidades Principales

Autenticación

  • Login con email/password
  • Registro de nuevos usuarios
  • Recuperación de contraseña

Rutinas

  • Crear rutinas personalizadas
  • Editor manual de ejercicios
  • Asignar días de la semana
  • Marcar rutina como "Plan Actual"

Entrenamiento

  • Registrar sesiones de entrenamiento
  • Seguimiento de series, peso y repeticiones
  • Overlay de entrenamiento activo
  • Historial de entrenamientos

Perfil

  • Estadísticas de usuario
  • Sistema de logros
  • Métricas de progreso (racha, volumen, mejora semanal)
  • Configuración de idioma

🔥 Firebase Setup

Estructura de Firestore

users/
  {userId}/
    - email
    - displayName
    - createdAt
    - language
    
routines/
  {routineId}/
    - userId
    - name
    - days[]
    - isCurrentPlan
    - createdAt
    
workouts/
  {workoutId}/
    - userId
    - routineId
    - date
    - exercises[]
    - totalVolume

Reglas de Seguridad

Asegúrate de que las reglas de Firestore permitan:

  • Usuarios solo pueden leer/escribir sus propios datos
  • Autenticación requerida para todas las operaciones

🌐 Comandos Útiles

# Iniciar desarrollo
npm start

# Limpiar caché
npm start -- --clear

# Ejecutar en Android
npm run android

# Ejecutar en iOS
npm run ios

# Ejecutar linter
npm run lint

# Build de producción
npx expo build:android
npx expo build:ios

🤝 Colaboración

Workflow de Git

  1. Crea una rama para tu feature

    git checkout -b feature/nombre-feature
  2. Haz commits descriptivos

    git add .
    git commit -m "feat: descripción del cambio"
  3. Sube tu rama

    git push origin feature/nombre-feature
  4. Crea un Pull Request en GitHub para revisión

Convenciones de Commits

  • feat: - Nueva funcionalidad
  • fix: - Corrección de bugs
  • refactor: - Refactorización de código
  • style: - Cambios de estilo/formato
  • docs: - Documentación
  • test: - Tests

🐛 Troubleshooting

Error: "Firebase not configured"

  • Verifica que firebaseConfig.ts exista y tenga las credenciales correctas

Error: "Module not found"

  • Ejecuta npm install nuevamente
  • Limpia caché: npm start -- --clear

App no se actualiza

  • Presiona r en la terminal para recargar
  • Cierra y vuelve a abrir Expo Go

📞 Contacto

Para dudas o problemas, contacta al equipo de desarrollo.

📄 Licencia

Proyecto privado - Todos los derechos reservados

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published