Irfan's Project Portfolio Page
Project: CallMeMaybe
CallMeMaybe (CMM) is a desktop app centered for Telemarketers in aiding them in customer contact management. The in-built tracking functionality serves as a reminder to reach back on previously unreachable customers. Importing and exporting of existing customer database is also supported by CMM to facilitate team-based environments. The user interacts with it using a CLI, and it has a GUI created with JavaFX. This is written in Java, and has about 10 kLoC. The development of this software was used as a medium for students to apply Software Engineering principles taught during the Software Engineering Module CS2103T.
Given below are my contributions to the project.
- New Major Feature: Added Importing functionality
- What it does:
- Allows users to import contacts into CMM’s database quickly. CMM currently imports from Excel Files only
- Justification:
- Based on the user story, a telemarketer receives his/her daily call list in an Excel sheet. This means that quickly importing long list of contacts is crucial
- This function allows user to import multiple people at once, as compared to adding in contacts individually (previously the two options were to either learn json or to manually input all the data using the add function)
- Highlights:
- This enhancement required a deep understanding of CMM components, primarily the Storage component
- This enhancement required understanding in parser components, primarily
FileUtil
- This enhancement required good use of logging as there are multiple contacts being imported and error displayed on the feedback box would be too long for user to read/scroll through
- This enhancement involves modifications in
UI
,Logic
,Storage
,Model
andCommons
- Crucial for the feature to import only valid contacts from the CSV file
- The implementation was challenging as it required constant updating and tweaking as the team’s definition of a valid person to be imported constantly changed throughout the project
- Credits:
- The previous iteration CallMeMaybe (AddressBookLevel3) ‘s JSON storage architecture helped me structure
my Import feature. This taught me how to follow an existing architectural style while implementing a new
feature. It also helped me rethink the way I approach code abstractions.
- The previous iteration CallMeMaybe (AddressBookLevel3) ‘s JSON storage architecture helped me structure
my Import feature. This taught me how to follow an existing architectural style while implementing a new
feature. It also helped me rethink the way I approach code abstractions.
- What it does:
- New Major Feature: Added Exporting functionality
- What it does:
- Allows users to export contacts found in CMM’s database quickly. CMM currently export to Excel Files only
- Justification:
- Based on the user story, a telemarketer returns the daily call list in an Excel sheet to the manager. This means that there is a need to convert the JSON data used in CMM back to an Excel sheet
- This is allows seamless data conversion between Excel and CMM.
- The Export function also acts as a safety net should telemarketers wish to start a new database with imported contacts. CMM will immediately export the current database in an Excel file before wiping and introducing new contacts into the database.
- Highlights:
- This enhancement required understanding how importing works
- This enhancement required understanding of how
Person
details are handled within CMM - This enhancement required understanding of file writing components, primarily
FileUtil
- Credits:
- The previous iteration CallMeMaybe (AddressBookLevel3) ‘s JSON storage architecture helped me structure my Export feature. This taught me how to follow an existing architectural style while implementing a new feature. It also helped me rethink the way I approach code abstractions.
- What it does:
-
Code contributed: RepoSense link
- Project management:
- Managed releases
v1.1
-v1.4
(4 releases) on GitHub - Managed Github Milestones
- Managed Github Labels
- Update demo for v1.3
- Managed releases
- Enhancements to existing features:
- Updated the GUI resizing functionality to ensure that features can always be displayed
- Wrote additional tests for existing features such as CsvUtil, CsvAdaptedPerson, CsvAddressBook
- Documentation:
- Testing
- Testcases for Import export feature
- Community: