Sistema completo de gestión de árbitros, partidos y designaciones para asociaciones deportivas.
autoref/
├── backend/ # API .NET 8.0
│ ├── Controllers/ # Endpoints de la API
│ ├── Database/ # Modelos de Entity Framework
│ ├── Migrations/ # Migraciones de base de datos
│ ├── Services/ # Servicios (Email, etc.)
│ ├── Dockerfile # Dockerfile para deployment
│ ├── apply-migrations.ps1 # Script para aplicar migraciones
│ ├── env.example # Variables de entorno de ejemplo
│ └── DEPLOYMENT_GUIDE.md # Guía de deployment del backend
│
├── webapp/ # Frontend Next.js + React + TypeScript
│ ├── src/
│ │ ├── app/
│ │ │ ├── components/ # Componentes de React
│ │ │ ├── hooks/ # Custom hooks
│ │ │ ├── services/ # Servicios de API (Axios)
│ │ │ ├── theme/ # Tema de Material-UI
│ │ │ ├── types/ # Interfaces de TypeScript
│ │ │ └── utils/ # Utilidades
│ │ ├── config.ts # Configuración de API URL
│ │ └── tests/ # Tests de integración
│ ├── Dockerfile # Dockerfile para deployment
│ ├── env.example # Variables de entorno de ejemplo
│ └── DEPLOYMENT_GUIDE.md # Guía de deployment del frontend
│
└── README.md # Este archivo
- .NET 8.0 SDK
- Node.js 18+
- Base de datos SQL Server (Railway, Azure, etc.)
- Cuenta de Cloudinary (para almacenamiento de imágenes)
- Google Maps API Key
# Navegar al directorio del backend
cd backend
# Copiar archivo de ejemplo de variables de entorno
Copy-Item env.example .env
# Editar .env con tus credenciales
# - DB_PASSWORD: Password de Railway
# - JWT_KEY: Clave secreta para JWT
# - Cloudinary credentials
# - Google Maps API Key
# Restaurar dependencias
dotnet restore
# Aplicar migraciones (ver backend/DEPLOYMENT_GUIDE.md)
./apply-migrations.ps1
# Ejecutar
dotnet runBackend disponible en: http://localhost:10000
Swagger UI: http://localhost:10000
# Navegar al directorio del frontend
cd webapp
# Copiar archivo de ejemplo de variables de entorno
cp env.example .env.local
# Editar .env.local
# NEXT_PUBLIC_API_URL=http://localhost:10000/api
# Instalar dependencias
npm install
# Ejecutar en desarrollo
npm run devFrontend disponible en: http://localhost:3000
- Crear servicio en Railway
- Configurar variables de entorno (ver
backend/env.example) - Deploy automático desde GitHub
📘 Guía completa: backend/DEPLOYMENT_GUIDE.md
- Conectar repositorio en Vercel
- Configurar root directory:
webapp - Agregar variables de entorno:
NEXT_PUBLIC_API_URL=https://tu-backend.railway.app/apiNEXT_PUBLIC_GOOGLE_MAPS_API_KEY=tu_key
- Deploy automático
📘 Guía completa: webapp/DEPLOYMENT_GUIDE.md
- .NET 8.0
- ASP.NET Core Web API
- Entity Framework Core
- SQL Server (Railway)
- Cloudinary (almacenamiento de imágenes)
- MailKit (envío de emails)
- JWT Authentication
- Next.js 14
- React 18
- TypeScript
- Material-UI (MUI)
- Axios
- Google Maps API
- React Testing Library + Jest
DB_PASSWORD= # ⚠️ NUNCA commitear
JWT_KEY= # ⚠️ Cambiar en producción
CLOUDINARY_API_SECRET= # ⚠️ Mantener secreto
SMTP_PASSWORD= # ⚠️ Mantener secretoNEXT_PUBLIC_API_URL= # URL del backend desplegado
NEXT_PUBLIC_GOOGLE_MAPS_API_KEY= # Restringir por dominiocd webapp
# Ejecutar todos los tests
npm test
# Ejecutar con coverage
npm test -- --coverage
# Ejecutar test específico
npm test -- CU1_IniciarSesion.test.tsxServer: centerbeam.proxy.rlwy.net
Port: 44269
Database: railway
User: root
Password: [Configurar en variables de entorno]
Usuarios- Árbitros y administradoresPartidos- Partidos a asignarDisponibilidades- Disponibilidad de árbitrosCategorias- Categorías de partidosEquipos- Equipos participantesClubs- Clubes (para evitar conflictos de interés)Polideportivos- Ubicaciones de partidosNotificaciones- Sistema de notificaciones
cd backend
./apply-migrations.ps1- ✅ Registro y autenticación con JWT
- ✅ Perfiles de árbitros con niveles y licencias
- ✅ Foto de perfil (Cloudinary)
- ✅ Geolocalización automática (Google Maps)
- ✅ Vinculación a clubs
- ✅ CRUD completo de partidos
- ✅ Importación desde Excel
- ✅ Filtros y búsqueda avanzada
- ✅ Visualización en mapa (Google Maps)
- ✅ Asignación manual de árbitros
- ✅ Asignación automática con algoritmo optimizado (A + Beam Search)*
- ✅ Criterios: disponibilidad, distancia, nivel, club vinculado
- ✅ Publicación y notificaciones
- ✅ Confirmación de partidos
- ✅ Calendario visual
- ✅ Gestión de franjas horarias
- ✅ Vista mensual
- ✅ Sistema de notificaciones en tiempo real
- ✅ Notificaciones por email
- ✅ Tema personalizado con Material-UI
- ✅ Diseño responsive (móvil, tablet, desktop)
- ✅ Animaciones y transiciones suaves
- ✅ Glassmorphism y gradientes modernos
- ✅ Dark mode ready (preparado para implementar)
name: Deploy Backend
on:
push:
branches: [main]
paths: ['backend/**']
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Deploy to Railway
run: railway upname: Deploy Frontend
on:
push:
branches: [main]
paths: ['webapp/**']
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Deploy to Vercel
uses: amondnet/vercel-action@v20- ✅ Paginación en endpoints
- ✅ Índices de base de datos
- ✅ Caching en algoritmo de designaciones
- ✅ Beam Search para optimización
- ✅ Code splitting automático (Next.js)
- ✅ Lazy loading de componentes
- ✅ Memoización con
useCallbackyuseMemo - ✅ Optimización de re-renders con
React.memo - ✅ Custom hooks reutilizables
- Verifica que el backend esté corriendo
- Verifica
NEXT_PUBLIC_API_URLen el frontend - Revisa CORS en el backend
- Verifica credenciales de Railway
- Asegúrate de que
TrustServerCertificate=Trueesté en el connection string - Ejecuta
dotnet ef database updatemanualmente
- Verifica que la API Key esté configurada
- Habilita "Maps JavaScript API" y "Geocoding API" en Google Cloud Console
- Configura restricciones de dominio
- Documentación Backend:
backend/DEPLOYMENT_GUIDE.md - Documentación Frontend:
webapp/DEPLOYMENT_GUIDE.md - Logs Railway: Dashboard → Service → Logs
- Logs Vercel: Dashboard → Project → Deployments → Logs
- Implementar dark mode completo
- Sistema de reportes y estadísticas
- Exportación de designaciones a PDF
- App móvil (React Native)
- Integración con calendarios (Google Calendar, iCal)
- Sistema de chat entre árbitros y admin
- Historial de cambios (audit log)
- Fork el proyecto
- Crea una branch para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la branch (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto es privado. Todos los derechos reservados.
┌─────────────────┐
│ Frontend │
│ (Next.js) │
│ Port: 3000 │
└────────┬────────┘
│ HTTP/HTTPS
▼
┌─────────────────┐
│ Backend API │
│ (.NET 8.0) │
│ Port: 10000 │
└────────┬────────┘
│
├─────────────────────┐
│ │
▼ ▼
┌─────────────────┐ ┌──────────────────┐
│ SQL Server │ │ Cloudinary │
│ (Railway) │ │ (Imágenes) │
│ Port: 44269 │ │ │
└─────────────────┘ └──────────────────┘
- Frontend: https://autoref.vercel.app
- Backend: https://autoref-backend.railway.app
- Swagger: https://autoref-backend.railway.app
- Base de Datos: centerbeam.proxy.rlwy.net:44269
¡Sistema completo listo para producción! ⚽🏆