From c9512353cf318d4e85bb8ed6400d9ea07fcaf5e2 Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 26 Mar 2025 10:40:32 +0000 Subject: [PATCH] [report]: Use 'report' doctype --- report/report.pdf | Bin 27278 -> 28989 bytes report/report.tex | 92 +++++++++++++++++++++++----------------------- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/report/report.pdf b/report/report.pdf index 4c9808a9c49249e480c2858fab550480f6cf6b3b..77731f9fff6d819f3cdf7197759f1215f2860e64 100644 GIT binary patch delta 20078 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 delta 18617 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

??*5hLMw=h`@mck@v8U;;r3LLqEl?0L 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 diff --git a/report/report.tex b/report/report.tex index 2497897..5666541 100644 --- a/report/report.tex +++ b/report/report.tex @@ -1,5 +1,5 @@ %! TeX program = lualatex -\documentclass[a4paper,11pt]{article} +\documentclass[a4paper,11pt]{report} % packages \usepackage{censor} \StopCensoring @@ -99,53 +99,53 @@ % yap about mental models with regards to how filters work % trying to make the application work the same way the user expects it to work +\chapter{Introduction} +\section{Project Overview} +\subsection{Problem Statement} +\subsection{Background} +\section{Document Structure} + +\chapter{Research} \section{Introduction} -\subsection{Project Overview} -\subsubsection{Problem Statement} -\subsubsection{Background} -\subsection{Document Structure} - -\section{Research} -\subsection{Introduction} -\subsection{Data Sources} -\subsection{Similar Services} -\subsection{Technologies} -\subsubsection{Frontend Technologies} -\subsubsection{Backend Technologies} -\subsubsection{Project Management Technologies} -\subsection{Conclusion} - -\section{Requirements} -\subsection{Functional Requirements} -\subsection{Non-Functional Requirements} -\subsection{Use Cases} -\subsection{Constraints} - -\section{Design} -\subsection{Backend Design} -\subsubsection{Database Design} -\subsubsection{API Design} -\subsection{Frontend Design} - -\section{Development} -\subsection{Introduction} -\subsection{Backend Development} -\subsection{Frontend Development} -\subsection{Development Considerations} - -\section{Code Quality} -\subsection{Introduction} -\subsection{Clean Coding Principles} -\subsection{Unit Testing} -\subsection{CI/CD} -\subsubsection{Continuous Integration} -\subsubsection{Continuous Deployment} - +\section{Data Sources} +\section{Similar Services} +\section{Technologies} +\subsection{Frontend Technologies} +\subsection{Backend Technologies} +\subsection{Project Management Technologies} \section{Conclusion} -\subsection{Evaluation} -\subsection{Reflection on Requirements} -\subsection{Reflection on Skill Development} -\subsection{Potential Future Work} + +\chapter{Requirements} +\section{Functional Requirements} +\section{Non-Functional Requirements} +\section{Use Cases} +\section{Constraints} + +\chapter{Design} +\section{Backend Design} +\subsection{Database Design} +\subsection{API Design} +\section{Frontend Design} + +\chapter{Development} +\section{Introduction} +\section{Backend Development} +\section{Frontend Development} +\section{Development Considerations} + +\chapter{Code Quality} +\section{Introduction} +\section{Clean Coding Principles} +\section{Unit Testing} +\section{CI/CD} +\subsection{Continuous Integration} +\subsection{Continuous Deployment} + +\chapter{Conclusion} +\section{Evaluation} +\section{Reflection on Requirements} +\section{Reflection on Skill Development} +\section{Potential Future Work}