LittleLogBook

Product description

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.

Target User

LittleLogBook is designed for kindergarten teachers in Singapore who need to manage students' and parents' contact information efficiently.

Assumptions about our target user:

  1. Singapore-based kindergarten teacher.
  2. A kindergarten teacher who is an avid user of typed user commands (able to use Command prompt/terminal).
  3. The teacher teaches multiple classes, each containing multiple students.
  4. The teacher will also have multiple colleagues to work with.

Quick start

  1. Ensure you have Java 17 or above installed in your Computer.

    Mac users: Ensure you have the precise JDK version prescribed here.
  2. Download the latest .jar file from here.

  3. Copy the file to the folder you want to use as the home folder for your LittleLogBook.

  4. Open and navigate to your jar file using command terminal:

What is 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:

  1. Navigate to the jar file folder:
    • Windows: Open Command Prompt and run cd C:\path\to\LittleLogBook
    • Mac/Linux: Open Terminal and run cd /path/to/LittleLogBook
Tip: Replace the path with your actual folder location containing the jar file.
  1. Run the application:

    java -jar littlelogbook.jar
    
  2. Alternative method (easier for beginners):

    • Navigate to the folder containing littlelogbook.jar using your file explorer
    • Windows: Hold Shift + Right-click in the empty space of the folder → Select "Open PowerShell window here" or "Open command window here"
    • Mac: Right-click in the folder → Services → New Terminal at Folder
    • Linux: Right-click in the folder → "Open in Terminal"
    • Type java -jar littlelogbook.jar and press Enter

A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.

  1. 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.

  2. Refer to the Features below for details of each command.

Tip: For quick reference, check out our Glossary of terms below!

Features

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.

Viewing help : help

Purpose: 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.

Command Format
help
Parameters & Validation Rules
  • No parameters accepted.
  • Any extraneous text after help will be ignored (treated as help).
Outputs
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
Help window appears

Adding a contact: add

Purpose: Allows teachers to create a new contact entry for students or colleagues.

Important Name Limitation:
Names cannot contain command prefixes such as "s/o", "d/o", "a/l", etc. These patterns (letter + "/" + letter) are interpreted as command parameters and will cause parsing errors.

Examples:
John Doe s/o AhmadWill cause error (s/ is interpreted as status parameter)
Mary a/l SusanWill cause error (a/ is interpreted as address parameter)
John Doe son of AhmadUsing full words as such will be valid
Mary anak lelaki SusanUsing alternative phrasing as such will also be valid
Command Format
add n/NAME p/PHONE e/EMAIL a/ADDRESS c/CLASS b/BIRTHDAY t/TAG [desc/NOTE]
Parameters & Validation Rules
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
Duplicate Contact Detection:
The system uses different rules for detecting duplicates based on contact type. Contacts with different tags (student vs colleague) are never considered duplicates, allowing you to have a student and colleague with the same information.

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

Why Different Duplicate Rules?
Colleagues: In a professional setting, multiple colleagues can have the same name, but each should have their own unique phone number and email address
Students: Multiple students may share the same emergency contact number (e.g., siblings), but each student should have a unique name-phone combination to distinguish between them
Sample Commands
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
Outputs
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
Why Different Duplicate Rules?
Colleagues: In a professional setting, multiple colleagues can have the same name, but each must have both a unique phone number and a unique email address
Students: Multiple students may share the same emergency contact number (e.g., siblings), but each student should have a unique name-phone combination to distinguish between them

Editing a contact: edit

Purpose: Allows teachers to edit a contact.

Command Format
edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [c/CLASS] [b/BIRTHDAY] [t/TAG] [desc/NOTE]
Parameters & Validation Rules
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
Sample Commands
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
Outputs
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
No age validation is performed when editing
• This may cause the student/colleague to become invalid in the system

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


Deleting a contact: delete

Purpose: Removes outdated or incorrect contacts from the list.

Command Format
delete INDEX
delete n/NAME
Parameters & Validation Rules
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/)
Sample Commands
delete 3
delete n/John Doe
Outputs

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
Note: When the popup window appears, you must respond to it before continuing. The main window will not respond until you either confirm or cancel the deletion.
No matches found
Multiple matches found
Delete confirmation

Viewing contact details: view

Purpose: Shows full information of a contact (including emergency contact, notes, and attendance).

Format
view INDEX
Parameters & Validation Rules
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
Sample Commands:
view 1
Outputs
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
Valid index provided - Student
Valid index provided - Colleague

Adding/Editing notes: note

Purpose: Stores additional info (student progress, allergies, parent instructions, etc.).

Command Format

To add/change notes to a specific index:

note INDEX desc/NOTE_TEXT

To delete notes from a specific index:

note INDEX
Parameters & Validation Rules
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
Sample Commands
note 1 desc/Allergic to peanuts
note 1
Outputs
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

Finding contacts by name (cumulative filtering): find-n

Purpose: Allows teachers to find contacts quickly with partial names (contiguous).

Format
find-n NAME(s)
Parameters & Validation Rules
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
Sample Commands
find-n John ecka
find-n Tan
Outputs
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!


Finding contacts by phone number (cumulative filtering): find-p

Purpose: Allows teachers to find contacts quickly with partial number (contiguous).

Format
find-p PHONE(s)
Parameters & Validation Rules
Parameter Validation Rules
PHONE(s) Numeric string only
Matches partial phone numbers
Accepts multiple inputs (use spaces to separate inputs)
Error if empty string
Sample Commands
find-p 431 967
find-p 84313390
find-p 3133
Outputs
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!


Finding contacts by tags (cumulative filtering): find-t

Purpose: Allows teachers to find contacts quickly with partial tags (contiguous).

Format
find-t TAG(s)
Parameters & Validation Rules
Parameter Validation Rules
TAG(s) Alphabetic string only
Matches partial tag names
Accepts multiple inputs (use spaces to separate inputs)
Error if empty string
Sample Commands
find-t student
find-t stu colle
find-t ague
Outputs
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!


Finding contacts by classes (cumulative filtering): find-c

Purpose: Allows teachers to find contacts quickly with partial classes (contiguous).

Format
find-c CLASS(es)
Parameters & Validation Rules
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
Sample Commands
find-c k1A nur
find-c nursery -
find-c 2 A
Outputs
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!


Favourite/Unfavorite contacts : fav

Purpose: Indicates contacts as favourites.

Format
fav INDEX(es)
Parameters & Validation Rules
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
Sample Commands
fav 1 
fav 1,2,3 
fav 1, 2, 3, 4, 5
fav 3 ,5 , 2 ,1
Outputs
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

Sort contacts : sort

Purpose: Sorts contact based on specified field and order.

Format
sort f/FIELD [o/ORDER]
Parameters & Validation Rules
Parameter Validation Rules
FIELD Valid field: name, class, tag
Error if empty string
ORDER Valid order: asc, desc
Default to asc if empty
Sample Commands
sort f/name
sort f/class o/desc
Outputs
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

Birthday reminders : remind

Purpose

  • Automatically checks for birthdays today and upcoming (within the next 7 days/a week).
  • Runs automatically when the app starts and can be run manually to re-check at any time.
Command Format
remind

Parameters & Validation Rules
  • No parameters accepted.
  • Any extraneous text after remind will be ignored (treated as remind).
Possible Outputs
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
Formatting of the reminder list
  • 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]).
    • For today’s birthdays: appended (TODAY!).
    • For upcoming birthdays: appended (in X day(s)).

Mark attendance : attendance

Purpose: Marks attendance of student(s) with the specified status on a specified date.

Format
attendance INDEX(es) s/STATUS [d/DATE]

Warning: Only applies to contact with student tag.

Parameters & Validation Rules
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.

Sample Commands
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
Outputs
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

Download attendance report : attendanceD

Purpose: Downloads attendance report of the specified student(s) or class(es) on a specific date or month.

Format
attendanceD INDEX(es) [m/MONTH]
attendanceD c/CLASS... [d/DATE]
attendanceD c/CLASS... [m/MONTH]

Warning:

  • Only applies to contact with student tag.
  • Individual reports (INDEX(es)) are monthly only.
  • Class reports (CLASS) can be daily or monthly, defaulting to monthly if no timeframe is specified.
Parameters & Validation Rules
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:

  • Individual attendance (INDEX(es)) will be saved into one file named: student_attendance_[MONTH].csv
  • Class attendance (CLASS(es)) will be saved into one file per class.
    E.g. [CLASS]_attendance_[DATE].csv or [CLASS]_attendance_[MONTH].csv
  • All files are saved in csv format. Learn how to open csv file.
Sample Commands
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
Outputs
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

Listing all contacts : list

Purpose: Shows a list of all contacts in LittleLogBook with those set as favourite shown on top.

Format
list
Parameters & Validation Rules
  • No parameters accepted.
  • Any extraneous text after list will be ignored (treated as list).
Outputs
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

Clearing all entries : clear

Purpose: Clears all entries from LittleLogBook.

Format
clear
Parameters & Validation Rules
  • No parameters accepted.
  • Any extraneous text after clear will be ignored (treated as clear).
Outputs
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
Clear command confirmation

Exiting the program : exit

Purpose: Exits the program.

Format
exit
Parameters & Validation Rules
  • No parameters accepted.
  • Any extraneous text after exit will be ignored (treated as exit).
Outputs
Outcome Type Scenario Message GUI Action
Success Exits program None All windows will be closed and program will stop

Saving the data

LittleLogBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.


Editing the data file

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.


Glossary

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.

FAQ

General

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.


Find commands

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.

Attendance

Marking

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.

Reports

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.


Data

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.


How to Open CSV Files

Using Microsoft Excel:

  1. Launch Microsoft Excel
  2. Create a new blank workbook
  3. Go to Data and click the Get Data dropdown
  4. Select From Text/CSV
  5. Choose the CSV file you want to open
  6. In the import wizard, select Delimited and click Next
  7. Check only the Comma delimiter option and click Next
  8. Choose your desired cell location and click Import

Using Google Sheets:

  1. Open Google Sheets in your browser
  2. Create a new blank spreadsheet
  3. Go to FileImport
  4. Select the Upload tab and upload your CSV file
  5. Configure the import settings:
    • Choose your preferred import location
    • Set Separator type to Comma
    • Check Convert text to numbers, dates, and formulas
  6. Click Import Data
  7. Your CSV file will now be properly formatted in the spreadsheet

Known issues

  1. When using multiple screens, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the preferences.json file created by the application before running the application again.
  2. If you minimise the Help Window and then run the 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.
  3. Age validation for Edit: Age validation only applies when adding new students, not when editing existing ones.
  4. No reminders for graduated students to be removed: Students who are currently 6 years old will become invalid when they turn 7 next year. The system does not automatically remind you to remove graduated students.

Command summary

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 INDEX
delete n/NAME
delete 1
delete n/John Doe
View view INDEX view 1
Note note INDEX desc/NOTE_TEXT
note INDEX
note 1 desc/Allergic to peanuts
note 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