LittleLogBook helps kindergarten teachers in Singapore keep track of students' and parents' information with ease. Unlike traditional contact management tools, LittleLogBook is optimised for fast typing and minimal clicking, making it ideal for teachers who prefer keyboard-driven workflows.
LittleLogBook is designed for kindergarten teachers in Singapore who need to manage students' and parents' contact information efficiently.
Assumptions about our target user:
Ensure you have Java 17 or above installed in your Computer.
Download the latest .jar file from here.
Copy the file to the folder you want to use as the home folder for your LittleLogBook.
Open and navigate to your jar file using command terminal:
cd? cd stands for "change directory" - it's a command that lets you navigate to different folders on your computer through the command line.
Step-by-step instructions:
cd C:\path\to\LittleLogBookcd /path/to/LittleLogBookRun the application:
java -jar littlelogbook.jar
Alternative method (easier for beginners):
littlelogbook.jar using your file explorerjava -jar littlelogbook.jar and press EnterA GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.

Type the command in the command box and press Enter to execute it. e.g. typing help and pressing Enter will open the help window.
Some example commands you can try:
add n/John Doe p/98765432 e/john.doe@gmail.com a/Blk 456, Den Road, #01-355 c/K1D b/15-03-2020 t/student : Adds a contact named John Doe with class K1D to LittleLogBook.
edit 1 n/Bob : Edit the first contact's name to Bob.
delete n/Bob : Deletes the contact named Bob.
exit : Exits the app.
Refer to the Features below for details of each command.
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.
Items in square brackets are optional.
e.g n/name [desc/NOTE] can be used as n/John Doe desc/Allergic to peanut or as n/John Doe.
Items followed by ellipsis ... accept more than one value.
e.g c/CLASS... can be used as c/K1A or as c/K1A c/K2B.
Parameters (excluding INDEX) can be in any order.
e.g. if the command specifies n/NAME p/PHONE, p/PHONE n/NAME is also acceptable.
e.g. if the command specifies INDEX s/status you must write INDEX first before the other parameters.
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.
If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.
Notes about the parameters and validation rules:
Mandatory parameters will be colored PINK.
Optional parameters will be colored GREY.
helpPurpose: Shows a message with a link to access the user guide page which has full details on the different commands and how to use them.
help
help will be ignored (treated as help).| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | Help window appears | Opened help window. | Pop-up window appears with the link to the user guide page |

addPurpose: Allows teachers to create a new contact entry for students or colleagues.
John Doe s/o Ahmad → Will cause error (s/ is interpreted as status parameter)Mary a/l Susan → Will cause error (a/ is interpreted as address parameter)John Doe son of Ahmad → Using full words as such will be validMary anak lelaki Susan → Using alternative phrasing as such will also be validadd n/NAME p/PHONE e/EMAIL a/ADDRESS c/CLASS b/BIRTHDAY t/TAG [desc/NOTE]
| Parameter | Validation Rules |
|---|---|
| NAME (n/) | Alphabetic characters, spaces, hyphens, apostrophes only. Must contain at least 2 letters, cannot be only punctuation. No consecutive punctuation. Must have more letters than punctuation marks (e.g., O'Connor is valid, a'a' is invalid) |
| Leading/trailing spaces trimmed, multiple spaces collapsed | |
| Case-insensitive for duplicates | |
| Cannot contain command prefixes (n/, p/, e/, a/, c/, t/, b/, desc/, d/, m/, s/, f/, o/) | |
| Error if empty or contains numbers or other symbols not specified above | |
| PHONE (p/) | 8-digit Singapore numbers starting with 6 (landline), 8, or 9 (mobile) |
| Valid formats: 6XXXXXXX (landline), 8XXXXXXX or 9XXXXXXX (mobile) | |
| Examples: 61234567, 81234567, 91234567 | |
| Spaces/dashes ignored (e.g., 9123-4567 or 9123 4567) | |
| Error if not numeric, wrong length, or invalid starting digit | |
| EMAIL (e/) | Must follow standard email format with domain containing at least one period |
| Case-insensitive (automatically converted to lowercase) | |
Domain must have at least one period (e.g., user@example.com is valid, user@example is invalid) | |
| Error if invalid format | |
| ADDRESS (a/) | Alphanumeric characters, spaces, and common address punctuation (comma, period, dash, hash, slash, parentheses). No symbols like @, *, $, !, ?, +, ;, etc. |
| Must be at least 15 characters long (after trimming and space normalization) | |
| Leading/trailing spaces trimmed, multiple spaces collapsed to single spaces | |
| Error if empty, contains only whitespace, or under 15 characters | |
| CLASS (c/) | Alphanumeric characters only (letters and numbers), 1-20 characters |
| Case-insensitive | |
| Examples: K1A, K1D, Nursery, Harmony, Class123 | |
| BIRTHDAY (b/) | Date in dd-MM-yyyy format |
| Must be a valid date (from 01-01-1900 to today's date) | |
| Student's birthday must be 3, 4, 5 or 6 years old. | |
| Colleague's birthday must be 18 years old or older. | |
| Age is calculated using Singapore education system rules: Age = Current Year - Birth Year (Not by exact date) | |
| TAG (t/) | Exactly one tag |
| Must be either 'student' or 'colleague' (case-insensitive) | |
| NOTE (desc/) | Any text up to 500 |
| Leading/trailing spaces trimmed |
For Colleagues (t/colleague):
• Duplicate if: same phone number OR same email address
• Colleagues can have the same name but must each have both a unique phone number and a unique email address
For Students (t/student):
• Duplicate if: same name AND phone number
• Allows different students to share the same phone (e.g., siblings with same emergency contact)
Mixed Contact Types:
• A student and colleague can have identical information (name, phone, email, etc.) without being detected as duplicates
• This allows scenarios like having a student and their parent (as a colleague) with the same contact details
Error Message: This contact already exists in the address book.
For colleagues: Both phone numbers and email addresses must be unique.
For students: Name-phone combinations must be unique.
Resolution:
• For Colleagues: Each colleague must have both a unique phone number and a unique email address
• For Students: Name-phone combinations must be unique
• Mixed Types: No conflicts - students and colleagues can share the same information
add n/John Doe p/98765432 e/john.doe@gmail.com a/Blk 456, Den Road, #01-355 c/K1D b/15-03-2020 t/student
add n/Mary Tan p/91234567 e/marytan@e.nut.edu a/123 Jurong West Ave 6 c/K2B b/24-12-2006 t/colleague desc/Allergic to peanuts
| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | New contact added | New <contact> added | Contact list refreshes with new entry |
| Failure | Missing required parameter | Invalid command format! (with correct format guidance) | No changes |
| Failure | Invalid parameter format | Parameter-specific validation error | No changes |
| Failure | Duplicate contact detected | Duplicate contact detected. | No changes |
editPurpose: Allows teachers to edit a contact.
edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [c/CLASS] [b/BIRTHDAY] [t/TAG] [desc/NOTE]
| Parameter | Validation Rules |
|---|---|
| INDEX | Must be a positive integer (1, 2, 3, ...) |
| Cannot be 0 or negative | |
| Must correspond to an existing contact in the current list | |
| NAME (n/) | Alphabetic characters, spaces, hyphens, apostrophes only. Must contain at least 2 letters, cannot be only punctuation. No consecutive punctuation. Must have more letters than punctuation marks (e.g., O'Connor is valid, a'a' is invalid) |
| Leading/trailing spaces trimmed, multiple spaces collapsed | |
| Case-insensitive for duplicates | |
| Cannot contain command prefixes (n/, p/, e/, a/, c/, t/, b/, desc/, d/, m/, s/, f/, o/) | |
| Error if empty or contains numbers/symbols | |
| PHONE (p/) | 8-digit Singapore numbers starting with 6 (landline), 8, or 9 (mobile) |
| Valid formats: 6XXXXXXX (landline), 8XXXXXXX or 9XXXXXXX (mobile) | |
| Examples: 61234567, 81234567, 91234567 | |
| Spaces/dashes ignored (e.g., 9123-4567 or 9123 4567) | |
| Error if not numeric, wrong length, or invalid starting digit | |
| EMAIL (e/) | Must follow standard email format with domain containing at least one period |
| Case-insensitive (automatically converted to lowercase) | |
Domain must have at least one dot (e.g., user@example.com is valid, user@example is invalid) | |
| Case-insensitive | |
| Error if invalid format | |
| ADDRESS (a/) | Alphanumeric characters, spaces, and common address punctuation (comma, period, dash, hash, slash, parentheses). No symbols like @, *, $, !, ?, +, ;, etc. |
| Must be at least 15 characters long (after trimming and space normalization) | |
| Leading/trailing spaces trimmed, multiple spaces collapsed to single spaces | |
| Error if empty, contains only whitespace, or under 15 characters | |
| CLASS (c/) | Alphanumeric characters only (letters and numbers), 1-20 characters |
| Case-insensitive | |
| Examples: K1A, K1D, Nursery, Harmony, Class123 | |
| BIRTHDAY (b/) | Date in dd-MM-yyyy format |
| Must be a valid date (from 01-01-1900 to today's date) | |
| Student's birthday must be 3, 4, 5 or 6 years old. | |
| Colleague's birthday must be 18 years old or older. | |
| Age is calculated using Singapore education system rules: Age = Current Year - Birth Year (Not by exact date) | |
| TAG (t/) | Exactly one tag |
| Must be either 'student' or 'colleague' (case-insensitive) | |
| NOTE (desc/) | Up to 500 characters |
| Leading/trailing spaces trimmed |
edit 1 n/Bobby p/98765432 e/bobby@gmail.com a/Blk 676, Hen Road, #01-205 c/K2B b/15-03-2007 t/colleague
| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | Contact edited | Edited Person: <contact> | Contact list refreshes with new entry |
| Failure | Missing required parameter | Invalid command format! (with correct format guidance) | No changes |
| Failure | Invalid parameter format | Parameter-specific validation error | No changes |
| Failure | Duplicate name & phone | This person already exists in the address book. Please change either the name or phone number to make it unique. | No changes |
Workaround:
• Use the add command with proper age validation for new students
• Be cautious when editing existing students' birthdays
• Verify student ages before using the edit command
deletePurpose: Removes outdated or incorrect contacts from the list.
delete INDEX
delete n/NAME
| Parameter | Validation Rules |
|---|---|
| INDEX | Must be a positive integer (1, 2, 3, ...) |
| Cannot be 0 or negative | |
| Must correspond to an existing contact in the current list | |
| NAME (n/) | Must be an alphabetic string (may contain spaces, hyphens, and apostrophes). Must contain at least 2 letters, cannot be only punctuation. No consecutive punctuation. Must have more letters than punctuation marks (e.g., O'Connor is valid, a'a' is invalid) |
| Leading/trailing spaces trimmed, multiple spaces collapsed | |
| Case-insensitive match | |
| Matches partial names | |
| Cannot contain command prefixes (n/, p/, e/, a/, c/, t/, b/, desc/, d/, m/, s/, f/, o/) |
delete 3
delete n/John Doe
1. Delete by INDEX
| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | Contact deleted | Deleted Person: <Person> (with details on person deleted) | Contact list refreshes without deleted entry |
| Failure | Invalid index | The person index provided is invalid | No changes |
| Failure | No index provided | Invalid command format! (with correct format guidance) | No changes |
| Confirmation Required | Double confirmation before deletion | Are you sure you want to delete this contact <Person> ? (with information on how to proceed) | Pop-up window with the selected person information appears |
2. Delete by NAME
| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | Contact deleted | Deleted Person: <Person> (with details on person deleted) | Contact list refreshes without deleted entry |
| Failure | No matches found | No matches found. Please try again (with information on how to proceed) | Pop-up window appears |
| Confirmation Required | Multiple matches found | Possible matches found. Type index and ENTER to delete or ESC to cancel and go back to main window (with information on how to proceed) | Pop-up window with list of matches appears |
| Confirmation Required | One exact same name found / selected - Double confirmation before deletion | Are you sure you want to delete this contact <Person> ? (with information on how to proceed) | Pop-up window with the selected person information appears |



viewPurpose: Shows full information of a contact (including emergency contact, notes, and attendance).
view INDEX
| Parameter | Validation Rules |
|---|---|
| INDEX | Must be a positive integer (1, 2, 3, ...) |
| Cannot be zero or negative | |
| Must correspond to an existing contact in the current list |
view 1
| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | Valid index provided | Viewing information of <contact> | Pop-up windows appears displaying the contact's full information. |
| Failure | Invalid command format | Invalid command format! (with correct format guidance) | No changes |
| Failure | Index out of bounds | The person index provided is invalid | No changes |


notePurpose: Stores additional info (student progress, allergies, parent instructions, etc.).
To add/change notes to a specific index:
note INDEX desc/NOTE_TEXT
To delete notes from a specific index:
note INDEX
| Parameter | Validation Rules |
|---|---|
| INDEX | Must be a positive integer (1, 2, 3, ...) |
| Cannot be 0 or negative | |
| Must correspond to an existing contact in the current list | |
| NOTE_TEXT | Accepts all letters, numbers, symbols, spaces |
| Cannot be control characters | |
| Up to 500 characters | |
| Leading/trailing spaces trimmed | |
| Remove current note if omitted or left empty |
note 1 desc/Allergic to peanuts
note 1
| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | Note added to contact | Added note to Person: <Contact> | Contact details update with new note |
| Success | Empty note provided | Removed note from Person: <Contact> | Note field cleared in contact details |
| Failure | No matching index | The person index provided is invalid | No changes |
| Failure | No index provided | Invalid command format! (with correct format guidance) | No changes |
find-nPurpose: Allows teachers to find contacts quickly with partial names (contiguous).
find-n NAME(s)
| Parameter | Validation Rules |
|---|---|
| NAME(s) | Must be an alphabetic string (may contain spaces, hyphens, and apostrophes) |
| Case-insensitive matching | |
| Matches partial names | |
| Accepts multiple inputs (use spaces to separate inputs) | |
| Error if empty string |
find-n John ecka
find-n Tan
| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | Matches found | <x> persons listed! (with guidance on next possible steps) | Contact list updates with matching contacts |
| Success | No matches found | 0 persons listed! (with guidance on next possible steps) | Contact list shows empty results |
| Failure | Empty keyword | Invalid command format! (with correct format guidance) | No changes |
Find commands filter contacts cumulatively. Refer to Glossary section on cumulative filtering to find out more!
Using add, edit, note, list commands will revert to displaying all contacts!
find-pPurpose: Allows teachers to find contacts quickly with partial number (contiguous).
find-p PHONE(s)
| Parameter | Validation Rules |
|---|---|
| PHONE(s) | Numeric string only |
| Matches partial phone numbers | |
| Accepts multiple inputs (use spaces to separate inputs) | |
| Error if empty string |
find-p 431 967
find-p 84313390
find-p 3133
| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | Matches found | <x> persons listed! (with guidance on next possible steps) | Contact list updates with matching contacts |
| Success | No matches found | 0 persons listed! (with guidance on next possible steps) | Contact list shows empty results |
| Failure | Empty keyword | Invalid command format! (with correct format guidance) | No changes |
Find commands filter contacts cumulatively. Refer to Glossary section on cumulative filtering to find out more!
Using add, edit, note, list commands will revert to displaying all contacts!
find-tPurpose: Allows teachers to find contacts quickly with partial tags (contiguous).
find-t TAG(s)
| Parameter | Validation Rules |
|---|---|
| TAG(s) | Alphabetic string only |
| Matches partial tag names | |
| Accepts multiple inputs (use spaces to separate inputs) | |
| Error if empty string |
find-t student
find-t stu colle
find-t ague
| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | Matches found | <x> persons listed! (with guidance on next possible steps) | Contact list updates with matching contacts |
| Success | No matches found | 0 persons listed! (with guidance on next possible steps) | Contact list shows empty results |
| Failure | Empty keyword | Invalid command format! (with correct format guidance) | No changes |
Find commands filter contacts cumulatively. Refer to Glossary section on cumulative filtering to find out more!
Using add, edit, note, list commands will revert to displaying all contacts!
find-cPurpose: Allows teachers to find contacts quickly with partial classes (contiguous).
find-c CLASS(es)
| Parameter | Validation Rules |
|---|---|
| CLASS(es) | Can only contain alphanumeric string and hyphens |
| Matches partial class names | |
| Case insensitive | |
| Accepts multiple inputs (use spaces to separate inputs) | |
| Error if empty string |
find-c k1A nur
find-c nursery -
find-c 2 A
| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | Matches found | <x> persons listed! (with guidance on next possible steps) | Contact list updates with matching contacts |
| Success | No matches found | 0 persons listed! (with guidance on next possible steps) | Contact list shows empty results |
| Failure | Empty keyword | Invalid command format! (with correct format guidance) | No changes |
Find commands filter contacts cumulatively. Refer to Glossary section on cumulative filtering to find out more!
Using add, edit, note, list commands will revert to displaying all contacts!
favPurpose: Indicates contacts as favourites.
fav INDEX(es)
| Parameter | Validation Rules |
|---|---|
| INDEX(es) | Numeric string separated by commas (spaces before and after commas are ignored) |
| When called once on an index, the index is added to favourites When called again on the same index, the index is removed from favourites | |
| Error if empty string |
fav 1
fav 1,2,3
fav 1, 2, 3, 4, 5
fav 3 ,5 , 2 ,1
| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | All contacts were not in favourites before | Updated favourites successfully. (with information on who were added) | Contact list updates with star icon next to contacts of specified index(es) |
| Success | All contacts were in favourites before | Updated favourites successfully. (with information on who were removed) | Contact list updates with star icon removed from the contacts of specified index(es) |
| Success | Some contacts were in favourites before | Updated favourites succesfully. (with information on who were added and removed from favourites) | Contact list updates with star icon next to newly added favourite contacts and no star next to contacts removed from favourites |
| Failure | Empty keyword | Invalid command format! (with correct format guidance) | No changes |
| Failure | Non-positive index(es) or multiple indexes not separated by commas | Index(es) must be positive integers separated by commas. | No changes |
| Failure | Out of bounds positive index(es) | You have passed in out of bound index(es). (with guidance on what index(es) are valid) | No changes |
sortPurpose: Sorts contact based on specified field and order.
sort f/FIELD [o/ORDER]
| Parameter | Validation Rules |
|---|---|
| FIELD | Valid field: name, class, tag |
| Error if empty string | |
| ORDER | Valid order: asc, desc |
| Default to asc if empty |
sort f/name
sort f/class o/desc
| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | Contacts sorted successfully | Sorted successfully | Contact list updates with new ordering |
| Failure | Sorting on an empty contact list | No contacts available to sort. | No changes |
| Failure | Missing required parameters | Invalid command format! (with correct format guidance) | No changes |
| Failure | Invalid parameter format | Parameter-specific validation error | No changes |
remindPurpose
remind
remind will be ignored (treated as remind).| Outcome Type | Scenario | Message shown (exact/representative) | GUI Action |
|---|---|---|---|
| Success | There are birthdays today and/or within 7 days | Happy Birthday to these people today!1) ...Upcoming birthdays in the next 7 days:1) ...Don't forget to wish them happy birthday! | Reminder printed to command output / help window (no data change) |
| Success | No birthdays today, some are upcoming | No birthdays today!\n\nUpcoming birthdays in the next 7 days:\n... | Reminder printed |
| Success | No birthdays today and none within 7 days | No upcoming birthdays found. | Reminder printed |
| Success | Address book is empty | No contacts in LittleLogBook. | Reminder printed |
Numbered list of matching contacts.
Each entry shows:
Name — full name of person.Birthday — displayed in the same format used by the app.Tags — shown in square brackets if present (e.g., [student]).(TODAY!).(in X day(s)).attendancePurpose: Marks attendance of student(s) with the specified status on a specified date.
attendance INDEX(es) s/STATUS [d/DATE]
Warning: Only applies to contact with student tag.
| Parameter | Validation Rules |
|---|---|
| INDEX(es) | Must be a positive integer (1, 2, 3, ...) |
| Cannot be 0 or negative | |
| Must correspond to an existing contact in the current list | |
| Accepts multiple inputs (separated by commas. E.g. 1,2,3) | |
| Accepts ranged inputs (E.g. 1-2,5-6) | |
| STATUS(es) | Valid status field: present, late, sick, absent, remove |
| Must be contiguous without spaces or symbols in between | |
| Error if empty | |
| DATE | Date in dd-MM-yyyy format |
| Must be a valid date | |
| Must be within 6 years of the student's birthdate and cannot be later than today's date. | |
| Default to current date if empty |
Example on date validation:
A student born in 01-01-2000 can have their attendance mark from 01-01-2000 until 01-01-2006. But assuming today is 01-01-1999, then their attendance could only be mark from 01-01-2000 until 01-01-1999.
attendance 1 s/present
attendance 1 s/remove
attendance 1,4,6 s/late d/29-01-2025
attendance 1-3,7,9 s/sick d/29-01-2025
| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | Student's attendance marked as STATUS | Modified <x> out of <x> contacts as STATUS on DATE. (attendance details) | No changes |
| Success | Student's attendance removed | Modified <x> out of <x> contacts as REMOVE on DATE. (attendance details) | No changes |
| Failure | Marking a colleague attendance | Modified 0 out of 1 contacts. (attendance details) | No changes |
| Failure | Marking attendance on an empty contact list | No contacts available to download attendance. | No changes |
| Failure | Date out of accepted bound | Modified 0 out of <x> contacts. (attendance details) | No changes |
| Failure | Missing required parameter | Invalid command format! (with correct format guidance) | No changes |
| Failure | Invalid parameter format | Parameter-specific validation error | No changes |
attendanceDPurpose: Downloads attendance report of the specified student(s) or class(es) on a specific date or month.
attendanceD INDEX(es) [m/MONTH]
attendanceD c/CLASS... [d/DATE]
attendanceD c/CLASS... [m/MONTH]
Warning:
student tag.INDEX(es)) are monthly only.CLASS) can be daily or monthly, defaulting to monthly if no timeframe is specified.| Parameter | Validation Rules |
|---|---|
| INDEX(es) | Must be a positive integer (1, 2, 3, ...) |
| Cannot be 0 or negative | |
| Must correspond to an existing contact in the current list | |
| Accepts multiple inputs | |
| CLASS(es) | Alphanumeric characters only (letters and numbers), 1-20 characters per class |
| Case-insensitive | |
Accepts multiple inputs and must start with c/ | |
| Examples: K1A, K1D, Nursery, Harmony, Class123 | |
| DATE | Date in dd-MM-yyyy format |
| Must be a valid date | |
| Must between 01-01-1900 to today's date | |
| Default to current date if empty | |
| MONTH | Month in MM-yyyy format |
| Must be a valid month | |
| Must be between 01-1900 to today's month | |
| Default to current month if empty |
Notes about report saving:
INDEX(es)) will be saved into one file named: student_attendance_[MONTH].csvCLASS(es)) will be saved into one file per class. [CLASS]_attendance_[DATE].csv or [CLASS]_attendance_[MONTH].csvcsv format. Learn how to open csv file.attendanceD 1
attendanceD 1-4,6 m/01-2025
attendanceD c/K1A
attendanceD c/K1A d/29-01-2025
attendanceD c/K1A c/K2B m/01-2025
| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | Attendance report downloaded | Attendance report downloaded. Saved to:<path/to/folder> | No changes |
| Failure | Downloading a class attendance report with 0 students | No attendance report downloaded. Class(es) provided has no students. | No changes |
| Failure | Downloading colleagues' attendance report | No attendance report downloaded. No student in the index specified. | No changes |
| Failure | Downloading on an empty contact list | No contacts available to mark attendance. | No changes |
| Failure | Date out of accepted bound | Date must be within 01-01-1900 until <current date>. | No changes |
| Failure | Month out of accepted bound | Month must be within 01-1900 until <current month>. | No changes |
| Failure | Missing required parameter | Invalid command format! (with correct format guidance) | No changes |
| Failure | Invalid parameter format | Parameter-specific validation error | No changes |
| Failure | Error saving attendance report | Error saving attendance report: _error message_ | No changes |
listPurpose: Shows a list of all contacts in LittleLogBook with those set as favourite shown on top.
list
list will be ignored (treated as list).| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | All contacts shown | Listed all persons. The favourites are shown at the top! | Contact list updates with all contacts |
clearPurpose: Clears all entries from LittleLogBook.
clear
clear will be ignored (treated as clear).| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | All contacts cleared | Address book has been cleared! | Contact list updates with 0 contact |
| Confirmation Required | Double confirmation before clearing | Are you sure you want to clear all contacts? This action is irreversible! | Pop-up window appears for user confirmation |

exitPurpose: Exits the program.
exit
exit will be ignored (treated as exit).| Outcome Type | Scenario | Message | GUI Action |
|---|---|---|---|
| Success | Exits program | None | All windows will be closed and program will stop |
LittleLogBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
LittleLogBook data are saved automatically as a JSON file [JAR file location]/data/littlelogbook.json. Advanced users are welcome to update data directly by editing that data file.
Any direct changes inside the JSON file while the app is closed will be reflected inside the app once you open the app.
Remember to close the application first before directly changing the JSON file, as making changes while the app is open and running won't automatically reflect the changes.
Warning:
If your changes to the data file makes its format invalid, LittleLogBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.
Furthermore, certain edits can cause LittleLogBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.
| Term | Explanation | Example & Elaboration |
|---|---|---|
| Student | Refers to a child (age 3 - 6) enrolled in a kindergarten. | Information about phone number, email, and address associated with student are assumed to be their parent's or guardian's. Therefore, we allow sharing of this information between student contacts as long as they have different names. Each student can only have 1 parent/guardian. |
| Parent/Guardian | Refers to a person with legal responsibility for a child's care. | We assume a parent/guardian can have 0 or more children enrolled in a kindergarten. |
| Colleague | Refers to kindergarten teachers who are age 18 and above. | Information about phone number, email, and address associated with colleague are assumed to be their own. Each teacher can only have 1 class. |
| Cumulative Filtering | Once a find command is used, those matching the input condition will be shown on the screen. Subsequent find commands will filter from the contacts listed on screen. | Doing find-c K1A followed by find-n ne will update GUI to only show contacts in K1A with letters 'ne' in their names. |
Q: Can I use both INDEX and CLASS together in commands?
A: No, most commands require you to choose either INDEX or CLASS parameters, not both simultaneously.
Q: What happens if I enter an index beyond MAX_INT of 2147483647 ?
A: If contact list shown in GUI does not have an index 2147483647, when using commands such as note, view, edit, delete, attendanceD, attendance or fav you will get messages about the index being invalid or out of bounds. If you input an index beyond this for the mentioned commands except attendanceD, due to stack overflow, it will be treated as a negative value and you will get appropriate error messages requesting for positive values. For attendanceD, an index beyond MAX_INT will still say invalid index.
Q: What happens if I call find commands consecutively?
A: The contact list shown in GUI will be filtered further using the new find commands you input. So you can consecutively call the various find commands to narrow down a contact.
Q: What happens if I call non-find commands after a find command?
A: If you call list command, it will display all the contacts. If you call add, edit, note commands on the filtered contacts view, once executed the contact list will reset to showing all the contacts. Whereas, if you call fav, delete, view, remind, help, attendance, attendanceD commands, the filtered view from find command will remain.
Q: How do I go back to displaying all contacts after using find commands?
A: As guided by the GUI messages, you may call the list command to display all the contacts.
Q: What happens if I accidentally include colleague indexes when marking student attendance?
A: LittleLogBook will automatically filter out colleagues and only mark attendance for students. You'll see a summary showing which students were successfully marked and which contacts were skipped (with reasons).
Q: Can I mark attendance for future dates?
A: No, you can only mark attendance from a student's birthday up to today's date.
Q: What happens if I try to mark attendance with an invalid date?
A: LittleLogBook will show an error and list the affected students with the reason "Date before birthday or after today".
Q: How do I update a student's attendance if I made a mistake?
A: Use the same attendance command with the correct status, or use remove as status to clear the record for that date.
Q: What happens if I include colleague indexes when downloading attendance reports?
A: Colleagues are automatically excluded from attendance reports. You'll only receive CSV files containing student attendance records.
Q: Where are attendance reports saved?
A: All CSV reports are saved in the data/ folder within your LittleLogBook directory.
Q: How do I open the CSV file nicely? The current data is a bit hard to see.
A: Please refer to this tutorial to learn how to open CSV file into a nice format.
Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous LittleLogBook home folder.
Using Microsoft Excel:
Using Google Sheets:
preferences.json file created by the application before running the application again.help command (or use the Help menu, or the keyboard shortcut F1) again, the original Help Window will remain minimised, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.| Action | Command Format | Example Commands |
|---|---|---|
| Add | add n/NAME p/PHONE e/EMAIL a/ADDRESS c/CLASS b/BIRTHDAY t/TAG [desc/NOTE] | add n/John Doe p/98765432 e/john.doe@gmail.com a/Blk 456, Den Road, #01-355 c/K1A b/15-03-2020 t/student |
| Edit | edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [c/CLASS] [b/BIRTHDAY] [t/TAG] [desc/NOTE] | edit 1 n/Bobby p/98765432 e/bobby@gmail.com a/Blk 676, Hen Road, #01-205 c/K2B b/15-03-2000 t/colleague |
| Delete | delete INDEXdelete n/NAME | delete 1delete n/John Doe |
| View | view INDEX | view 1 |
| Note | note INDEX desc/NOTE_TEXTnote INDEX | note 1 desc/Allergic to peanutsnote 1 |
| Find-n | find-n NAME(s) | find-n John |
| Find-p | find-p PHONE(s) | find-p 84871234 |
| Find-t | find-t TAG(s) | find-t student |
| Find-c | find-c CLASS(es) | find-c K1A nursery |
| Fav | fav INDEX(es) | fav 1,2 |
| Remind | remind | remind |
| Attendance | attendance INDEX(es) s/STATUS [d/DATE] | attendance 1-3,7,9 s/sick d/29-01-2025 |
| AttendanceD | attendanceD INDEX(es) [m/MONTH] attendanceD c/CLASS... [d/DATE] attendanceD c/CLASS... [m/MONTH] | attendanceD 1-4,6 m/01-2025 attendanceD c/K1A d/29-01-2025 attendanceD c/K1A c/K2B m/01-2025 |
| List | list | list |
| Clear | clear | clear |
| Help | help | help |
| Exit | exit | exit |