Rayner's Project Portfolio Page

Project: TrackerGuru

TrackerGuru is a desktop address book application for property agents managing large client portfolios. It features a Command Line Interface (CLI) optimized for fast typists with a JavaFX GUI. Written in Java with ~10,000 LoC.

Given below are my contributions to the project.

  • New Feature: Tag Group Management System

    • What it does: Allows creation and management of tag groups (e.g., propertyType, priceRange) to organize tags in GROUP.VALUE format (e.g., propertyType.HDB).
    • Justification: Property agents need to categorize contacts across multiple dimensions. This provides structured organization preventing tag proliferation and maintaining consistency.
    • Highlights: Implemented two-tier architecture with Tag and TagGroup classes, flexible validation (GROUP names alphanumeric, VALUE supports .-_ for real-world data like price.1.5M-2M), safeguards preventing deletion of in-use groups, full JSON persistence, and command suite (tg, dtg, ltg).
  • Code contributed: RepoSense link

    • ~2,196 total lines: 594 functional code, 1,127 test code, 474 documentation
  • Project management:

    • Created and managed 31 pull requests with comprehensive descriptions
    • Coordinated tag group feature integration across Model, Logic, Storage layers
    • Managed v1.3-v1.4 milestone deliverables
  • Enhancements to existing features:

    • Refactored Tag class from simple wrapper to support grouped tags with backward compatibility
    • Enhanced AddCommand/EditCommand with tag group validation
    • Extended AddressBook/ModelManager with tag group registry and CRUD operations
    • Created JsonAdaptedTagGroup for persistence
    • Achieved >85% test coverage with comprehensive test suites
  • Documentation:

    • User Guide: Tag group commands documentation, validation rules with examples, troubleshooting section
    • Developer Guide: Complete implementation section with UML diagrams (class, sequence, activity), design rationale, regex pattern documentation, Model/Storage component updates
  • Community:

    • Reviewed teammates' PRs with detailed architectural feedback
    • Helped debug tag-related validation issues
    • Participated in team planning and feature discussions
  • Tools: Jackson (JSON), JUnit 5, TestFX, PlantUML, GitHub Actions CI/CD