Appearance
Flashcards App
Due Date
Submit to Gradescope by Sat, Feb 18, 11:00 PM.
For your homework, you will be working individually to create a flashcards app. The main purpose of this assignment is to allow you to create a simple CRUD full-stack software application from the ground up. You are free to use any software stack that you would like as well as develop it for any platform. There are however some general requirements for the project.
INFO
The rubric for this homework is provided in the Rubrics Appendix.
Functional Requirements
To implement the following requirements, you should ideally use client-server architecture, although it is not required to do so.
Must-have
The absolute MUST. These features are vital.
- A user must be able to create flashcards.
- A user must be able to read flashcards.
- A user must be able to update existing flashcards.
- A user must be able to remove flashcards.
- The system must be able to persist the flashcards. (i.e., you must have a database)
Should-Have
Essential but not vital.
After you have implemented all of the MUST-HAVE features, you can start on the followings:
- A user should be able to create decks.
- A user should be able to add flashcards to a deck.
- A user should be able to view decks and the flashcards therein.
Here are some additional features that are nice to have but not required for this homework.
- A user should be able to update a deck's metadata.
- A user should be able to delete a deck.
- A user should be able to move a card from one deck to another.
Could-Have
Could be left out but still is of significance.
For this requirement, you have the option of either implementing authentication or one nice-to-have feature of your choosing.
For authentication, you don't have to implement anything too fancy and are free to use services like Firebase Auth or Auth0. However, if you are implementing this feature, please make sure that you are following proper practices and are not just implementing front-end pages or routes. If you have questions on how to do this properly please feel free to ask the teaching staff.
As far as nice-to-haves go there is a wide variety of things you can do! The only requirement is that the feature is not trivially simple like adding a description attribute to a deck. The feature must add some functionality to the application and must not purely be cosmetic. Some potential nice-to-have user stories:
- As a user, I want to be able to track my progress and stay motivated, so that I can stay on top of my studying.
- As a user, I want to be able to customize my flashcards, so that I can personalize my studying experience.
- As a user, I want to be able to share my flashcards with other users, so that I can collaborate with others.
- As a user, I want to be able to use utilize proven learning strategies to optimize my studying, so that I can make the most of my time.
Non-Functional Requirements
- Your code must be in the GitHub repository that was given to you for Classwork-1.
- You are not required to deploy your application. However, it must be able to run and function locally.
- You must include detailed instructions in your repository
README
document about how to get your application running in a development environment. - In the
README
, you should also document how your code works, what stack it is using, and any difficulties that you encountered or features that are not implemented. It should also be comprehensive and document the basic functions of your app. - Following good coding practices are a must. Please make sure to modularize your code and write readable code.
- As a bonus, you are free to develop unit tests to show us what you know.