Sistema de autenticación y dashboard simulado para gestión de entregas
NexLogix Mobile es una aplicación frontend diseñada para conductores de delivery, que proporciona una interfaz intuitiva para la gestión de entregas, rutas y vehículos asignados. Este proyecto implementa un mockup funcional con autenticación simulada y un dashboard completo.
- Login funcional con validación de credenciales
- Autenticación simulada sin necesidad de backend
- Manejo de errores y mensajes informativos
- Redirección automática tras login exitoso
- Modal de solicitud de desbloqueo para usuarios bloqueados
- Panel principal con 4 secciones funcionales:
- Rutas Asignadas
- Vehículos Asignados
- Mapa de Ruta
- Estadísticas de Rendimiento
- Menú desplegable con opciones completas:
- 📊 Reportes (modal informativo)
- ℹ️ Acerca de (información del sistema)
- 📖 Manual de Usuario (guía completa)
- 🚪 Cerrar Sesión (redirección a login)
- Interfaz moderna con gradientes y animaciones
- Diseño responsivo adaptable a diferentes dispositivos
- Tema oscuro consistente en toda la aplicación
- Componentes reutilizables y bien estructurados
- React 19.1.1 - Biblioteca principal de UI
- Vite 7.1.2 - Herramienta de build y desarrollo
- React Router DOM - Navegación entre páginas
- React Icons - Iconografía del sistema
- CSS3 - Estilos avanzados con gradientes y animaciones
- ESLint - Linting y calidad de código
src/
├── Models/ # Modelos de datos
│ └── Conductor.js # Clase Conductor con credenciales
├── Services/ # Servicios de la aplicación
│ └── AuthService.js # Servicio de autenticación simulada
├── Routes/ # Configuración de rutas
│ └── AppRouter.jsx # Router principal
├── Views/
│ ├── components/ # Componentes reutilizables
│ │ └── MenuDesplegable.jsx
│ ├── css/ # Estilos CSS
│ │ ├── Login.css
│ │ ├── Dashboard.css
│ │ ├── MenuDesplegable.css
│ │ ├── ModalGenerico.css
│ │ └── ReporteUsuarioBloqueado.css
│ ├── modals/ # Componentes modales
│ │ ├── ModalGenerico.jsx
│ │ └── ReporteUsuarioBloqueado.jsx
│ └── pages/ # Páginas principales
│ ├── Login/
│ │ └── Login.jsx
│ └── Dashboard/
│ └── Dashboard.jsx
└── assets/ # Recursos estáticos
├── logo.png
└── logo.ico
Para probar el sistema de autenticación, utiliza las siguientes credenciales:
- Email:
[email protected] - Contraseña:
password123
- Node.js 16+
- npm o yarn
- Clonar el repositorio
git clone [URL_DEL_REPOSITORIO]
cd nl-mobile- Instalar dependencias
npm install- Ejecutar en modo desarrollo
npm run dev- Abrir en el navegador
http://localhost:5173
npm run dev- Modo desarrollonpm run build- Build de producciónnpm run preview- Vista previa del buildnpm run lint- Análisis de código
Para conectar esta aplicación con un backend real, se requieren las siguientes modificaciones:
Modificaciones requeridas:
// Reemplazar la autenticación simulada por llamadas reales a la API
const AuthService = {
login: async (email, password) => {
try {
const response = await fetch('/api/auth/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ email, password }),
});
const data = await response.json();
if (response.ok) {
// Guardar token JWT
localStorage.setItem('authToken', data.token);
return { success: true, user: data.user };
} else {
throw new Error(data.message);
}
} catch (error) {
throw new Error('Error de conexión con el servidor');
}
}
};Endpoints de backend necesarios:
POST /api/auth/login- Autenticación de conductorPOST /api/auth/logout- Cerrar sesiónPOST /api/auth/reset-password- Solicitud de desbloqueo
Modificaciones requeridas:
// Reemplazar la clase estática por un servicio de API
const ConductorService = {
getCurrentUser: async () => {
const token = localStorage.getItem('authToken');
const response = await fetch('/api/conductor/profile', {
headers: {
'Authorization': `Bearer ${token}`
}
});
return response.json();
}
};Endpoints de backend necesarios:
GET /api/conductor/profile- Perfil del conductorPUT /api/conductor/profile- Actualizar perfil
Modificaciones requeridas:
// Agregar llamadas a APIs para datos reales
useEffect(() => {
// Cargar rutas asignadas
fetch('/api/conductor/routes')
.then(res => res.json())
.then(setRutas);
// Cargar vehículos asignados
fetch('/api/conductor/vehicles')
.then(res => res.json())
.then(setVehiculos);
// Cargar estadísticas
fetch('/api/conductor/stats')
.then(res => res.json())
.then(setEstadisticas);
}, []);Endpoints de backend necesarios:
GET /api/conductor/routes- Rutas asignadasGET /api/conductor/vehicles- Vehículos asignadosGET /api/conductor/stats- Estadísticas del conductorGET /api/conductor/reports- Reportes disponibles
Implementar interceptor para autenticación:
// src/utils/apiClient.js
const apiClient = {
get: (url) => fetch(url, {
headers: {
'Authorization': `Bearer ${localStorage.getItem('authToken')}`
}
}),
// ... otros métodos HTTP
};Crear archivo .env:
VITE_API_BASE_URL=http://localhost:3000/api
VITE_WEBSOCKET_URL=ws://localhost:3000conductores- Información de conductoresrutas- Rutas de entregavehiculos- Información de vehículosentregas- Registro de entregasreportes- Reportes generados
- Integración con APIs REST reales
- Notificaciones push en tiempo real
- Geolocalización y mapas interactivos
- Carga de imágenes de entrega
- Chat con soporte técnico
- Modo offline con sincronización
- Fork del proyecto
- Crear una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit de los cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abrir un Pull Request
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
- Frontend Developer - Implementación de UI/UX
- Backend Developer - APIs y servicios (pendiente)
- DevOps - Despliegue y CI/CD (pendiente)
Desarrollado con ❤️ para NexLogix
© 2025 NexLogix. Todos los derechos reservados.
