A modern, scalable messaging platform built with Java, Spring Boot, RabbitMQ, React, and Redux. Exchange messages instantly with a robust backend and sleek, responsive UI.
- Instant Messaging: Send and receive messages in real-time
- Persistent Storage: All conversations are securely stored
- Responsive Design: Optimized for both desktop and mobile devices
- Message History: Access your complete message history anytime
- Modern UI: Clean interface built with React and Tailwind CSS
- Cross-Platform: Works on desktop, tablet, and mobile devices
- Offline Support: Messages are queued when offline and sent when connection resumes
- Java with Spring Boot for robust API development
- Spring Web for RESTful API endpoints
- Spring Data for database integration
- Spring AMQP for RabbitMQ messaging
- MongoDB/MySQL for data persistence
- JUnit & Mockito for testing
- React for dynamic UI components
- Redux for centralized state management
- Tailwind CSS for modern, responsive styling
- Axios for API communication
- Jest & React Testing Library for testing
- RabbitMQ for real-time message queuing
- Docker for containerization
- GitHub Actions for CI/CD pipeline
- AWS/Azure/GCP for deployment (choose your platform)
┌────────────┐ ┌────────────┐ ┌────────────┐
│ │ │ │ │ │
│ React UI │◄───►│ Spring API │◄───►│ Database │
│ (Redux) │ │ │ │ │
└────────────┘ └─────┬──────┘ └────────────┘
│
┌──────▼──────┐
│ │
│ RabbitMQ │
│ │
└─────────────┘
- Java 21+
- Node.js and npm
- RabbitMQ
- MongoDB or MySQL
-
Clone the repository
git clone https://github.com/yourusername/real-time-messaging-app.git cd real-time-messaging-app/backend
-
Configure your database and RabbitMQ
# application.properties example spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest # For MongoDB spring.data.mongodb.uri=mongodb://localhost:27017/messagingapp # Or for MySQL spring.datasource.url=jdbc:mysql://localhost:3306/messagingapp spring.datasource.username=root spring.datasource.password=password
-
Build and run
# With Maven mvn clean install mvn spring-boot:run # Or with Gradle ./gradlew build ./gradlew bootRun
-
Verify the API The API will be available at
http://localhost:8080
-
Navigate to the frontend directory
cd ../frontend
-
Install dependencies
npm install
-
Configure API endpoint Create a
.env
file:REACT_APP_API_URL=http://localhost:8080
-
Start the development server
npm start
-
Access the app Open
http://localhost:3000
in your browser
Method | Endpoint | Description |
---|---|---|
GET | /api/messages |
Retrieve all messages |
GET | /api/messages/{id} |
Get a specific message |
POST | /api/messages |
Send a new message |
GET | /api/users |
Get all users |
GET | /api/users/{id} |
Get a specific user |
[Coming soon]
- User authentication with JWT
- Message read receipts
- File sharing capabilities
- User status indicators
- Message encryption
- Group messaging
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Abrahão Dev - LinkedIn - [email protected]