\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}