ClubHub is a powerful desktop application targets NUS CCA secretaries who need to manage varous details of many CCA member. We aim to efficiently manage members, events, and attendance. It combines the speed and precision of a Command Line Interface (CLI) with the clarity and accessibility of a Graphical User Interface (GUI). By typing simple, intuitive commands, users can perform tasks such as adding members, recording attendance, or viewing details much faster than with traditional point-and-click systems without using external servers or internet connection. This hybrid design makes ClubHub both lightweight and efficient, enabling users who type quickly to streamline their administrative work while still enjoying the visual feedback and ease of use that a GUI provides.
ClubHub is specifically designed for NUS CCA secretaries and club administrators who need to manage the day-to-day operations of their clubs and co-curricular activities.
Primary users:
Our target users frequently need to:
add, edit, delete, find, list)addattendance, markattendance, unmarkattendance, viewattendees, showattendance)addevent, deleteevent)addtask, marktask, unmarktask)budget, setexpense)import, export)ClubHub addresses these needs by providing a fast, offline-capable solution that allows secretaries to efficiently manage all aspects of club administration without relying on external servers or internet connectivity.
Ensure you have Java 17 or above installed in your Computer.
Mac users: Ensure you have the precise JDK version prescribed here.
Download the latest .jar file from here.
Copy the file to the folder you want to use as the home folder for your ClubHub.
Open a command terminal, cd into the folder you put the jar file in, and use the java -jar clubhub.jar command to run the application.
A 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:
list : Lists all contacts.
add n/John y/3 s/A1234567X e/johnd@example.com p/98765432 d/Vegetarian r/President t/leadership : Adds a club member.
addevent e/Orientation2025 dt/2025-08-15 desc/NUS Freshmen Orientation : Adds an event.
clear : Deletes all contacts.
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 [t/TAG] can be used as n/John Doe t/friend or as n/John Doe.
Items with … after them can be used multiple times including zero times.
e.g. [t/TAG]… can be used as (i.e. 0 times), t/friend, t/friend t/family etc.
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.
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.
ClubHub validates your inputs before any change is applied. If a value fails validation, the command stops, and you will see a descriptive error message. Common checks include:
YYYY-MM-DD, e.g. 2024-12-01.A1234567X (one letter, seven digits, one letter).123.45). However, the remaining budget can be negative if expenses exceed the budget.helpShows a message explaining how to access the help page.
Format: help
addAdds a person to the ClubHub.
Format: add n/NAME y/YEAR s/STUDENT_NUMBER e/EMAIL p/PHONE d/DIETARY_REQUIREMENTS r/ROLE [t/TAG]…
Note: The NAME field should only contain alphanumeric characters and spaces. Special characters (such as /, -, ') are not allowed in names.
Tip: A person can have any number of tags (including 0)
Examples:
add n/John Doe y/3 s/A1234567X e/johnd@example.com p/98765432 d/Vegetarian r/President
add n/Betsy Crowe y/2 s/A7654321A e/betsycrowe@example.com p/12345678 d/Halal r/Member t/cricket
listShows a list of all persons in the ClubHub.
Format: list
editEdits an existing person in the ClubHub.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [y/YEAR] [s/STUDENT_NUMBER] [d/DIETARY] [r/ROLE] [t/TAG]…
INDEX. The index refers to the index number shown in the displayed person list. The index must be a positive integer 1, 2, 3, …t/ without
specifying any tags after it.Examples:
edit 1 p/91234567 e/johndoe@example.com Edits the phone number and email address of the 1st person to be 91234567 and johndoe@example.com respectively.edit 2 n/Betsy Crower t/ Edits the name of the 2nd person to be Betsy Crower and clears all existing tags.

findFinds persons whose names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]
hans will match HansHans Bo will match Bo HansHan will not match HansAND search).
e.g. year 2 vegetarian will return all the students who are both Year 2 and VegetarianExamples:
find alex returns Alex Yeoh, Alex Leefind vegetarian year 2 returns students who are both vegetarian and year 2 
deleteDeletes the specified person from the ClubHub.
Format: delete INDEX
INDEX.Examples:
list followed by delete 2 deletes the 2nd person in the ClubHub.find Betsy followed by delete 1 deletes the 1st person in the results of the find command.clearClears all entries from the ClubHub.
Format: clear
exitExits the program.
Format: exit
importImports member details from a .csv file into ClubHub.
The imported members will be added to the existing contact list — this command does not replace or clear existing data.
.csv file will be skipped, and a summary of which lines failed to import will be shown..csv files are supported — other file types (e.g. .pdf, .txt) will be rejected.Format:
import /from FILEPATH
Examples:
import /from members.csvimport /from data/backup/members_2025.csvNotes:
members.csv in the same directory as the application..csv file:Name, Year, StudentNumber, Email, Phone, DietaryRequirements, Role, TagsexportExports all members currently stored in ClubHub to a .csv file.
This is useful for creating backups or transferring member data between devices.
Format:
export /to FILEPATH
Examples:
export /to members.csvexport /to data/exports/members_backup.csvNotes:
members.csv in the same directory as the ClubHub application..csv file will overwrite any existing file with the same name.
members_backup.csv)..csv extensions are supported — specifying other file formats (e.g. .pdf, .txt) will result in an error.Name, Year, StudentNumber, Email, Phone, DietaryRequirements, Role, Tagsaddevent, deleteeventManages events in the ClubHub.
Formats:
addevent e/EVENTID dt/DATE desc/DESCRIPTIONdeleteevent e/EVENTIDExamples:
deleteevent e/Orientation2025addevent e/Orientation2023 dt/2023-08-15 desc/NUS Freshmen Orientation
display format of the event in ClubHub:

Display format: When you set an expense for an event using the setexpense command, the expense amount will be displayed beside the event title in the event list. Events without expenses set will show $0.00 or no expense indicator.
addattendanceAdds the member to the attendance list.
Format: addattendance e/EVENTID m/MEMBER[/MEMBER]...
Examples:
addattendance e/Orientation2023 m/John Doe - Adds John Doe to the attending list of Orientation2023addattendance e/Meeting2023 m/Jane Smith - Adds Jane Smith to the attending list of Meeting2023markattendanceMarks members as attended for an event.
Format: markattendance e/EVENTID m/MEMBER[/MEMBER]...
Examples:
markattendance e/Orientation2023 m/John Doe - Marks John Doe as attended for Orientation2023markattendance e/Meeting2023 m/Jane Smith - Marks Jane Smith as attended for Meeting2023removeattendanceRemoves members from an event’s attendance list.
Format: removeattendance e/EVENTID m/MEMBER[/MEMBER]...
Examples:
removeattendance e/Orientation2023 m/John Doe - Removes John Doe from Orientation2023’s attendance listremoveattendance e/Meeting2023 m/Jane Smith/Jake Lee - Removes Jane Smith and Jake Lee from Meeting2023’s attendance listunmarkattendanceMarks members as absent for an event.
Format: unmarkattendance e/EVENTID m/MEMBER[/MEMBER]...
addattendance.Examples:
unmarkattendance e/Orientation2023 m/John Doe - Marks John Doe as absent for Orientation2023unmarkattendance e/Meeting2023 m/Jane Smith/Jake Lee - Marks Jane Smith and Jake Lee as absent for Meeting2023Validation reminder: Every attendance-related command halts at the first invalid value, and no partial changes are applied. For example, addattendance e/Orientation2025 m/Alice/Unknown fails because Unknown is not a known member; Alice is not added either.
viewattendeesViews the list of members who are attendees of a specific event.
Format: viewattendees e/EVENTID
Examples:
viewattendees e/Meeting2023 - Shows all attendees of Meeting2023viewattendees e/Orientation2023 - Shows all attendees of Orientation2023

showattendanceDisplays a summary of attendance for an event, including counts of attended and absent members. This is different from viewattendees as the command show number of absentees and attendees. For event that have many attendees, this command gives users attendance stats more quickly compared to viewattendees
Format: showattendance e/EVENTID
Examples:
showattendance e/Meeting2023 - Shows attendance summary for Meeting2023showattendance e/Orientation2023 - Shows attendance summary for Orientation2023

addtask, deletetask, marktask, unmarktaskManages simple tasks for the club.
Formats:
addtask TITLE [dl/DEADLINE]deletetask INDEXmarktask INDEXunmarktask INDEXExamples:
addtask Submit budget dl/2025-11-01 23:59marktask 1undo, redoReverts or reapplies the most recent changes.
Formats:
undoredobudget, setexpenseThe Budget Tracker helps you manage club finances by setting a global budget for a specific date range and tracking expenses for individual events. This feature allows you to monitor spending against your allocated budget and see at a glance how much you've spent and how much remains.
Formats:
budgetset a/AMOUNT from/YYYY-MM-DD to/YYYY-MM-DD - Sets a global budgetbudgetreset - Clears the current budgetbudgetreport - Displays the budget reportsetexpense INDEX a/AMOUNT - Sets the expense for an event (INDEX refers to the event's position in the event list)Examples:
budgetset a/3000.00 from/2025-01-01 to/2025-12-31 - Sets a budget of $3000.00 for the year 2025budgetreset - Clears the current budgetbudgetreport - Shows the budget report with total budget, expenses, and remaining amountsetexpense 1 a/150.00 - Sets the expense for the event at index 1 (first event in the list) to $150.00. The expense will be displayed beside the event title in the UI.Notes:
INDEX in setexpense refers to the event's position in the displayed event list (starting from 1).setexpense command, the expense amount will appear beside the event title in the event list panel. This allows you to quickly see the cost of each event at a glance.Budget Report
Total budget: 123.45$
Duration: 2025-11-01 to 2025-11-30
EventA: 10.00$
EventB: 25.50$
EventC: 0.00$
Total spent: 35.50$
Budget remaining: 87.95$
ClubHub data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
ClubHub data are saved automatically as a JSON file [JAR file location]/data/addressbook.json. Advanced users are welcome to update data directly by editing that data file.
Caution:
If your changes to the data file makes its format invalid, ClubHub 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 the ClubHub 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.
[coming in v2.0]Details coming soon ...
Q: How do I transfer my data to another computer?
A: Use the export and import commands.
On your current computer, run:
export /to members_backup.csv
This saves all members into a CSV file.
Move that file to your new computer and run:
import /from members_backup.csv
ClubHub will automatically load all members from the CSV file.
You do not need to manually edit or replace any internal data files.
Q: Where are exported files saved?
A: If no path is specified, exported files are saved in the same directory as the ClubHub application (project root). You can also specify a custom path, e.g.:
export /to data/members.csv
| Action | Format |
|---|---|
| Add | add n/NAME y/YEAR s/STUDENT_NUMBER e/EMAIL p/PHONE d/DIETARY r/ROLE [t/TAG]… |
| Clear | clear |
| Delete | delete INDEX |
| Edit | edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [y/YEAR] [s/STUDENT_NUMBER] [d/DIETARY] [r/ROLE] [t/TAG]… |
| Find | find KEYWORD [MORE_KEYWORDS] |
| List | list |
| Import | import /from FILEPATH |
| Export | export /to FILEPATH |
| Attendance | addattendance e/EVENTID m/MEMBER[/MEMBER]...markattendance e/EVENTID m/MEMBER[/MEMBER]...unmarkattendance e/EVENTID m/MEMBER[/MEMBER]...removeattendance e/EVENTID m/MEMBER[/MEMBER]...viewattendees e/EVENTIDshowattendance e/EVENTID |
| Events | addevent e/EVENTID dt/DATE desc/DESCdeleteevent e/EVENTID |
| Tasks | addtask TITLE [dl/DEADLINE], deletetask INDEX, marktask INDEX, unmarktask INDEX |
| Undo/Redo | undo, redo |
| Budget | budgetset a/AMOUNT from/START to/END, budgetreset, budgetreport, setexpense INDEX a/AMOUNT |
| Help | help |