SummUp is an Emotion-Aware Chat Companion app designed to enhance chat experiences by analyzing the sentiment of ongoing conversations and providing real-time feedback on the chat's mood. Using a combination of WebSocket communication, Kafka message streaming, and sentiment analysis, MoodPulse generates insights that help users understand the emotional tone of their chat interactions.
In SummUp, two users can chat with each other in real time using WebSocket communication managed by a Spring Boot backend. Each message is analyzed for sentiment by a Go-based microservice, which returns the current mood of the conversation. This sentiment feedback is displayed in the Flutter app, allowing users to get a visual representation of the chat's emotional state through emojis and suggestions to uplift the mood.
- Real-time chat system with WebSocket
- Sentiment analysis on live chat messages
- Kafka message streaming for efficient message processing
- Mood feedback displayed to users as emojis
- Suggestions for uplifting the chat based on sentiment analysis
The workflow of the MoodPulse app is as follows:
- Flutter App: Users communicate via a chat interface.
- Spring Boot Backend: Manages WebSocket connections and routes chat messages to Kafka.
- Kafka: Acts as a message broker, streaming chat messages for processing.
- Go Microservice: Consumes messages from Kafka, performs sentiment analysis, and returns mood feedback.
- Sentiment Analysis: Uses a language model (e.g., Gemini) to analyze messages.
- Mood Indicator: The Flutter app shows the mood of the conversation using emojis based on sentiment feedback.
- Frontend: Flutter
- Backend: Spring Boot, WebSocket
- Messaging Queue: Apache Kafka
- Sentiment Analysis: Go microservice with language model integration (e.g., Gemini)
- Database: [Your choice, if needed for chat storage]
- Java 11+
- Kafka
- Go (latest version)
- Flutter SDK
- Node.js (for testing WebSocket with JavaScript)
-
Clone the Repository
git clone https://github.com/your-username/MoodPulse.git cd MoodPulse
-
Install and Run Kafka Make sure Kafka is installed and running. Update application.properties to point to your Kafka instance.
-
Start the Spring Boot Backend
cd springboot_backend
./mvnw spring-boot:run
Run the Go Microservice
- Start the Go Microservice
cd go_microservice
go run main.go
- Start the Flutter App
cd flutter_app
flutter run
You can use the JavaScript WebSocket client (websocket.js) for testing WebSocket endpoints.
Start Chatting: Open the app, connect with another user, and start chatting. View Mood Feedback: The app will display an emoji based on the sentiment analysis results. Suggestions to Improve Mood: If the sentiment is negative, MoodPulse provides suggestions for uplifting the chat's mood.
We welcome contributions to MoodPulse! If you'd like to contribute, please follow these steps:
Fork the repository. Create a new branch. Make your changes. Submit a pull request.
This project is licensed under the MIT License.