\section{Requirements} Requirements are critical for measuring the success of the project. They are both the team's guidelines for the project and determine what users can expect from the product. \vspace{2mm} Requirements will be divided into two main parts, those being functional and non-functional requirements. Functional requirements define what the system should do, whereas non-functional requirements define how the system should perform \cite{geeksforgeeks_functional_nonfunctional_requirements}. Beyond that, functional/non-functional requirements will both be split into 4 subcategories. "Must have", "Should have", "Could have" and "Will not have" requirements. \subsection{Functional Requirements} \subsubsection{Must Have} \begin{itemize} \item[FR1:] Users must be able to create, edit, delete and view subjects \item[FR2:] Users must be able to create, edit, delete and view assignments \item[FR3:] Users must be able to create, edit, delete and view tasks \item[FR4:] Users must be able to start and cancel timed study sessions \item[FR5:] Users must be prompted to take breaks after timed study sessions \item[FR6:] The app must connect a study session to a specific task \item[FR7:] Subjects, assignments, tasks and study sessions must persist between app instances to avoid losing data \item[FR8:] Tracking of studying progress \end{itemize} \subsubsection{Should Have} \begin{itemize} \item[FR9:] Ability to set assignments and tasks as completed/not completed \item[FR10:] Ability to set subjects as active/inactive \item[FR11:] Notifications for important events \item[FR12:] Users should be able to cancel active study session \end{itemize} \subsubsection{Could Have} \begin{itemize} \item[FR13:] Authentication could be set up to allow for cross device persistence and greater safety \item[FR14:] Users could be able to customize break and study session durations \item[FR15:] Users could be able to pause study sessions \end{itemize} \subsubsection{Will Not Have} \begin{itemize} \item[FR-W1:] Study groups will not be included, as this was deemed too large in scope for the simple design philosophy of the project \item[FR-W2:] Calendar integration will not be included \item[FR-W4:] Advanced analytics will not be included \end{itemize} \subsection{Non-Functional Requirements} \subsubsection{Must Have} \begin{itemize} \item[NFR1:] The project must have a functional UI where elements do not overlap and do not become unreachable \item[NFR2:] The UI must be easy to understand / low friction \item[NFR3:] Project must be open source on GitHub \item[NFR4:] Simple navigation between screens \item[NFR5:] Timer must be reliable at tracking time during study sessions and breaks \end{itemize} \subsubsection{Should Have} \begin{itemize} \item[NFR6:] Loading states between different pages being rendered \item[NFR7:] Page not found / error pages if something were to go wrong during interaction with, for example storage/database \item[NFR8:] A custom UI style \item[NFR9:] App should be prepped and ready for android deployment, and should be published on the Google Play Store if time allows for it \end{itemize} \subsubsection{Could Have} \begin{itemize} \item[NFR10:] Display daily motivational quotes to encourage users to study \end{itemize} \subsubsection{Will Not Have} \begin{itemize} \item[NFR-W1:] Advanced animations \item[NFR-W2:] Be published on App Store \end{itemize}