PingClient Swing Application is a lightweight Java-based messaging client built with a clean architecture. This project was developed to demonstrate effective software design principles, including modularity, testability, and the use of the Model-View-Controller (MVC) pattern. The application allows users to:
- Log in or sign up.
- Create and manage message threads.
- Send and receive messages in real-time.
The project was built as part of the CSC207 curriculum at the University of Toronto to reinforce object-oriented programming concepts and design patterns.
- User Authentication:
- Login and signup functionality with form validation.
- Secure backend communication using REST APIs.
- Thread Management:
- View and manage a list of message threads.
- Create new threads with user-defined participants.
- Real-Time Messaging:
- Send and receive messages in a selected thread.
- Refresh functionality to view the latest messages.
- Clean Architecture:
- Separation of concerns with clearly defined layers.
- Testable and scalable code structure.
To set up and run the PingClient Swing Application, follow the steps below:
- Java Development Kit (JDK) version 11 or higher.
- Maven for dependency management.
- An active internet connection for fetching dependencies.
- Clone the repository:
git clone https://github.com/your-repo/PingClientSwing.git cd PingClientSwing - Build the project using Maven:
mvn clean install
- Run the application:
mvn exec:java -Dexec.mainClass="app.Main"
The application uses the following libraries:
- org.json for JSON parsing.
- OkHttp for REST API requests.
- JUnit 4 and 5 for testing.
- Guava for utility functions.
Once installed, run the main class (app.Main) to start the PingClient Swing Application.
- Login or Sign Up:
- Enter your credentials to log in or sign up.
- Navigate to the threads view upon successful login.
- Managing Threads:
- View existing threads.
- Create new threads by specifying a name and participants.
- Messaging:
- Select a thread to view messages.
- Send new messages and refresh the thread to view updates.
(Insert a screenshot of the application's main UI here.)
This project is licensed under the MIT License. See the LICENSE file for details.
We value your feedback to improve this project! Please reach out through:
- Issues tab on GitHub.
- Fill out our feedback form.
Contributions to this project are welcome! To contribute:
- Fork the repository.
- Create a new branch for your feature:
git checkout -b feature-name
- Commit your changes and push to your branch:
git push origin feature-name
- Submit a pull request with a detailed explanation of your changes.
- Ensure your code follows the style guidelines (
maven-checkstyle-pluginis enforced). - Provide adequate tests for new features or bug fixes.
- Respect the project's existing architecture and design principles.
- CSC207: Group 167
Enjoy using PingClient Swing Application! 🎉