Skip to the content.

User Guide

Ha(ppy)Bit is a desktop application aimed to empower students to achieve their goalsā€”whether personal, academical, or healthā€”amidst the hectic and stressful university life, through cultivating good habits. The application operates on a Command Line Interface (CLI) while still comprising features typically found in a Graphical User Interface (GUI). Students who type fast will find that Ha(ppy)Bit performs habit tracking more efficiently than your conventional GUI applications.

You can find out more about Ha(ppy)Bitā€™s Developer Guide or its developers (šŸ˜€ us!) at our Main Page.



1. Quick Start

  1. Hype yourself up by dancing. Here begins your journey with Ha(ppy)Bit.
  2. Ensure you have Java 11 installed in your computer. If you do not have it installed, download it here.
  3. Download the latest happybit.jar here.
  4. Copy the file to the folder you want to use as the home folder for your Ha(ppy)Bit.
  5. Open your terminal of choice inside the folder containing happybit.jar file.
  6. Run the file by typing the command java -jar happybit.jar.
  7. Upon loading the app you should see the following screen, indicating that you have successfully run the app.

    ==============================================================================
     _  _   __   ____  ____  _  _  ____  __  ____
    / )( \ / _\ (  _ \(  _ \( \/ )(  _ \(  )(_  _)
    ) __ (/    \ ) __/ ) __/ )  /  ) _ ( )(   )(
    \_)(_/\_/\_/(__)  (__)  (__/  (____/(__) (__)     tracking habits made fun...
    ==============================================================================
    
    Howdy! Welcome to Ha(ppy)Bit!
    Select from one of the following menu items:
        [1] About HappyBit
        [2] User Guide
        [3] Developer Guide
        [4] Demo Video
        [5] Start Application
        [6] Exit Application
        
    Option:
    

    Any keyboard input will appear after Option: . Here is where interaction between you and Ha(ppy)Bit takes place.

1.1 Start-Up Interface

In the current loading screen, you will be able to navigate to five other screens. Choose an option from one to six by typing 1, 2, 3, 4, 5 or 6 and hitting ā€œenterā€ to load the desired screen. Below are the outcomes.

Option 1: About Ha(ppy)Bit

Learn more about our vision for Ha(ppy)Bit and the team behind it.

Option: 1

Ha(ppy)Bit is a desktop application aimed to empower students to achieve their goalsā€”whether personal,
academical, or healthā€”amidst the hectic and stressful university life, through cultivating good
habits. The application operates on a Command Line Interface (CLI) while still comprising features
typically found in a Graphical User Interface (GUI). Students who type fast will find that Ha(ppy)Bit
performs habit tracking more efficiently than your conventional GUI applications.

Meet The Team
=================================================================
||  Tan Kah Heng       ||  Creative Director, Visionary        ||
||  Swaminathan Varun  ||  Business Manager, Technical Advisor ||
||  Tan Jun Heng Daren ||  Frontend Developer                  ||
||  Tan Hui En         ||  Backend Developer                   ||
||  Swann Tet Aung     ||  Backend Developer                   ||
=================================================================

Current Version: v2.1 (updated 08-Nov-2021)


Press enter to return to main menu...

Option 2: User Guide

Learn what you can accomplish with this app.
This option opens the User Guide in your web browser.

Option: 2

Opening in a web browser...

Press enter to return to main menu...

User Guide

Option 3: Developer Guide

Learn about the app from the perspective of a software engineer.
This option opens the Developer Guide in your web browser.

Option: 3

Opening in a web browser...

Press enter to return to main menu...

Developer Guide

Option 4: Demo Video

Donā€™t like reading long wordy guides? A video may be just the thing for you!
This option opens a Google Drive folder containing the Demo Video in your web browser.

Option: 4

Opening in a web browser...

Press enter to return to main menu...

Option 5: Start Application

If youā€™re a new user, look forward to beginning your Ha(ppy)Bit journey here.
If youā€™re a returning user, fret not! Everything you gained from your journey has been saved and will be loaded.
This option starts up the main interface of the application.

Option: 5

Starting application...
Type 'return' to return to main menu

Option 6: Exit Application

Why would you exit Ha(ppy)Bit even before trying out the main functionalities?
If you insistā€¦ this option exits the application.

Option: 6

________________________________________________________________________________________________________________________
Thanks for using Ha(ppy)Bit, see you in a bit! (hehe)

"We are what we repeatedly do. Excellence, then, is not an act, but a habit."
Will Durant
________________________________________________________________________________________________________________________

1.2 Main Interface

Upon formally starting the application, you should see the following screen. (See Start Application if you are unsure how to get here)

==============================================================================
 _  _   __   ____  ____  _  _  ____  __  ____
/ )( \ / _\ (  _ \(  _ \( \/ )(  _ \(  )(_  _)
) __ (/    \ ) __/ ) __/ )  /  ) _ ( )(   )(
\_)(_/\_/\_/(__)  (__)  (__/  (____/(__) (__)     tracking habits made fun...
==============================================================================

Command:

Any keyboard input will appear after Command: . Here is where interaction between you and Ha(ppy)Bit takes place.

2. Using this Guide

We understand there may be a lot to take in from this user guide. Here are some things to take note which may make the guide more friendly and helpful.

2.1 Terminology

Name Description Example
Goal A long term achievement you wish to accomplish. Lose 5kg by Dec
Habit Checkpoints; small, actionable tasks to be done to achieve goal. Run 5km
Interval The frequency (in days) which you want the habit to recur. Run 5km every 7 days

A timeline of what a goal with three different habits could be. | Made with Canva

Goals and habits
Here we distinguish between goals and habits. Although they are commonly used words, the way we design Ha(ppy)Bit is tightly integral to the way we define them above. We would also like you to know that the purpose of habits is to break down daunting, colossal goals into easy, bite-sized habits; tasks that you can complete within a day or as defined by your interval.

Intervals
An interval is the window period given for each repetition of a habit. This implementation saves you the hassle of recording similar habits that occurs periodically. Here are three things to note:

  1. An interval length is not allowed to extend longer than your goal time frame. To explain with an example, a goal that starts and ends within a week is not allowed to have a habit with an interval longer than 7 days.
  2. One-off habits (hey, an oxymoron!) are habits that do not repeat. This is achieved by setting the interval as 0, rather than any positive integer.
  3. Recurring habits are habits that have an interval length of 1 or more day, but fulfill condition 1.

2.2 Icons

Unfamiliar symbols may confuse. Here is a comprehensive collection of all emojis and syntax we employ.

šŸ“ƒ Notes: important information you should take note of (especially if you encounter input errors)

āš  Warning: avoid doing the things mentioned here at all costs (unless youā€™re feeling lucky)

šŸ’” Pro-Tip! additional information that may make your tracking journey easier

šŸ˜€ ā†’ Used to show the developersā€™ exuberance!!!

šŸ‘ ā†’ Used to show the developersā€™ love and support for you.

3. Using Ha(ppy)Bit

Ha(ppy)Bit comes with some quirks that might need some time getting used to. To get you up to speed and warmed up with Ha(ppy)Bit, here are instructions and command formats to follow. šŸ‘

3.1 Instructions from Ha(ppy)Bit

You may have noticed the instructions Press enter to return to main menu..., Type 'return' to return to main menu, or Press enter ONCE to return to command mode... at the bottom of some responses from Ha(ppy)Bit. This is because Ha(ppy)Bit clears and refreshes the page after every command. Previously typed commands will also be cleared, so press the ā€œupā€ key on your keyboard to navigate through recently typed commands.

Do follow the instructions before typing anything, lest Ha(ppy)Bit does not register your input. On the topic of inputsā€¦

3.2 Command Format

Ha(ppy)Bit is very particular about your commands. You begin off with a ā€œcommandā€ word to tell Ha(ppy)Bit the exact action to carry out (See Command Summary for all actions). The actions are then followed up with ā€œparametersā€, which are information you wish to pass to Ha(ppy)Bit to carry out the actions with it. The various parameters are prefixed with different flags, which help Ha(ppy)Bit identify and distinguish the type of parameters.

A command could look like this: add n/Run 2.4km g/1 i/7. Where,
add is the command word,
Run 2.4km, 1, and 7 are parameters,
and n/, g/, and i/ are flags.

šŸ“ƒ Donā€™t worry if you typed the command wrongly! Helpful error messages will pop up to advise you on what to change. šŸ‘

Here are guidelines and tips for the command format:

4. Features

Below are the commands supported by the application. Each section describes the function of each command and its format.

4.1 Ask for Help: help

What did you say? Youā€™re not sure what the commands are? Relax, a help command exists.
This command displays a list of all possible commands. If an invalid command is typed, this command will be invoked by default.

Format: help

Output:

Here is the list of commands:
--------------------------------------------------------------------------------------------------------------
| Action                            | Format                                                                 | 
--------------------------------------------------------------------------------------------------------------
| open command list                 | help                                                                   | 
--------------------------------------------------------------------------------------------------------------
| set a goal                        | set n/<goal_name> { t/<goal_type> s/<start_date> } e/<end_date>        | 
--------------------------------------------------------------------------------------------------------------
| add a habit                       | add g/<goal_index> n/<habit_name> i/<interval>                         | 
--------------------------------------------------------------------------------------------------------------
| update a goal name/type/end date  | update g/<goal_index> [ n/<goal_name> t/<goal_type> e/<end_date> ]     | 
--------------------------------------------------------------------------------------------------------------
| change a habit name/interval      | change g/<goal_index> h/<habit_index> [ n/<habit_name> i/<interval> ]  | 
--------------------------------------------------------------------------------------------------------------
| list all goals                    | list                                                                   | 
--------------------------------------------------------------------------------------------------------------
| view all habits of a goal         | view g/<goal_index>                                                    | 
--------------------------------------------------------------------------------------------------------------
| remove a goal                     | remove g/<goal_index>                                                  | 
--------------------------------------------------------------------------------------------------------------
| delete a habit                    | delete g/<goal_index> h/<habit_index>                                  | 
--------------------------------------------------------------------------------------------------------------
| mark a habit as done              | done g/<goal_index> h/<habit_index>                                    | 
--------------------------------------------------------------------------------------------------------------
| return to start screen            | return                                                                 | 
--------------------------------------------------------------------------------------------------------------
| exit the application              | exit                                                                   | 
--------------------------------------------------------------------------------------------------------------
* Replace <> with relevant terms (Exp: <goal_name> --> goal 1)
* Items enclosed within { } are optional
* Items enclosed within [ ] need to have at least one of the parameters specified inside.
* Use 'list' and 'view' to check the goal and habit indexes respectively

Press enter ONCE to return to command mode...

4.2 Set a Goal: set

Sets a new goal for a long term achievement you wish to accomplish. Goals must have an end date while the goal type and start dates are optional (well, we wouldnā€™t want you to be procrastinating on your goals right?)

Format: set n/<goal_name> { t/<goal_type> s/<start_date> } e/<end_date>

Example:

Command 1: set n/Reduce spending s/29112021 e/29112022
Command 2: set n/Exercise more t/ex e/01012022
Command 3: set t/fd e/31122022 n/Become a vegetarian

Output 1: The goal '[DF] Reduce spending' has been added.
Output 2: The goal '[EX] Exercise more' has been added.
Output 3: The goal '[FD] Become a vegetarian' has been added.

āš  If more than 8 numbers are used for the date, it will be rejected as an invalid command.

4.3 List all Goals: list

Canā€™t remember what goals you have? Use this command to list all the goals that you have set. In addition, you get to view some useful statistics.

Format: list

Example:

Command: list

Output:

3 goal(s) currently being tracked:
----------------------------------------------------------------------------------------------------------------
| Index   | Name                 | Type      | Start Date   | End Date     | Habit Count   | Completion Rate   |
----------------------------------------------------------------------------------------------------------------
| 1       | Reduce spending      | Default   | 29-Nov-2021  | 29-Nov-2022  | 0             | Not Applicable    |
----------------------------------------------------------------------------------------------------------------
| 2       | Exercise more        | Exercise  | 12-Nov-2021  | 01-Jan-2022  | 0             | Not Applicable    |
----------------------------------------------------------------------------------------------------------------
| 3       | Become a vegetarian  | Food      | 12-Nov-2021  | 31-Dec-2022  | 0             | Not Applicable    |
----------------------------------------------------------------------------------------------------------------

šŸ“ƒ Goal index may change if a goal is deleted. e.g. deleting the goal Exercise more will cause the index of Become a vegetarian to change from 3 to 2.

4.4 Update a Goal: update

Updates a parameter of a goal specified by its index.
(To err is human. Thatā€™s why we have the update feature; designed to be more forgiving, when we have the occasional oopsies. šŸ‘ )

Format: update g/<goal_index> [ n/<goal_name> t/<goal_type> e/<end_date> ]

Example:
Command 1: update g/1 n/Read more
Command 2: update g/2 e/31122021
Command 3: update g/1 t/sd e/31012022

Output 1: The goal name 'Reduce spending' has been updated to 'Read more'.
Output 2: The goal end date of goal 'Exercise more' has been changed from '01-Jan-2022' to '31-Dec-2021'.
Output 3: The goal type 'Default' has been updated to 'Study'.
Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ā  The goal end date of goal 'Read more' has been changed from '29-Nov-2022' to '31-Jan-2022'.

šŸ’” Inputting multiple flags will allow you to update multiple attributes at the same time. Extra invalid flags will be ignored.

4.5 Remove a Goal: remove

Removes a goal specified by its index.
(Life gets us sometimes. Things donā€™t go as planned. But this isnā€™t calling it quits. Itā€™s admitting defeat today, but to return stronger to fight another time. We got ya fam.)

Format: remove g/<goal_index>

Example:

Command: remove g/1

Output:

________________________________________________________________________________________________________________________
The goal '[SD] Read more' has been removed.
________________________________________________________________________________________________________________________

šŸ“ƒ Goal index may change if a goal is deleted. Use the list command to check what the new goal indexes are.

4.6 Add a Habit: add

Adds a habit that is linked to a goal.
(Habits are meant to be easy and doable. Completing them over time, with consistent dedication, one of these habits will be the metaphorical straw that breaks the camelā€™s back. Your goals reached, without even pulling a muscle.)

Format: add n/<habit_name> g/<goal_index> i/<interval>

Example:
Command 1: add n/Run 2.4km g/1 i/7
Command 2: add g/1 i/1 n/Do 20 pushups
Command 3: add i/14 n/Learn a vegetarian dish g/2

Output 1: The habit 'Run 2.4km' has been added to goal '[EX] Exercise more'
Output 2: The habit 'Do 20 pushups' has been added to goal '[EX] Exercise more'
Output 3: The habit 'Learn a vegetarian dish' has been added to goal '[FD] Become a vegetarian'

šŸ“ƒ You should notice a list of habits to be done on the main interface whenever a new habit is added.

4.7 Change a Habit: change

Change and update the name and/or interval of a habit.

Format: change g/<goal_index> h/<habit_index> [ n/<habit_name> i/<interval> ]

Example:
Command 1: change g/2 h/1 i/7
Command 2: change n/Do 30 pushups h/2 g/1
Command 3: change g/1 h/1 n/Run 1.6km i/3

Output 1: The habit 'Learn a vegetarian dish' of goal 'Become a vegetarian' has its interval changed to '7'
Output 2: The habit 'Do 20 pushups' of goal 'Exercise more' has been changed to 'Do 30 pushups'
Output 3: The habit 'Run 2.4km' of goal 'Exercise more' has been changed to 'Run 1.6km'
Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ā  The habit 'Run 1.6km' of goal 'Exercise more' has its interval changed to '3'

šŸ’” Inputting multiple flags will allow you to update multiple attributes at the same time. Extra invalid flags will be ignored.

4.8 Complete a Habit: done

Mark a habit under a goal as done.
(Congratulations on the completed habitā€¦ for that cycle :P)

Format: done g/<goal_index> h/<habit_index>

Example:

Command: done g/1 h/1

Output:

________________________________________________________________________________________________________________________
The habit 'Run 1.6km' of goal '[EX] Exercise more' has been completed for 12112021 to 15112021.
The next interval will begin on 16112021
________________________________________________________________________________________________________________________

4.9 Delete a Habit: delete

Deletes a habit under a goal.
(This should be used as a last resort. Donā€™t give up, hang in there and make your habits stick.)

Format: delete g/<goal_index> h/<habit_index>

Example:

Command: delete g/1 h/2

Output:

________________________________________________________________________________________________________________________
The habit 'Do 30 pushups' of goal '[EX] Exercise more' has been deleted.
________________________________________________________________________________________________________________________

4.10 View all Habits: view

List all habits under a specific goal for a birdā€™s eye view on your goal.

Format: view g/<goal_index>

Example:

Command: view g/1

Output:

1 habit(s) currently being tracked for Exercise more:
-------------------------------------------------------------------------------------------------------
| Index   | Name       | Interval   | Completion   | Completed   | Remaining   | Expired   | Streak   |
-------------------------------------------------------------------------------------------------------
| 1       | Run 1.6km  | 3          | 5.56%        | 1           | 17          | 0         | 1        |
-------------------------------------------------------------------------------------------------------

4.11 Return to Start-Up: return

Return to the start-up interface.
(Where did that bring you? Back to the start.)

Format: return

Example:

Command: return

Output:

==============================================================================
 _  _   __   ____  ____  _  _  ____  __  ____
/ )( \ / _\ (  _ \(  _ \( \/ )(  _ \(  )(_  _)
) __ (/    \ ) __/ ) __/ )  /  ) _ ( )(   )(
\_)(_/\_/\_/(__)  (__)  (__/  (____/(__) (__)     tracking habits made fun...
==============================================================================

Howdy! Welcome to Ha(ppy)Bit!
Select from one of the following menu items:
    [1] About HappyBit
    [2] User Guide
    [3] Developer Guide
    [4] Demo Video
    [5] Start Application
    [6] Exit Application

Option:

4.12 Exit the Program: exit

Exit the program.
(Donā€™t stay on Ha(ppy)Bit too long. You have a life out there, go live it!)

āš  Make sure to use this command before exiting the program to ensure that your data is saved properly.

Format: exit

Example:

Command: exit

Output:

________________________________________________________________________________________________________________________
Thanks for using Ha(ppy)Bit, see you in a bit! (hehe)
"We are what we repeatedly do. Excellence, then, is not an act, but a habit."
 ā€” Will Durant
________________________________________________________________________________________________________________________

5. About Loading and Saving Data

Loading saved data:

Whenever you run the program, the program will automatically look for any saved data in the relative storage path, data/habits.txt.

šŸ“ƒ The storage file will be set to read-only. This is such that users do not accidentally edit the data stored in the storage file and corrupt it.

Saving data:

6. FAQ

Q: How do I transfer my data to another computer?
A: You can just copy-paste the habits.txt in the path data/habits.txt file from one computer to another and all your data will be there!

šŸ’” Pro Tip! Have your home folder reside in a cloud storage service (OneDrive, iCloud, etc.) to sync your data between devices.

Q: Why are our commands synonyms of each other - remove and delete, set and add, etc.?
A: Wellā€¦ we need a way to distinguish between goal and habit commands, and we want to avoid using command words such as gdelete and hdelete for goal and habit deletion respectively.

Q: Why do I have to hit ā€œenterā€ every time I want to key in a new command?
A: We want you to confirm that you have called the correct command, or understand the error message after it pops up before the screen is cleared.

Q: Are there any books you recommend?
A: Data Structures and Algorithms in Java ā†’ here

7. Command Summary

Action Command Format Example
Get help help help
Set goal set n/<goal_name> { t/<goal_type> s/<start_date> } e/<end_date> set n/Reduce spending e/31122022
List goals list list
Update goal update g/<goal_index> [ n/<goal_name> t/<goal_type> e/<end_date> ] update g/1 n/Decrease Spending
Remove goal remove g/<goal_index> remove g/1
Add habit add g/<goal_index> n/<habit_name> i/<interval> add n/Don't drink BBT g/1 i/3
Change habit change g/<goal_index> h/<habit_index> [ n/<habit_name> i/<interval> ] change g/1 h/2 i/3
Done habit done g/<goal_index> h/<habit_index> done g/1 h/1
Delete habit delete g/<goal_index> h/<habit_index> delete g/1 h/1
View habits view g/<goal_index> view g/1
Return to Start-Up return return
Exit Program exit exit

Visit our Main Page to find more useful links.

Interested in what makes Ha(ppy)Bit tick? Visit our GitHub website to explore and geek out on. What did you say? An explanation for the inner workings? Okay, okay. Here is our Developer Guide.

What now? You prefer a guided walkthrough because of the digital age and the attention economy today where corporations bombard your with enticing information to profit off your valuable attention has shortened your attention span tremendously such that you donā€™t have the patience nor focus to sit down and refer to our User Guide which we have painstakingly written to be comprehensive for users like you in order to provide a better user experience to a new app they may be unfamiliar with? Fine! We get it! We have prepared a Demo Video for you, the guided walkthrough you oh so desired.

Watch our wacky Demo Video bloopers here!