1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
|
\documentclass[12pt]{article}
\usepackage{url}
\usepackage{setspace}
\usepackage[superscript]{cite}
\usepackage{graphicx}
\usepackage[normalem]{ulem}
\graphicspath{ {Figures/} }
\usepackage{caption}
\usepackage{cite}
\usepackage{indentfirst}
\usepackage{float}
\usepackage{subcaption}
\usepackage{amsmath}
\textwidth=6.5in
\oddsidemargin=0.0in
\usepackage{listings}
\usepackage{listings}
\usepackage{fancyhdr}
\usepackage{longtable}
\usepackage[table]{xcolor}
\pagestyle{fancy}
\fancyhf{}
\lhead{Strengthy}
\rhead{Page \thepage}
\usepackage{color}
\usepackage{hyperref}
\hypersetup{
colorlinks=true,
citecolor=black,
linktoc=all,
linkcolor=black,
}
\begin{document}
\begin{titlepage}
\newcommand{\HRule}{\rule{\linewidth}{0.5mm}}
\center
\textsc{\LARGE Missouri State University\\~\\Department computer Science}\\[1.0cm]
\HRule \\[0.4cm]
{ \huge \bfseries Strengthy}\\[0.4cm]
% change this \/
{ \large A Weightlifting tracking webapp}\\[0.4cm]
\HRule \\[1.5cm]
\begin{minipage}{0.4\textwidth}
\begin{flushleft} \large
Dylan Bolger \\ Hayden Pope
\end{flushleft}
\end{minipage}
~
\begin{minipage}{0.4\textwidth}
\begin{flushright} \large
Client Info \\
Dr. Mohammed Y. Belkhouche\\
\end{flushright}
\end{minipage}\\[2cm]
{\large \today}\\[2cm]
\end{titlepage}
\newpage
%-----------------------------------------------------------------------
\tableofcontents
\newpage
%----------------------------------------------------------------------
%-----------------------------------------------------------------------------
\section{Project Description}
\subsection{Proposal}
Our proposal is to develop a web application to track weightlifting sessions, progress, and statistics. This web-app will allow users to create personal accounts to track their information. We will allow the user to upload their data from days at the gym and be able to watch their progress as they continue to go to the gym. It will also show useful calculations, such as percentages of your 1RM (the most weight you can endure in one rep). Statistics like progress prediction of the user and analysis will be included. Users will also be able to create their own workout plans, or routines. The routines will suggest values in order for the user to make meaningful progression at the gym. Users can also record their weight.
\subsection{Stack}
The web application will be developed in Python using the Flask framework. A database will be used to store user information, likely SQLite. Graphs displayed to the user will be rendered using chart.js.
\section{Project Requirements}
\subsection{Web Application Framework}
\begin{description}
\item[Description] The entire application will be running on a web server that can handle requests to certain urls and respond to them with html pages.
\item[Rational] The web as an interface for users to interact with the application makes it portable and easy to use for most users.
\item[Inputs] HTTP requests
\item[Outputs] Rendered HTML pages
\item[Dependencies] The Flask framework in Python.
\end{description}
\subsection{User Account Management}
\begin{description}
\item[Description] Users will be able to create their own account based on a username, email and a password combination. The email will be validated using the input field but not used during creation to verify the user's email. Users will be able to login to said account and view their recorded data and other information provided further in detail below. Users can also delete all data and their account from the databases storing information they have in the webapp. Users can also edit their password in order to change it after its been set - emails and usernames cannot be changed after account creation.
\item[Rational] Account management is needed so that the system can support more than one user, and access their data independently
\item[Inputs] A username, password, and email. Username and email must be unique.
\item[Outputs] Username, password hash, and email will be stored in the database.
\item[Dependencies] The web application
\end{description}
\subsection{Homepage}
\begin{description}
\item[Description] Users will land on a homepage that outlines what Strengthy is all about. This will show images of fitness, and a bold description of what the application can do. This is expected to be efficient and speedy for users to enter on both desktop and on the mobile device.
\item[Rational] New users need to learn what the application is, and why they might be interested in using it.
\item[Inputs] Login State from User Account Management
\item[Outputs] A HTML Page as described above
\item[Dependencies] User Account Management
\end{description}
\subsection{Homepage (Logged In)}
\begin{description}
\item[Description] When a user is logged in, they will be presented with a homepage suggesting to create a goal, view predictions, view past records, and record a new workout.
\item[Rational] New users need to learn what the application is, and why they might be interested in using it.
\item[Inputs] Login State from User Account Management
\item[Outputs] A HTML Page as described above
\item[Dependencies] User Account Management
\end{description}
\subsection{Workout Creation}
\begin{description}
\item[Description] Users will be able to create new workouts. A workout consists of a set of exercises. Users will be able to enter a list of exercises into a form, and save them to their account. Users can also specify if a exercise is rep based (ex bench press), or time based (ex sprinting)
\item[Rational] Workouts will be accessed when the user wants to record a session.
\item[Inputs] List of exercises from form.
\item[Outputs] Workout will be saved to a database.
\item[Dependencies] User account management, user will need to be logged in
\end{description}
\subsection{Workout Recording}
\begin{description}
\item[Description] Users will be able to record while they are currently doing a workout. Exercises will appear in an interface in the order specified when the workout was created. If an exercise is time based, the user will be able to start and stop a timer. If the exercise is rep based, a user will be able to enter the number of reps they did, and continue to another set or continue to the next exercise in the workout.
\item[Rational] Users need to be able to record workouts to save data, and have access to predictions
\item[Inputs] Data entry from user during workout untill completion or logout.
\item[Outputs] Data will be saved to a database.
\item[Dependencies] User account management, user will need to be logged in
\end{description}
\subsection{Workout Routines}
\begin{description}
\item[Description] Users will be able to establish routines, which is a set of workouts that will be completed for each day of the week.
\item[Rational] Routines will allow the user to quickly access which workout they will be doing that day.
\item[Inputs] List of exercises for each day entered by user in form
\item[Outputs] Routines will be saved to a database
\item[Dependencies] User account management, user will need to be logged in
% TODO add routines to homepage
%When viewing their information, they will see figures based on linear or exponential regressions information that describes where they can expect to be by the time they set their goal.
\item[2.3 - Goal Setting]
Goal setting is a fundamental piece to Strengthy. Strengthy will request a user provides a goal in order to get a prediction model being built based on what the user expects to be able to accomplish by a specific date.
\end{description}
\begingroup
\renewcommand{\section}[2]{}
\begin{thebibliography}{10}
\bigskip
\end{thebibliography}
\endgroup
\end{document}
|