SYNK is a comprehensive desktop productivity application designed to help users manage tasks, build positive habits, and stay organized. Built with a focus on Clean Architecture and robust software design principles, SYNK integrates seamlessly with Google Calendar to keep your schedule in sync.
- Smart Task Management: Create, modify, and organize daily tasks with ease.
- Habit Construction: Track and build long-term habits with dedicated tools.
- Google Calendar Sync: Two-way synchronization with your Google Calendar to ensure you never miss a deadline.
- Gamification: Stay motivated with a built-in Leaderboard and User Statistics to track your progress.
- Secure Authentication: Fully functional User Login and Signup system.
- Data Persistence: Reliable local data storage and cloud integration.
- Language: Java 17
- GUI Framework: Java Swing
- Build Tool: Maven
- APIs: Google Calendar API, Google OAuth Client
- Testing: JUnit 5
- Libraries: org.json, JDatePicker, OkHttp
This project serves as a practical implementation of Clean Architecture (Robert C. Martin), ensuring separation of concerns and maintainability.
- Entities: Core business logic and rules, independent of frameworks.
- Use Cases: Application-specific business rules (Interactors).
- Interface Adapters: Controllers, Presenters, and ViewModels that convert data between the use cases and the view.
- Frameworks & Drivers: The outer layer containing the UI (Swing), Database Access, and External APIs.
- Builder Pattern: For complex object construction (e.g.,
AppBuilder). - Strategy Pattern: For interchangeable algorithms (sorting, filtering).
- Dependency Injection: To decouple components and facilitate testing.
- Observer Pattern: For reactive UI updates.
Configure Credentials
* Obtain OAuth 2.0 Client Credentials (credentials.json) from the Google Cloud Console.
* Place the file in src/main/resources/credentials.json.
* Note: Ensure this file is listed in your .gitignore to prevent leaking sensitive keys.
- Advanced Java Development: Utilization of modern Java features and strong OOP principles.
- Architectural Design: Strict adherence to Clean Architecture and SOLID principles for scalable software.
- API Integration: Implementation of OAuth 2.0 flows and RESTful integration with Google Services.
- Full-Cycle Development: From requirements and design patterns to implementation, testing, and CI/CD configuration.
- GUI Programming: Creating responsive and interactive desktop applications using Swing.
- Test-Driven Development: Writing unit tests with JUnit/TestNG to ensure code reliability.
This project was developed as part of the collaborative software design curriculum (CSC207 at UofT).





