By: Flashy Since: Mar 2018 Licence: MIT

logo

1. Introduction

Flashy — lightning fast flashcard management.

What are flashcards? Traditional flashcards are physical cards, used to aid in memorization. Each card has two sides: the front contains the question prompt, and the back contains the answer prompt.

Flashy is an application to help users organise their flashcards to help them memorise better. Physical flashcards are bulky and hard to search for. They are also difficult to organise. Flashy is the result of our desire to eliminate these challenges that arise from the use of conventional flashcards. Flashy helps you organise your flashcards with a powerful tagging system. Flashy is able to retrieve all flashcards of a given tag in a flash.

As students, we understand that planning out studying sessions is hard. Therefore, we have also built into Flashy an intelligent scheduler, so you can focus on studying, instead of planning your study sessions. Our scheduler uses spaced repetition, which has been shown to be effective for studying.

Spaced Repetition embodies the idea behind the phrase "don’t burn the midnight oil". Spreading out study sessions is shown to be more effective than cramming multiple sessions in a single night. To learn more, head over to https://en.wikipedia.org/wiki/Spaced_repetition

Although Flashy was built for the language learner in mind, it should prove useful for any student, as new studying tool in their arsenal.

Flashy is optimized for those who prefer to work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). Fast typists will find that Flashy can get their flashcard management tasks done faster than traditional GUI apps.

Interested? Jump to the Section 3 to get started.

2. How to Use This Guide

This document is designed for users with varying levels of technical proficiency. Most portions of this guide can be read standalone, with occasional references.

To aid in your understanding of our product, we have devised various scenario-based uses, along with detailed instructions. So do not be afraid to read the manual!

We use admonition blocks to draw your attention to blocks of information. Here are the icons used and their meanings:

Information that is not crucial, but is useful to know.
Snippets of information that can be very helpful.
Important information that should not be skimmed over.
Important information about our product, where potentially issues may occur.

3. Quick Start

We value our time as much as yours. Here is what you need to get up and running.

3.1. Installation

  1. Ensure you have Java version 1.8.0_60 or later installed in your computer.

    Having any Java 8 version is not enough.
    This app will not work with earlier versions of Java 8.
  2. Download the latest flashy.jar here.

  3. Copy the file to the desktop.

  4. Double-click the file to start the Flashy. The GUI should appear in a few seconds.

    Ui
    Typing help and pressing Enter will open the help window. Refer to Section 5 for details of each command.

These are some of the more common commands that you’ll encounter in Flashy. Feel free to try them out!

  1. Use addc f/Front b/Back t/tag1 t/tag2 to add card.

    1. Put question in Front and answer in Back.

    2. Tag it with something meaningful like t/Mathematics

  2. Use list to list all cards

  3. Select a card with selectc 1 or by clicking on it.

  4. Answer a card with answer c/2

4. Terminology

In Flashy, there are three different kinds of flashcards:

  1. Normal flashcards: Normal flashcards are simple question and answer cards with the question being at the front and answer at the back.

  2. Multiple Choice Question flashcards: Fill-in-the-blanks flashcards are similar to normal flashcards, just that the question has blanks to prompt the users, and the back of the card has answers to the blanks.

  3. Fill-in-the-blanks flashcards: MCQ flashcards allows you to provide different options as the answer, similar to an MCQ question, and the back will display the correct option.

In Flashy, flashcards are organised with tags. Tags are used to filter the card list to a relevant subject. For example, a student studying multiple subjects can create tags for each subject. Cards can also have multiple tags.

5. Features

Here are some of Flashy’s features to help you with your work!

5.1. Reading the Command Format

This section will teach you how to write your own commands to interface with our application.

Let us walk you through the notation with the addc command:

addc f/FRONT b/BACK [t/TAG]…
  • Words in UPPER_CASE are parameters you supply. These are often user-generated content.

In addc f/FRONT, FRONT is a parameter which can be used as addc f/ What’s the best flashcard application? b/Flashy.

  • Items in square brackets are optional. In this example, tags are

f/FRONT b/BACK [t/TAG]… can be used as f/Am I awesome? b/Yes! t/selfhelp or as f/Am I awesome? /Yes!.

  • Items with after them can be used multiple times including zero times. In this example, multiple tags can be added to the card.

[t/TAG]… can be used as   (i.e. 0 times), t/biology, t/biology t/midterms2018.

  • Parameters can be specified in any order. In this example, addc f/front b/back and addc b/back f/front are equivalent.

To access this help guide at any time, type help into the command box and press Enter.

5.2. Managing Cards

The very first step to using Flashy is to populate Flashy with flashcards. After which we will proceed to use it to increase your mental capabilities. This section contains all the information you need to add, select, edit cards and more.

5.2.1. Adding a flashcard: addc

You can add flashcards to Flashy. In Flashy, we support the feature of adding three different types of flashcards: normal, MCQ or fill blanks.
To add a normal flashcard, use addc f/FRONT b/BACK [t/TAGS]…​
To add a fill blanks card, the input is the same as that for a normal card, the only difference is the presence of blanks _ in the f/FRONT parameter.
To add a MCQ flashcard, use addc f/FRONT o/OPTION …​ b/BACK [t/TAGS] …​

For a MCQ flashcard, ensure that the parameter for b/ falls between 1 the number of options inclusive.
Note that a blank is denoted by a single underscore _.
For a fill blanks flashcard, ensure that the parameter for b/ should have the same number of answers (separated by ,) as there are blanks.

Examples:

  • addc f/What is the greatest flashcard application? b/Flashy t/Trivia
    Adds a normal flashcard with the front and back of the first card being What is the greatest flashcard application? and Flashy respectively, as well as tagging it as Trivia.

  • addc f/A square is a polygon with _ side meeting at _ angles. b/equal, right
    Adds a fill-blanks card with the front and back of the card being A square is a polygon with _ side meeting at _ angles. and equal, right respectively.

  • addc f/Which continent is Singapore in? o/Asia o/Africa o/Australia o/South America b/1
    Adds a MCQ-type flashcard with the front being Which continent is Singapore in?, options includes Asia, Africa, Australia and South America and back being 1.

A flashcard can have any number of tags (including 0).

5.2.2. Selecting a flashcard: selectc

You can select a card that is currently being listed with the selectc command.
Format: selectc INDEX

Figure 1 shows where the index of a card can be found at:

cardIndex
Figure 1. Diagram indicating location of the displayed index

Examples:

  • selectc 2
    Selects the 2nd card in the list.

  • select 1
    Selects the 1st card in the list.

5.2.3. Editing a flashcard : editc

You can edit an existing flashcard currently stored in Flashy. This comes in handy if you make a mistake when adding a card.
Format: editc INDEX [f/FRONT] [o/OPTION] .. [b/BACK] [+t/TAG]… [-t/TAG]…

  • Edits the flashcard at the specified INDEX. The index refers to the index number shown in the last card listing. The index must be a positive integer 1, 2, 3, …​

  • Existing values will be updated to the input values.

  • This only applies to parameters which you have supplied. If, for example, no parameters for f/ are supplied, the front of the card would not be edited.

A particular type of flashcard (normal, MCQ or fill blanks) can only be edited to the same type of flashcard (e.g. you cannot edit a normal flashcard to a MCQ flashcard).
When removing a tag from a flashcard, ensure that the tag exists and the flashcard is associated with that tag.
Ensure that the constraints on flashcard is not violated when editing. For constraints, refer to the Caution warning under Section 5.2.2.

Examples:

  • editc 1 f/What is the greatest flashcard application? b/Flashy +t/Trivia
    Edits the front and back of the 1st flashcard to be What is the greatest flashcard application? and Flashy respectively, and also add a Trivia tag to it.

  • editc 2 b/Lee Hsien Loong -t/Trivia
    Edits the back of the 2nd flashcard to be Lee Hsien Loong, and remove its tag Trivia.

  • editc 1 o/Asia o/Australia o/Africa
    Edits the options of the 1st flashcard to be Asia, Australia and Africa. (Only if that flashcard is a MCQ flashcard).

5.2.4. Deleting a flashcard : deletec

You can delete cards which you no use for, this helps to declutter your card bank.
Format: deletec INDEX

  • Deletes the card at the specified INDEX.

  • The index refers to the index number shown in the most recent listing.

  • The index must be a positive integer 1, 2, 3, …​

If a tag no longer has associated flashcards, the tag will also be removed. Don’t be alarmed if some of your tags are also removed in the process!

Examples:

deletec 2
Deletes the 2nd flashcard in the list.

5.3. Managing Tags

Tags allow you to filter for cards that you want to quicky find that needle in the haystack. For example you might want to search for cards that are tagged with Mathematics, this section can help you with that.

5.3.1. Selecting a tag : select

Selects the tag identified by the index number. This will show only flashcards with the tag selected.
Format: select INDEX

  • The index refers to the index number shown in the most recent listing.

  • The index must be a positive integer 1, 2, 3, …​

Examples:

  • select 2
    Selects the 2nd tag in the list.

  • select 1
    Selects the 1st tag in the list.

5.3.2. Filtering tags: find

Filters the tag list to contain those that match the search terms.
Format: find KEYWORD [MORE_KEYWORDS]

The search is case-insensitive, but finds exact partial matches to the tag name.

Examples:

  • find biology will show only tags matching the word biology. This will match Biology, biology, biOlogy, and Biology Midterms, but not bio, or chemistry.

5.3.3. Clearing filters: list

The usage of list is 2-fold:

  1. list allows you to see all your flashcards and tags by clearing all filters.

  2. list can also be invoked with an additional flag as list -t, to list all cards without tags. This allows you to reorganize otherwise cards that are otherwise inaccessible.

Format: list [-t]

Examples:

  • list
    Shows all tags and cards.

  • list -t
    Shows all tags, but shows only cards without tags.

5.3.4. Editing a tag : edit

Updates an existing tag to the specified values.
Format: edit INDEX n/TAG c/COLOR

  • Edits the tag at the specified INDEX. The index refers to the index number shown in the current tag listing. The index must be a positive integer 1, 2, 3, …​

  • Color must be a string of length 6 specifying a hex color code. For example, the color white is represented as FFFFFF.

  • The existing name of the tag will be replaced with the value that was entered.

Examples:

  • edit 1 n/French
    Changes the name of the first tag in the list to French.

5.3.5. Deleting a Tag: delete

Deletes an existing tag. This will remove the tag from all cards that have the tag.

Examples:

  • delete 1 deletes the first visible tag.

  • delete 2 deletes the second visible tag.

5.4. Using flashcards

After adding and managing your flashcards, its time to get your A+! This section will teach you how to let Flashy’s intelligent scheduling algorithm prompt you the best time to study!

5.4.1. Showing a flashcard : showdue

To study effectively, you have to know which cards are more worth it to read first. Luckily Flashy’s intelligent scheduler takes care of these things for you. showdue helps you filter out cards that are due by a certain date.

These dates are usually automatically scheduled by the Spaced Repetiton algorithm.
You do not have to worry about scheduling yourself as Flashy will do it for you!
But you could manually do it if you want to, take a look at the Schedule command.

Format: showdue d/DAY m/MONTH y/YEAR

showdue can be used without any options, this will just show the flashcards due by today.
You can omit some parameters in showdue. suppose today is 13/04/2018, parameters that you omit would be implicitly assumed to be the current day, month or year. If you key in showdue d/28 without typing in m/04 y/2018, the month and year are assumed to be the current month.
This would show you card due before 28/04/2018.

Examples:

  • showdue d/28 m/04 y/2018
    Show cards due before 28/04/2018

  • showdue d/28
    Suppose today is 13/04/2018, although m/04 y/2018 is not typed, they are implicitly assumed to be the current month and year.

5.4.2. Answering flashcards: answer

After using showdue to show a list of flashcards, you have to select a card to answer. You can select a card with the selectc command. You can also simply click on the flashcard.

answer uses our Spaced Repetition algorithm to intelligently schedule the card to the right time in the future for review.

Format: answer c/CONFIDENCE_LEVEL

CONFIDENCE_LEVEL can only be 0, 1 or 2.
Card must be selected first before answering. To learn how to select a card, take a look at selectc
What does CONFIDENCE_LEVEL mean?
  • answer c/0 Again
    I don’t know the answer to this card. Card will then be requeued into the same session again.

  • answer c/1 Passable
    I think I know the answer, but need more practice. Card will then be scheduled for the near future. To get more practice.

  • answer c/2 Easy A+
    Card will then be scheduled further into the future. Other cards need more review than this one.

This gives feedback to the scheduler algorithm to automatically schedule the card for review at a time when it thinks you are likely to forget it.

This design is based off the well known forgetting curve, you can read more about it here https://en.wikipedia.org/wiki/Forgetting_curve

5.4.3. Show flashcards for review: Schedule

Using the answer command to answer a flashcard will automatically schedule the card based on our spaced repetition algorithm. However, if you want to manually schedule a card for review by a certain date, you can do so as well.

Format: schedule d/DAY m/MONTH y/YEAR

Card must be selected first before scheduling. To learn how to select a card, take a look at selectc
schedule can be used without any options, this will just schedule the cards for today.
You can omit some parameters in schedule. suppose today is 13/04/2018, parameters that you omit would be implicitly assumed to be the current day, month or year. If you key in schedule d/28 without typing in m/04 y/2018, the month and year are assumed to be the current month.
This would schedule the card for 28/04/2018.

Examples:

  • schedule d/28 m/04 y/2018
    Schedule card for 28/04/2018

  • schedule d/28
    Suppose today is 13/04/2018, although m/04 y/2018 is not typed, they are implicitly assumed to be the current month and year.

5.5. Quality-of-Life features

Flashy has many features to speed up your workflow and make your experience as pain-free as possible.

5.5.1. Autocompletion

Instead of memorising the parameters of all the commands, you can instruct Flashy to automatically fill in the relevant parameters for you! After typing a valid command, simply press TAB and let Flashy handle the rest.

5.5.2. Clearing all data : clear

Rather than manually deleting cards and tags, Flashy is able to clear all of its data for you.
Format: clear

This command will instruct Flashy to delete all tags and flashcards. Use this command with caution!

5.5.3. Listing entered commands : history

If you lose track of the actions you have made at any point in time, you can ask Flashy to list them for you in reverse chronological order.
Format: history

You can also press the and arrows to display the previous and next input respectively in the command box.

5.5.4. Undo and Redo

Flashy does not come built in with an eraser. To compensate for that, some commands support undoing and redoing. The commands are add, addc, addm, edit, editc, editm, delete, deletec, and clear.

Undoing previous command : undo

You can restore the state of Flashy’s card bank to its preious state before an undoable command was executed.
Format: undo

Undoable commands: those commands that modify the card bank’s content (add, delete, edit and clear).

Examples:

  • delete 1
    list
    undo (reverses the delete 1 command)

  • select 1
    list
    undo
    The undo command fails as there are no undoable commands executed previously.

  • delete 1
    clear
    undo (reverses the clear command)
    undo (reverses the delete 1 command)

Redoing the previously undone command : redo

Flashy can also revert any undo commands made by mistake!
Format: redo

Examples:

  • delete 1
    undo (reverses the delete 1 command)
    redo (reapplies the delete 1 command)

  • delete 1
    redo
    The redo command fails as there are no undo commands executed previously.

  • delete 1
    clear
    undo (reverses the clear command)
    undo (reverses the delete 1 command)
    redo (reapplies the delete 1 command)
    redo (reapplies the clear command)

5.5.5. Exiting the program : exit or quit

Once you are confident in acing that exam, don’t forget to power down Flashy! When this is done, Flashy will save all changes made to its card bank before gracefully shutting down.
Format: exit or quit

5.6. Managing User Preferences

5.6.1. Changing the theme : theme

Flashy knows that not all study sessions occur during the day. When carrying out all-nighters, remember that you can always switch the theme of Flashy’s interface to match the lighting condition of your surroundings!
Format: theme t/THEME

Flashy remembers your most recently used theme and will load it the next time you come back.

Examples:

  • theme t/light

  • theme t/dark

5.7. Saving the data

All data saved in Flashy’s card bank is saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.

6. FAQ

Q: How do I transfer my data to another computer?
A: Install Flashy in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Flashy folder.

Q: Help! I cannot find the save button!
A: Fret not, Flashy automatically saves your data after any changes are made.

Q: Why are there 'c' variants of certain commands? What do they stand for? How do I differentiate them?
A: We added a 'c' suffix to commands that have both tag and flashcard variants to help you distinguish one from the other. For example, the select command selects a tag, whereas the selectc command selects a flashcard.

Q: I added a card, but I cannot find it!
A: You probably created a flashcard without a tag. You can retrieve such flashcards with the list -t command.

7. Command Summary

7.1. Cards

Function Command Example

Show help screen

help

help

List all flashcards and tags

list

list

List all flashcards without tags

list -t

list -t

Add flashcard

addc f/FRONT [o/OPTION] …​ b/BACK [t/TAG]

addc f/What is the best flashcard application? b/Flashy! t/flashy

addc f/How many legs does an insect have? o/4 o/5 o/6 o/7 b/3

addc f/A square is polygon with _ sides meeting at _ angles. b/equal, right

Edit flashcard

editc [f/FRONT] [o/OPTION] .. [b/BACK] [+t/TAG] [-t/TAG]

editc f/When is National Day in Singapore?

editc o/Asia o/Australia o/Africa b/3 +t/Trivia

Show flashcards due by a certain date

showdue d/DAY m/MONTH y/YEAR

showdue d/14 m/4 y/2018

showdue d/14

showdue

Reveal answer to flashcard

selectc INDEX

selectc 1

Answer selected flashcard

answer c/CONFIDENCE_LEVEL

answer c/0

Schedule selected flashcard for a certain date

schedule d/DAY m/MONTH y/YEAR

schedule d/14 m/4 y/2018

schedule d/14

schedule

7.2. Tags

Function

Command

Example

Select tag

select INDEX

select 1

Filter tags

find KEYWORD [MORE_KEYWORDS]

find Biology Chemistry

Edit tag

edit INDEX [t/TAG]

edit 1 t/German

Delete tag

delete INDEX

delete 3

7.3. Others

Function Command Example

Undo a command

undo

undo

Redo a command

redo

redo

Clear contents

clear

clear

Change Theme

theme t/THEME

theme t/light