CowChat is a real-time chat application built with Spring and Angular, designed to provide a modern, responsive, and secure messaging experience.
It combines websocket-based communication, JWT authentication, and RESTful APIs to create a fast, scalable, and user-friendly chat platform.
Users can register, authenticate through JWT, send real-time messages, and manage conversations dynamically, all within an interface optimized for desktop and mobile.
- Real-Time Messaging: WebSocket integration for instant communication
- User Authentication: JWT-based session handling with OAuth2 compatibility
- Responsive Design: Fully functional interface across desktop and mobile
- User Presence Tracking: Online/offline status updates for active users
- Persistent Storage: Messages and user data stored securely in PostgreSQL
- Persistent Images: Profile images are stored in AWS (S3 buckets)
- Role System: Permissions and access levels managed through Spring Security
- Modern UI: Angular frontend styled with Tailwind CSS for speed and aesthetics
- Java → Runtime environment
- Spring → Backend framework and dependency injection
- Spring WebSocket → Real-time bidirectional communication
- Spring Security → Authentication and authorization
- JJWT → JSON Web Token handling
- Spring Data JPA + PostgreSQL → ORM and data persistence
- Amazon S3 → Cloud storage for user-uploaded media (e.g., images, files)
- Docker → Containerized environment for backend and database
- AWS EC2 → Cloud server for deployment
- Lombok 1.18.32 → Boilerplate code reduction
- Maven → Build and dependency management
- Postman → API testing and documentation
- Angular → Frontend framework
- TypeScript → Strongly-typed JavaScript superset
- RxJS → Reactive event handling
- WebSocket Client → Real-time connection to the backend
- JWT authentication with refresh token rotation
- WebSocket integration for low-latency messaging
- User presence tracking (online/offline)
- Message persistence and delivery confirmation
- Private chats and future support for group chats
- Clean, responsive UI
- Reactive user list and message feed
- User-friendly interface for mobile and desktop
- RESTful API design following clean architecture
- Exception handling with
@ControllerAdvice - DTO conversion through manual mappers
- Comprehensive validation and error responses
- Optimized performance using reactive programming
Built to feel lightweight, fast and responsive across desktop and mobile devices.
|
|

