WireChat is a messaging app inspired by Discord and Telegram. The app features two-factor authentication using QR codes for enhanced security, options for message preservation in the database, and a comprehensive set of functionalities including:
- One-to-one chat with friends
- Group chat (open to anyone, not just friends)
- Approval/Decline of requests for one-to-one or public chats
- Group roles management
- Password change with email verification
- Profile picture update
- Block/Unblock friends or group members
- Active groups panel showing current activity (active status persists for 30 seconds after last message)
The chat uses SQL Server DB with Entity Framework for data management. The repository design pattern is implemented to encapsulate SQL queries into specific repository classes, ensuring code reuse and maintainability.
SignalR API is utilized for real-time messaging, supporting WebSockets, Server-Sent Events, and Long Polling. SignalR ensures seamless connection fallback and handles disconnected clients effectively.
AutoMapper API is employed for mapping between model objects and DTOs, minimizing code duplication and simplifying complex mappings where necessary. ViewModel convention is used for read-only views of model data.
The project was motivated by a desire to understand messaging applications and technologies such as WebSocket in practice. It serves as a practical application to explore and implement these protocols while enhancing skills in MVC development.