Una aplicación de chat en tiempo real desarrollada con Angular 12, Socket.IO y Angular Material. Permite comunicación instantánea entre usuarios con soporte para chats individuales y grupales.
- 🔐 Autenticación de usuarios - Sistema de registro y login seguro
- 💬 Chat en tiempo real - Mensajería instantánea con Socket.IO
- 👥 Chats grupales - Comunicación en grupos con múltiples usuarios
- 🔍 Búsqueda de mensajes - Encuentra mensajes específicos en el historial
- 📱 Diseño responsivo - Interfaz adaptable con Angular Material
- 🟢 Estado de conexión - Indicadores de usuarios en línea/desconectados
- ✍️ Indicador de escritura - Muestra cuando alguien está escribiendo
- 📄 Historial de mensajes - Carga paginada de mensajes anteriores
- 🎨 Interfaz moderna - Diseño limpio y profesional
-
Frontend:
- Angular 12.2.0
- Angular Material 12.2.13
- TypeScript 4.3.5
- RxJS 6.6.0
- Socket.IO Client 4.4.1
- SweetAlert2 11.4.0
-
Herramientas de desarrollo:
- Angular CLI 12.2.9
- Karma (Testing)
- Jasmine (Testing framework)
Antes de ejecutar la aplicación, asegúrate de tener instalado:
- Node.js (versión 14 o superior)
- npm (versión 6 o superior)
- Angular CLI (
npm install -g @angular/cli)
-
Clona el repositorio:
git clone <url-del-repositorio> cd Angular-chat
-
Instala las dependencias:
npm install
-
Configura el backend:
- Asegúrate de que el servidor backend esté ejecutándose en
http://localhost:8080 - Puedes modificar la URL en
src/environments/environment.tssi es necesario
- Asegúrate de que el servidor backend esté ejecutándose en
-
Ejecuta la aplicación:
npm start # o ng serve -
Abre tu navegador:
- Navega a
http://localhost:4200/
- Navega a
src/
├── app/
│ ├── components/ # Componentes reutilizables
│ │ ├── chat/ # Componente principal del chat
│ │ ├── sidebar/ # Barra lateral con contactos
│ │ └── user-name/ # Componente de nombre de usuario
│ ├── interfaces/ # Definiciones de tipos TypeScript
│ │ ├── auth-interfaces.ts
│ │ ├── contact-interface.ts
│ │ ├── message-interface.ts
│ │ └── group-interface.ts
│ ├── pages/ # Páginas principales
│ │ ├── chat/ # Página principal del chat
│ │ ├── login/ # Página de inicio de sesión
│ │ └── register/ # Página de registro
│ ├── services/ # Servicios de Angular
│ │ ├── auth.service.ts # Autenticación
│ │ ├── chat.service.ts # Gestión de mensajes
│ │ ├── socket.service.ts # Comunicación Socket.IO
│ │ └── users.service.ts # Gestión de usuarios
│ └── auth.guard.ts # Guardia de rutas
├── assets/ # Recursos estáticos
└── environments/ # Configuraciones de entorno
npm start- Inicia el servidor de desarrollonpm run build- Construye la aplicación para producciónnpm run watch- Construye en modo desarrollo con observación de cambiosnpm test- Ejecuta las pruebas unitariasng serve- Servidor de desarrollo de Angularng build- Construcción de la aplicaciónng test- Pruebas con Karma
// src/environments/environment.ts
export const environment = {
production: false,
apiURL: "http://localhost:8080"
};// src/environments/environment.prod.ts
export const environment = {
production: true,
apiURL: "https://tu-api-backend.com"
};- Registro de nuevos usuarios
- Inicio de sesión seguro
- Protección de rutas con guards
- Gestión de tokens JWT
- Envío y recepción instantánea de mensajes
- Soporte para chats individuales y grupales
- Indicadores de estado de conexión
- Notificaciones de escritura en tiempo real
- Historial completo de conversaciones
- Búsqueda de mensajes específicos
- Carga paginada para optimizar rendimiento
- Navegación por posición de mensajes
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
Si encuentras algún bug, por favor abre un issue describiendo:
- Pasos para reproducir el error
- Comportamiento esperado vs actual
- Screenshots si es aplicable
- Información del navegador y sistema operativo
Para soporte técnico o preguntas sobre el proyecto, puedes:
- Abrir un issue en GitHub
- Contactar al equipo de desarrollo
⭐ Si te gusta este proyecto, ¡no olvides darle una estrella!