diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 6c335fc3e6d..70550f45e74 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -196,10 +196,47 @@ The sequence diagram below closely describes the interaction between the various * Pros: Better performance, since this only requires searching through the person list once. * Cons: The order of person list will be lost, since `Name` of a `Person` may be edited. + +### Edit `doctor` or `patient` + +Edits a `doctor` or `patient` entry by indicating their `Index`. +This command is implemented through the `EditCommand` class which extends the `Command` class. + +* Step 1. User enters an `edit` command. +* Step 2. The `AddressBookParser` will call `parseCommand` on the user's input string and return an instance of `editCommandParser`. +* Step 3. The `parse` command in `editCommandParser` calls `ParserUtil` to create instances of objects for each of the fields. + * If there are any missing fields, a `CommandException` is thrown. + * If input arguments does not match contraints for the fields, a `IllegalArgumentException` is thrown. + * If the provided `index` is invalid, a `CommandException` is thrown. + +The activity diagram below demonstrates this error handling process in more detail. + + + +* Step 4. The `parse` command in `editCommandParser` return an instance of `editCommand`. +* Step 5. The `LogicManager` calls the `execute` method in `editCommand`. +* Step 6. The `execute` method in `editCommand` executes and creates a new edited person. +* Step 6. The `execute` method in `editCommand` calls the `setPerson` in model to update the details of the respective person. +* Step 7. The `execute` method in `editCommand` also iterates through the `ObservableList` and retrieves all appointments that have the person to be edited, and calls the `setDoctorNric` or `setPatientNric` methods to update all relevant appointments related to the patient or doctor. +* Step 8. Success message gets printed onto the results display to notify user. + +The sequence diagram below closely describes the interaction between the various components during the execution of the `EditCommand`. + + + + +Why is this implemented this way? +1. Making both `Doctor` and `Patient` class extend the `Person` class makes it easier to execute edit operations. +2. `Doctor` and `Patient` all exhibit similar qualities, and thus can inherit from the `Person` superclass. +3. Eliminates the need for separate edit commands for doctor and patient. +4. Since appointments are constructed with unique `Person` `Nric` fields, it does not make sense to have an appointment that does not have valid or outdated doctor or patient entries. +5. As such, the solution that is inbuilt to editing a `Person`, comes with the added functionality on the backend to augment all related `Appointment` entries as well. +6. This results in an updated `Appointments` panel, and saves the user from the hassle of needing to manually edit outdated `Appointment` entries one by one. + ### Delete `doctor` or `patient` Deletes a `doctor` or `patient` entry by indicating their `Index`. -This command is implemented through the `DeleteCommand` class which extend the `Command` class. +This command is implemented through the `DeleteCommand` class which extends the `Command` class. * Step 1. User enters an `delete` command. * Step 2. The `AddressBookParser` will call `parseCommand` on the user's input string and return an instance of `deleteCommandParser`. @@ -284,6 +321,44 @@ The sequence diagram below closely describes the interaction between the various * Furthermore, it might get confusing for the user if everything was dumped into the same list of them to sieve through. Perhaps the user was only concerned with looking up patients in which case the appointments would simple be added clutter. * The increased level of integration would also be problems for implementation and testing as existing functionality would have to be adapated exposing the system to more risks and potential for bugs. Eg: the classes would have to change from `Person` to `Entry` in a number of different places. + +### Edit `Appointment` +Edits an `Appointment` entry by indicating their `Index`. +This command is implemented through the `EditAppointmentCommand` class which extends the `Command` class. + +* Step 1. User enters an `editappt` command. +* Step 2. The `AddressBookParser` will call `parseCommand` on the user's input string and return an instance of `editAppointmentCommandParser`. +* Step 3. The `parse` command in `editAppointmentCommandParser` calls `ParserUtil` to create instances of objects for each of the fields. + * If there are any missing fields, a `CommandException` is thrown. + * If input arguments does not match contraints for the fields, a `IllegalArgumentException` is thrown. + * If the provided `index` is invalid, a `CommandException` is thrown. + +The activity diagram below demonstrates this error handling process in more detail. + + + +* Step 4. The `parse` command in `editAppointmentCommandParser` returns an instance of `editAppointmentCommand`. +* Step 5. The `LogicManager` calls the `execute` method in `editAppointmentCommand`. +* Step 6. The `execute` method in `editAppointmentCommand` executes and calls `setAppointment` in model to set an updated appointment into the system. +* Step 7. Success message gets printed onto the results display to notify user. + +The sequence diagram below closely describes the interaction between the various components during the execution of the `EditAppointmentCommand`. + + + +Why is this implemented this way? +1. The `Appointment` class has very similar functionalities to that of the `Person` class, in which both classes deal with edit operations. +2. Furthermore on the UI, the `Appointment` column runs parallel to the `Person` column, as such, the behaviours (UX) of operating on the `Person` panel should have a similar feel and experience when dealing with `Appointment` objects. +3. This parallelism is also reflected in the backend code, and hence is very similar to how editing a `Person` is implemented - this is mostly seen through the naming conventions of the classes related to `EditPerson`, such as `EditAppointment` +4. This results in a more familiar experience for both users and developers alike as there is familiarity and some level of consistency when dealing with `Person` and `Appointment` classes. + +Alternative implementation for consideration +1. Since both classes exhibit similarities in both code structure and behaviour, we might consider creating a generic class distinguished between `Person` and `Appointment` via enums to handle edits. +2. This will centralise the behaviours, and reduce the amount of code needed to perform the edit function. +3. A further extension is to do so with all other overlapping functionalities, such as `add` or `delete`, however we leave that possibility for future discussion and refinement. + + + ### Delete `Appointment` Deletes an `Appointment` entry by indicating their `Index`. This command is implemented through the `DeleteAppointmentCommand` class which extend the `Command` class. diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 18ab02bff8d..65f6eb37cd7 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -5,7 +5,7 @@ title: User Guide ## Welcome to MediCLI! [Welcome note] -MediCLI is a **desktop app for managing persons involved in a hospital, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). Targeted at fast typing hospital clerks, MediCLI allows them to manage doctors, patients and appointments faster than traditional GUI apps. +MediCLI is a **desktop app for managing persons involved in a hospital, optimised for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). Targeted at fast typing hospital clerks, MediCLI allows them to manage doctors, patients and appointments faster than traditional GUI apps. ## Who can benefit from MediCLI? [Target audience] @@ -76,14 +76,14 @@ the command-line interface (CLI).] **:information_source: Notes about the command format:**
-* Words in `UPPER_CASE` are the parameters to be supplied by the user.
- e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`. +* Words in `UPPER_CASE` are the parameters to be supplied by you.
+ e.g. in `addpatient i/NRIC n/NAME d/DOB p/PHONE`, `NAME` is a parameter which can be used as `n/John Doe`. * Items in square brackets are optional.
- e.g `edit INDEX [n/NAME] [p/PHONE]` can be used as `edit 1 n/John Doe` or as `edit 1 p/91234567`. + e.g `edit INDEX [i/NRIC] [n/NAME] [p/PHONE] [d/DOB]` can be used as `edit 1 n/John Doe` or as `edit 1 i/t1234567s`. * Parameters can be in any order.
- e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable. + e.g. if the command specifies `n/NAME p/PHONE`, `p/PHONE n/NAME` is also acceptable. * Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.
e.g. if the command specifies `help 123`, it will be interpreted as `help`. @@ -128,7 +128,7 @@ Examples: ![add_patient_result](images/addPatient.png) -### Adding a Doctor: `adddoctor` +### Adding a Doctor : `adddoctor` Adds a doctor into the MediCLI system. @@ -151,19 +151,19 @@ Examples: ![add_doctor_result](images/addDoctor.png) -### Adding an appointment: `addappt` +### Adding an appointment : `addappt` Adds an appointment to MediCLI. Appointments are between a doctor with the specified `DOCTOR_NRIC` and a patient with the `PATIENT_NRIC` on a specific date and time. -Note that while you cannot create a new appointment with the date/time in the past, appointments that were valid when created but are now past their date will be allowed to remain in the system. This is an intended feature to allow the hospital admins to track a patient/doctors past appointments. -Format: `addappt ad/DATE dn/DOCTOR_NRIC pn/PATIENT_NRIC` +Note that while you cannot create a new appointment with the date and time in the past, appointments that were valid when created but are now past their date and time will be allowed to remain in the system. This is an intended feature to allow the hospital admins to track a patient/doctors past appointments. +Format: `addappt ad/DATETIME dn/DOCTOR_NRIC pn/PATIENT_NRIC` Field Constraints: -- `DATE`: Input must be in the format `yyyy-MM-dd HH:MM`. Specified date must be >= current date and time. i.e. appointment cannot be scheduled in the past. -- `DOCTOR_NRIC`: Follows the correct Singapore NRIC format. Begin with one of S, T, G, F, or M, followed by 7 numerical digits, then ended by an alphabetical letter. This field is non-case-sensitive. -- `PATIENT_NRIC`: Follows the correct Singapore NRIC format. Begin with one of S, T, G, F, or M, followed by 7 numerical digits, then ended by an alphabetical letter. This field is non-case-sensitive. +- **DATETIME**: Input must be in the format `yyyy-MM-dd HH:MM`. Specified date and time must be later than the current date and time. i.e. appointment cannot be scheduled in the past. +- **DOCTOR_NRIC**: Follows the correct Singapore NRIC format. Begin with one of S, T, G, F, or M, followed by 7 numerical digits, then ended by an alphabetical letter. This field is non-case-sensitive. +- **PATIENT_NRIC**: Follows the correct Singapore NRIC format. Begin with one of S, T, G, F, or M, followed by 7 numerical digits, then ended by an alphabetical letter. This field is non-case-sensitive. Command Constraints: -- All of the above fields (`DATE`, `DOCTOR_NRIC`, `PATIENT_NRIC`) are compulsory and must be non-empty. +- All of the above fields (`DATETIME`, `DOCTOR_NRIC`, `PATIENT_NRIC`) are compulsory and must be non-empty. - A doctor with the specified `DOCTOR_NRIC` must already exist in the MediCLI System. - A patient with the specified `PATIENT_NRIC` must already exist in the MediCLI System. @@ -173,7 +173,7 @@ Examples: ![add_appointment_result](images/addAppointment.png) -### Editing a person: `edit` +### Editing a person : `edit` Edits an existing person in the MediCLI system. @@ -183,6 +183,7 @@ Format: `edit INDEX [i/NRIC] [n/NAME] [p/PHONE] [d/DOB]` * At least one of the optional fields must be provided. * Existing values will be updated to the input values. * Note that editing a patient or doctor and not changing any of the values of the parameters is allowed and is considered a valid edit by the system. +* Note that editing a patient or doctor will recursively update the relevant details of all appointments related to the patient or doctor. Field Constraints: * **NRIC** : Follows the correct Singapore NRIC format. Begin with one of S, T, G, F, or M, followed by 7 numerical digits, then ended by an alphabetical letter. This field is non-case-sensitive. @@ -199,24 +200,24 @@ Examples: ![add_appointment_result](images/editPerson.png) -### Editing an appointment: `editappt` -Edits an existing person in the MediCLI system. +### Editing an appointment : `editappt` +Edits an existing appointment in the MediCLI system. -Format: `editappt INDEX ad/DATE` +Format: `editappt INDEX ad/DATETIME` * Edits the appointment at the specified `INDEX`. The index refers to the index number shown in the displayed appointment list. The index **must be a positive integer** 1, 2, 3, …​ * Existing values will be updated to the input values. Field Constraints: -* **DATE** : Input must be in the format `yyyy-MM-dd HH:MM`. Specified date must be >= current date and time. i.e. appointment cannot be scheduled in the past. +* **DATETIME** : Input must be in the format `yyyy-MM-dd HH:MM`. Specified date and time must be later than the current date and time. i.e. appointment cannot be scheduled in the past. Examples: -* `editappt 1 ad/2024-04-09 11:00` Edits the appointment date of the first appointment in the appointment list to `2024-04-09 11:00` +* `editappt 1 ad/2025-04-09 11:00` Edits the appointment date and time of the first appointment in the appointment list to `2024-04-09 11:00` ![add_appointment_result](images/editAppointment.png) -### Querying persons by name: `patient` +### Querying persons by name : `patient` Finds `Patient`(s) whose details contain any of the given keywords. @@ -237,7 +238,7 @@ Examples: ![result for 'patient alex david'](images/findAlexDavidResultPatient.png) -### Querying persons by name: `doctor` +### Querying persons by name : `doctor` Finds `Doctors`(s) whose details contain any of the given keywords. @@ -249,7 +250,7 @@ Command Constraints: * The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans` * All person fields are searched and matched (Name, NRIC, Phone Number, DoB). * Both full words and substrings will be matched e.g. `Han` will match `Hans` -* Doctors matching at least one keyword will be returned (i.e. `OR` search). +* Doctors matching at least one keyword will be returned (i.e. logical 'or' search). e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang` Examples: @@ -258,7 +259,7 @@ Examples: ![result for 'doctor alex david'](images/findAlexDavidResultDoctor.png) -### Querying appointments by NRIC `apptforpatient` +### Querying appointments by NRIC : `apptforpatient` Format: `apptforpatient KEYWORD [MORE_KEYWORDS]` @@ -280,7 +281,7 @@ Example: ![result for 'apptforpatient S0123456A'](images/findAppointmentResultPatient.png) -### Querying appointments by NRIC `apptfordoctor` +### Querying appointments by NRIC : `apptfordoctor` Format: `apptfordoctor KEYWORD [MORE_KEYWORDS]` @@ -305,7 +306,7 @@ Example: ### Deleting a doctor or patient : `delete` -Deletes the specified doctor / patient from the mediCLI system. **Note that all associated appointments with this doctor / patient will also be recursively deleted.** Please exercise caution when using the delete command and removing a patient or a doctor from MediCLI, as this action cannot be undone. +Deletes the specified doctor / patient from the MediCLI system. **Note that all associated appointments with this doctor / patient will also be recursively deleted.** Please exercise caution when using the delete command and removing a patient or a doctor from MediCLI, as this action cannot be undone. * Deletes the doctor / patient at the specified `INDEX`. * The index refers to the index number shown in the displayed doctor and patient list. @@ -320,7 +321,7 @@ Examples: ### Deleting appointment : `deleteappt` -Deletes the specified appointment from the mediCLI system. +Deletes the specified appointment from the MediCLI system. Format: `deleteappt INDEX` @@ -387,11 +388,11 @@ Action | Format, Examples --------|------------------ **Add Patient** | `addpatient i/NRIC n/NAME d/DOB p/PHONE_NUMBER`
e.g., `addpatient i/S1234567A n/John Doe d/2003-01-30 p/98765432` **Add Doctor** | `adddoctor i/NRIC n/NAME d/DOB p/PHONE_NUMBER`
e.g., `adddoctor i/S1234567A n/John Doe d/2003-01-30 p/98765432` -**Add Appointment** | `addappt ad/DATE dn/DOCTOR_NRIC pn/PATIENT_NRIC`
e.g., `addappt ad/2024-08-11 23:50 dn/S1234567A pn/S1234567B` +**Add Appointment** | `addappt ad/DATETIME dn/DOCTOR_NRIC pn/PATIENT_NRIC`
e.g., `addappt ad/2024-08-11 23:50 dn/S1234567A pn/S1234567B` **Clear** | `clear` **Delete Person** | `delete INDEX`
e.g., `delete 3` **Delete Appointment** | `deleteappt INDEX`
e.g., `deleteappt 3` -**Edit Appointment** | `editappt INDEX ad/DATE`
e.g.,`editappt 1 ad/2024-04-09` +**Edit Appointment** | `editappt INDEX ad/DATETIME`
e.g.,`editappt 1 ad/2024-04-09 10:10` **Edit Person** | `edit INDEX [n/NAME] [p/PHONE] [i/NRIC] [d/DOB]`
e.g.,`edit 1 p/91234567 n/Betsy Crower` **Exit** | `exit` **Query Patient** | `patient KEYWORD [MORE_KEYWORDS]`
e.g., `patient James Jake` diff --git a/docs/diagrams/DeleteAppointmentActivityDiagram.puml b/docs/diagrams/DeleteAppointmentActivityDiagram.puml index bfb016082ef..ebaaabe7790 100644 --- a/docs/diagrams/DeleteAppointmentActivityDiagram.puml +++ b/docs/diagrams/DeleteAppointmentActivityDiagram.puml @@ -4,7 +4,7 @@ skinparam ActivityFontSize 15 skinparam ArrowFontSize 12 start -:User enters command to appointment; +:User enters command to delete appointment; if () then ([command is invalid]) :Show error message\nfor invalid command; diff --git a/docs/diagrams/EditAppointmentActivityDiagram.puml b/docs/diagrams/EditAppointmentActivityDiagram.puml new file mode 100644 index 00000000000..54066f7aab1 --- /dev/null +++ b/docs/diagrams/EditAppointmentActivityDiagram.puml @@ -0,0 +1,26 @@ +@startuml +skin rose +skinparam ActivityFontSize 15 +skinparam ArrowFontSize 12 + +start +:User enters command to edit appointment; + +if () then ([command is invalid]) + :Show error message\nfor invalid command; +else ([else]) + if () then ([missing required fields]) + :Show error message\nfor missing required fields; + else ([else]) + if () then ([Invalid appointment index detected]) + :Show error message\nindicating invalid Appointment index; + else ([else]) + :edit appointment\nin the appointment list; + :Update the 'appointment' panel\nin the GUI; + :Show success message\nwith edited appointment information; + endif; + endif +endif + +stop +@enduml diff --git a/docs/diagrams/EditAppointmentSequenceDiagram.puml b/docs/diagrams/EditAppointmentSequenceDiagram.puml new file mode 100644 index 00000000000..02e383cee56 --- /dev/null +++ b/docs/diagrams/EditAppointmentSequenceDiagram.puml @@ -0,0 +1,65 @@ +@startuml +!include style.puml +skinparam ArrowFontStyle plain + +box Logic LOGIC_COLOR_T1 +participant ":LogicManager" as LogicManager LOGIC_COLOR +participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR +participant ":EditAppointmentCommandParser" as EditAppointmentCommandParser LOGIC_COLOR +participant "e:EditAppointmentCommand" as EditAppointmentCommand LOGIC_COLOR +participant ":CommandResult" as CommandResult LOGIC_COLOR +end box + +box Model MODEL_COLOR_T1 +participant ":Model" as Model MODEL_COLOR +end box + +[-> LogicManager : execute("editappt i/...") +activate LogicManager + +LogicManager -> AddressBookParser : parseCommand("editappt i/...") +activate AddressBookParser + +create EditAppointmentCommandParser +AddressBookParser -> EditAppointmentCommandParser +activate EditAppointmentCommandParser + +create EditAppointmentCommand +EditAppointmentCommandParser -> EditAppointmentCommand : : parse("editappt i/...") +activate EditAppointmentCommand + +EditAppointmentCommand --> EditAppointmentCommandParser +deactivate EditAppointmentCommand + +EditAppointmentCommandParser --> AddressBookParser +deactivate EditAppointmentCommandParser + +'Hidden arrow to position the destroy marker below the end of the activation bar. +EditAppointmentCommandParser -[hidden]-> AddressBookParser +destroy EditAppointmentCommandParser + +AddressBookParser --> LogicManager +deactivate AddressBookParser + +LogicManager -> EditAppointmentCommand : execute() +activate EditAppointmentCommand + +EditAppointmentCommand -> Model : setAppointment(toEdit) +activate Model + +Model --> EditAppointmentCommand +deactivate Model + +create CommandResult +EditAppointmentCommand -> CommandResult +activate CommandResult + +CommandResult --> EditAppointmentCommand : result +deactivate CommandResult + +EditAppointmentCommand --> LogicManager : result +deactivate EditAppointmentCommand + +[<--LogicManager +deactivate LogicManager +@enduml diff --git a/docs/diagrams/EditPersonActivityDiagram.puml b/docs/diagrams/EditPersonActivityDiagram.puml new file mode 100644 index 00000000000..5611c189610 --- /dev/null +++ b/docs/diagrams/EditPersonActivityDiagram.puml @@ -0,0 +1,26 @@ +@startuml +skin rose +skinparam ActivityFontSize 15 +skinparam ArrowFontSize 12 + +start +:User enters command to edit doctor or patient; + +if () then ([command is invalid]) + :Show error message\nfor invalid command; +else ([else]) + if () then ([missing required fields]) + :Show error message\nfor missing required fields; + else ([else]) + if () then ([Invalid person index detected]) + :Show error message\nindicating invalid Person index; + else ([else]) + :Edit patient/doctor\nfrom the persons list\nalso updates any appointments\nassociated with the edited patient/doctor; + :Update the 'person' panel\nand appointments panel\n in the GUI; + :Show success message\nwith edited doctor/patient information; + endif; + endif +endif + +stop +@enduml diff --git a/docs/diagrams/EditPersonSequenceDiagram.puml b/docs/diagrams/EditPersonSequenceDiagram.puml new file mode 100644 index 00000000000..3febefb3602 --- /dev/null +++ b/docs/diagrams/EditPersonSequenceDiagram.puml @@ -0,0 +1,65 @@ +@startuml +!include style.puml +skinparam ArrowFontStyle plain + +box Logic LOGIC_COLOR_T1 +participant ":LogicManager" as LogicManager LOGIC_COLOR +participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR +participant ":EditCommandParser" as EditCommandParser LOGIC_COLOR +participant "e:EditCommand" as EditCommand LOGIC_COLOR +participant ":CommandResult" as CommandResult LOGIC_COLOR +end box + +box Model MODEL_COLOR_T1 +participant ":Model" as Model MODEL_COLOR +end box + +[-> LogicManager : execute("edit i/...") +activate LogicManager + +LogicManager -> AddressBookParser : parseCommand("edit i/...") +activate AddressBookParser + +create EditCommandParser +AddressBookParser -> EditCommandParser +activate EditCommandParser + +create EditCommand +EditCommandParser -> EditCommand : : parse("edit i/...") +activate EditCommand + +EditCommand --> EditCommandParser +deactivate EditCommand + +EditCommandParser --> AddressBookParser +deactivate EditCommandParser + +'Hidden arrow to position the destroy marker below the end of the activation bar. +EditCommandParser -[hidden]-> AddressBookParser +destroy EditCommandParser + +AddressBookParser --> LogicManager +deactivate AddressBookParser + +LogicManager -> EditCommand : execute() +activate EditCommand + +EditCommand -> Model : setPerson(toEdit) +activate Model + +Model --> EditCommand +deactivate Model + +create CommandResult +EditCommand -> CommandResult +activate CommandResult + +CommandResult --> EditCommand : result +deactivate CommandResult + +EditCommand --> LogicManager : result +deactivate EditCommand + +[<--LogicManager +deactivate LogicManager +@enduml diff --git a/docs/images/EditAppointmentActivityDiagram.png b/docs/images/EditAppointmentActivityDiagram.png new file mode 100644 index 00000000000..0d614dfee6f Binary files /dev/null and b/docs/images/EditAppointmentActivityDiagram.png differ diff --git a/docs/images/EditAppointmentSequenceDiagram.png b/docs/images/EditAppointmentSequenceDiagram.png new file mode 100644 index 00000000000..b62244b81dc Binary files /dev/null and b/docs/images/EditAppointmentSequenceDiagram.png differ diff --git a/docs/images/EditPersonActivityDiagram.png b/docs/images/EditPersonActivityDiagram.png new file mode 100644 index 00000000000..9b343328aeb Binary files /dev/null and b/docs/images/EditPersonActivityDiagram.png differ diff --git a/docs/images/EditPersonSequenceDiagram.png b/docs/images/EditPersonSequenceDiagram.png new file mode 100644 index 00000000000..d7cc00f6833 Binary files /dev/null and b/docs/images/EditPersonSequenceDiagram.png differ diff --git a/docs/index.md b/docs/index.md index 7601dbaad0d..8494ebd01cb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,6 @@ --- layout: page -title: AddressBook Level-3 +title: MediCLI --- [![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions) @@ -8,10 +8,10 @@ title: AddressBook Level-3 ![Ui](images/Ui.png) -**AddressBook is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface). +**MediCLI is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface). -* If you are interested in using AddressBook, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start). -* If you are interested about developing AddressBook, the [**Developer Guide**](DeveloperGuide.html) is a good place to start. +* If you are interested in using MediCLI, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start). +* If you are interested about developing MediCLI, the [**Developer Guide**](DeveloperGuide.html) is a good place to start. **Acknowledgements**