A Clean Architecture Messaging Application
CSC207 • Group 5101-05 • Fall 2025
- Overview
- Team Members
- User Stories
- Use Cases
- Domain Entities
- External APIs
- Architecture
- Testing
- Project Status
- How to Run
GoChat is a messaging application designed using the principles of Clean Architecture. It allows users to:
- Create and manage accounts
- Search for other users
- Start conversations and send messages
- Delete, reply to, react to, and report messages
- View and search chat history
- Create and manage group chats
- Change chat background themes
- Translate messages in different languages
The project emphasizes modular design, separated layers, and testability.
- Tina Ly
- Qianlang Yang
- Hayato Kukihara
- Miles Zhu
- Yuan Lin
- Xurui Wang
Users can register, log in, update credentials, and log out securely.
Users can search for specific users and initiate chats.
Users can send, receive, delete, reply to, react to, and report messages.
Users can view and search through their past messages.
Users can change background themes to personalize the chat experience.
Users can create group chats, add/remove participants, and rename conversations.
Users can translate messages written in unfamiliar languages.
The system supports the following use cases as outlined in the project blueprint:
- User Registration
- User Login
- User Logout
- Change Username
- Change Password
- Search for User and Start Chat
- Send Message
- Receive Message
- Reply to Message
- Delete Message
- React to Message
- Report Message
- View Chat History
- Search Chat History
- Change Chat Background
- Create Group Chat
- Add Users to Group Chat
- Remove Users from Group Chat
- Rename Group Chat
- Translate Messages
userID: int
username: String
email: String
password: String
messageID: int
repliedToID: int
senderID: int
receiverID: int
content: String
timestamp: DateTime
status: String
reaction: String
chatID: int
participants: List<User>
messages: HashMap<int, Message>
background: java.awt.Color
Used for translating messages between languages. Supports auto-detection and multiple target languages.
Potential use cases include:
- Authentication
- Real-time messaging
- Cloud data storage
Used for testing API calls and prototypes during development.
The project follows the Clean Architecture model with the following structure:
src/
entity/ # Core business objects
use_case/ # Application logic
interface_adapters/ # Presenters, controllers, view models
view/ # UI components
data/ # Data storage adapters
test/
pom.xml
README.md
This structure enforces a separation of concerns between layers and improves testability.
- All interactors require unit tests.
- Use Case and Entity layers must reach 100% coverage by the final deadline.
- JUnit is used for automated testing.
- Mocking is used to isolate business logic where appropriate.
| Feature | Status |
|---|---|
| User Authentication | Complete |
| Messaging Pipeline | In Progress |
| Chat History / Search | In Progress |
| Group Chat Features | In Progress |
| Background Customization | Implemented |
| Translation | Implemented |
| UI Layer | Early development |
Basic steps:
- Clone the repository:
git clone https://github.com/7tina/team-project.git
- Open in IntelliJ
- Load Maven project
- Run main application entry point