\documentclass[a4paper, 11pt]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{lmodern}
\usepackage{enumitem}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\PassOptionsToPackage{hyphens}{url}
\usepackage{hyperref}
\usepackage{longtable}
\usepackage{subcaption}
\usepackage{scrlayer-scrpage}
\usepackage{pdfpages}
\usepackage{verbatim}
\usepackage{ifsym}

%Figures
\usepackage{float}
\usepackage[export]{adjustbox}
\usepackage{wrapfig}
\newcommand*{\source}[1]{\par\raggedleft\footnotesize Quelle:~#1} %source command fuer bildunterschriften

% Code
\usepackage{listings}
\usepackage{color}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}
\lstset{literate=%
	{Ö}{{\"O}}1
	{Ä}{{\"A}}1
	{Ü}{{\"U}}1
	{ß}{{\ss}}1
	{ü}{{\"u}}1
	{ä}{{\"a}}1
	{ö}{{\"o}}1
}
\lstset{
	frame=tblr,
	frameround=tttt,
	aboveskip=3mm,
	belowskip=3mm,
	showstringspaces=false,
	columns=flexible,
	basicstyle={\small\ttfamily},
	numbers=none,
	numberstyle=\tiny\color{gray},
	keywordstyle=\color{blue},
	commentstyle=\color{dkgreen},
	stringstyle=\color{mauve},
	breaklines=true,
	breakatwhitespace=true,
	tabsize=3,
	xleftmargin=1.0ex,
	xrightmargin=1.0ex
}

\lstdefinelanguage{docker}{
	keywords={FROM, RUN, COPY, ADD, ENTRYPOINT, CMD,  ENV, ARG, WORKDIR, EXPOSE, LABEL, USER, VOLUME, STOPSIGNAL, ONBUILD, MAINTAINER},
	keywordstyle=\color{blue}\bfseries,
	identifierstyle=\color{black},
	sensitive=false,
	comment=[l]{\#},
	commentstyle=\color{purple}\ttfamily,
	stringstyle=\color{red}\ttfamily,
	morestring=[b]',
	morestring=[b]",
}
\lstdefinelanguage{docker-compose}{
	keywords={VERSION, SERVICES, CONTAINER\_NAME, BUILD, CONTEXT, PORTS, DEPENDS\_ON, RESTART, VOLUMES, ENVIRONMENT},
	keywordstyle=\color{blue}\bfseries,
	identifierstyle=\color{black},
	sensitive=false,
	comment=[l]{\#},
	commentstyle=\color{purple}\ttfamily,
	stringstyle=\color{red}\ttfamily,
	morestring=[b]',
	morestring=[b]",
}
\lstdefinelanguage{Kotlin}{
	comment=[l]{//},
	commentstyle={\color{gray}\ttfamily},
	emph={delegate, filter, first, firstOrNull, forEach, lazy, map, mapNotNull, println, return@},
	emphstyle={\color{mauve}},
	identifierstyle=\color{black},
	keywords={abstract, actual, as, as?, break, by, class, companion, continue, data, do, dynamic, else, enum, expect, false, final, for, fun, get, if, import, in, interface, internal, is, null, object, override, package, private, public, return, set, super, suspend, this, throw, true, try, typealias, val, var, vararg, when, where, while},
	keywordstyle={\color{blue}\bfseries},
	morecomment=[s]{/*}{*/},
	morestring=[b]",
	morestring=[s]{"""*}{*"""},
	ndkeywords={@Deprecated, @JvmField, @JvmName, @JvmOverloads, @JvmStatic, @JvmSynthetic, Array, Byte, Double, Float, Int, Integer, Iterable, Long, Runnable, Short, String},
	ndkeywordstyle={\color{orange}\bfseries},
	sensitive=true,
	stringstyle={\color{dkgreen}\ttfamily},
}

\usepackage{setspace}
\setstretch{1.2} %Zeilenabstand
\setlength\parindent{0pt} %keine Paragrapheneinrueckung

%Schriftart Arial (kommt von Linux dort heisst sie Helvetica)
\usepackage{helvet}
\renewcommand*{\familydefault}{\sfdefault}

%Anfuehrungszeichen
\usepackage[autostyle=true,german=quotes]{csquotes}
\MakeOuterQuote{"}

%Todos
\usepackage{todonotes}
%\missingfigure[figwidth=6cm]{Testing a long text string}

%Tiefe des Inhaltsverzeichnisses
\setcounter{tocdepth}{2}

% Metadaten
\author{Simon Kellner, Marcel Schwarz, Tobias Wieck, Tim Zieger}
\title{Ubiquitous Computing \\ Projektarbeit \\ GeoTime}

\begin{document}

\include{parts/titlepage}

\begin{abstract}
	{\huge Checkliste Lieferobjekte}
	
	\begin{itemize}
		\item Ein Journal (z.B. Excel in Dropbox, Office 365, Google), in dem jedes Projektmitglied Tages- und Themenspezifisch seine geleisteten Arbeiten mit Aufwandsangabe listet. Z.b. "Hans 12.4 3 Std Backend Coding"- Das Journal muss zeitnah geführt werden und verfügbar sein. Ein unvollständiges Zeitjournal führt zur Abwertung in der Benotung.
		\item Projektdokumentation (*: ca. 15-25 Seiten, je nach Bilderdichte)
		\begin{itemize}
			\item Source Code und alle erstellten Dokumente
			\item Erläuterung des Designs (*)
			\item Einrichtung der Entwicklungsumgebung (*) \\
			(falls anwendbar, Standarddinge wie Eclipse, Android SDK müssen nicht detailliert erwähnt werden): 
			\begin{itemize}
				\item Welche Frameworks wurden für die Entwicklung benutzt und was gab es bei der Konfiguration / Installation dieser Tools zu beachten?
				\item Wie wurden die Zielanwendungen erzeugt und z.B. auf ein Zielgerät	oder Server übertragen und dort aktiviert?
			\end{itemize}
			\item Projektbericht: Wie sind Sie vorgegangen, was wollten Sie	erreichen, was haben Sie gelernt, was gab es für Probleme, was haben Sie erreicht, wer hat was gemacht?
		\end{itemize}
		\item Datei mit der Präsentation
	\end{itemize}
\end{abstract}

\tableofcontents

\listoffigures

\include{parts/einleitung}

\include{parts/projektplanung}

\include{parts/entwicklungsumgebung}
	
\include{parts/backend}

\include{parts/frontend}
	
\include{parts/android}
	
\chapter{Vollständiger Application Stack}
\begin{figure}[H]
	\centering
	\includegraphics[width=\linewidth]{img/ApplicationStack}
	\caption{Application Stack}
\end{figure}
Das Deployment von Geotime ist in drei große Schichten aufgeteilt. Zunächst wäre hier die Backend Schicht, die Schicht der Datenhaltung und der API. Dieser Teil der Anwendung braucht am meisten Schutz, da er der wichtigste ist und dort alle Daten gespeichert werden. Der Zugriff auf die Datenbank ist nur auf das Backend beschränkt. Um nun die Applikation zu Nutzen gibt es zwei Möglichkeiten: Eine Android App oder ein Webbrowser. 

Die Android App implementiert die View Schicht selbst und fragt nur für Daten den Backend-Dienst an. Diese Anfragen gehen zunächst an den Server, der die App hostet und werden dann von dem darauf laufenden Docker Deamon an den entsprechenden Container weitergeleitet.

Beim Zugriff über den Webbrowser funktioniert die Kommunikation geringfügig anders. Zunächst wird vom Client der nginx Container nach dem statischen Teil der Website gefragt, dieser lädt dann über ähnliche Anfragen wie in der Android App die Daten vom Backend. Das global gesprochene Protokoll ist hierbei immer HTTP.

\chapter{Projektjournal}

\chapter{Projektfazit und Ausblick}

\end{document}          
