Files
fitness-app/LateX/main.tex
T
robre 0e9377739e Add step 03: Docker, Deployment & First Live App
- Introduced a new section on building Docker images and deploying the fitness app.
- Added detailed explanations of Docker concepts, including images, containers, and volumes.
- Included three Dockerfiles for the backend and frontend, with line-by-line explanations.
- Updated main.tex to include step_03.tex.
- Modified main.toc to reflect new sections and subsections.
- Updated main.fls and main.log to include new font inputs and log entries related to the new content.
- Adjusted font configurations for FiraMono and FiraSans in main.fls.
- Updated PDF and synctex files to reflect changes in the document structure.
2026-05-06 17:27:49 +02:00

256 lines
8.2 KiB
TeX

\documentclass[a4paper,12pt,parskip=half]{scrartcl}
% ============================================
% SPRACHE & ZEICHENSATZ
% ============================================
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
% ============================================
% PROFESSIONELLE SCHRIFTEN (Serifenlos)
% ============================================
\usepackage{FiraSans} % Fira Sans für Text UND Überschriften
\renewcommand*\familydefault{\sfdefault} % Als Standardschrift setzen
\usepackage[scaled=0.9]{FiraMono} % Fira Mono für Code
\usepackage{microtype}
% ============================================
% KEIN ERZWUNGENER VERTIKALER AUSGLEICH
% ============================================
\raggedbottom
% ============================================
% ABSTAND VOR/NACH ÜBERSCHRIFTEN ANPASSEN
% ============================================
% Hier kannst du die Abstände vor und nach section, subsection, subsubsection einstellen
\RedeclareSectionCommand[
beforeskip=0.5cm, % <-- ABSTAND VOR \section (höhere Zahl = mehr Platz)
afterskip=0.3cm % <-- ABSTAND NACH \section (höhere Zahl = mehr Platz)
]{section}
\RedeclareSectionCommand[
beforeskip=0.3cm, % <-- ABSTAND VOR \subsection
afterskip=0.2cm % <-- ABSTAND NACH \subsection
]{subsection}
\RedeclareSectionCommand[
beforeskip=0.2cm, % <-- ABSTAND VOR \subsubsection
afterskip=0.1cm % <-- ABSTAND NACH \subsubsection
]{subsubsection}
% ============================================
% SEITENLAYOUT (Ränder oben/unten/links/rechts)
% ============================================
\usepackage[
a4paper,
left=2.5cm,
right=2.5cm,
top=0cm, % <-- ABSTAND OBEN (vom Blattrand zum Text)
bottom=1cm, % <-- ABSTAND UNTEN (vom Blattrand zum Text)
includehead,
includefoot
]{geometry}
\usepackage{amsmath}
% ============================================
% FARBEN
% ============================================
\usepackage{xcolor}
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
\definecolor{darkblue}{rgb}{0,0,0.6}
\definecolor{orange}{rgb}{1,0.5,0}
\definecolor{red}{rgb}{0.8,0,0}
\definecolor{blue}{rgb}{0,0,0.8}
% ============================================
% CODE-LISTINGS
% ============================================
\usepackage{listings}
\usepackage{textcomp}
\lstset{
backgroundcolor=\color{backcolour},
basicstyle=\ttfamily\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2,
frame=single,
framerule=0.5pt,
rulecolor=\color{codegray},
xleftmargin=1em,
xrightmargin=1em,
% UMLAUTE IN LISTINGS
literate=
{Ö}{{\"O}}1
{Ä}{{\"A}}1
{Ü}{{\"U}}1
{ß}{{\ss}}1
{ö}{{\"o}}1
{ä}{{\"a}}1
{ü}{{\"u}}1
}
% ============================================
% SPRACHDEFINITIONEN MIT FARBEN
% ============================================
\lstdefinelanguage{CSharp}{
keywords={abstract,as,async,await,base,bool,break,byte,case,catch,char,checked,class,const,continue,decimal,default,delegate,do,double,else,enum,event,explicit,extern,false,finally,fixed,float,for,foreach,goto,if,implicit,in,int,interface,internal,is,lock,long,namespace,new,null,object,operator,out,override,params,private,protected,public,readonly,record,ref,return,sbyte,sealed,short,sizeof,stackalloc,static,string,struct,switch,this,throw,true,try,typeof,uint,ulong,unchecked,unsafe,ushort,using,var,virtual,void,volatile,while,init,required,global},
keywordstyle=\color{blue}\bfseries,
sensitive=true,
morecomment=[l]{//},
morecomment=[s]{/*}{*/},
commentstyle=\color{codegreen}\itshape,
string=[b]",
stringstyle=\color{codepurple},
morestring=[b]'
}
\lstdefinelanguage{TypeScript}{
keywords={break,case,catch,class,const,continue,debugger,default,delete,do,else,enum,export,extends,false,finally,for,function,if,import,in,instanceof,new,null,return,super,switch,this,throw,true,try,typeof,var,void,while,with,as,implements,interface,let,package,private,protected,public,static,yield,async,await,from,of,type,extends,string,number,boolean,any,undefined},
keywordstyle=\color{blue}\bfseries,
sensitive=true,
morecomment=[l]{//},
morecomment=[s]{/*}{*/},
commentstyle=\color{codegreen}\itshape,
string=[b]',
stringstyle=\color{codepurple},
morestring=[b]"
}
\lstdefinelanguage{JavaScript}{
keywords={break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,false,finally,for,function,if,import,in,instanceof,new,null,return,super,switch,this,throw,true,try,typeof,var,void,while,with,let,static,yield,async,await,from,of},
keywordstyle=\color{blue}\bfseries,
sensitive=true,
morecomment=[l]{//},
morecomment=[s]{/*}{*/},
commentstyle=\color{codegreen}\itshape,
string=[b]',
stringstyle=\color{codepurple},
morestring=[b]"
}
\lstdefinelanguage{JSON}{
showstringspaces=false,
string=[b]",
stringstyle=\color{codepurple},
comment=[l]{//},
moredelim=[l][\color{blue}\bfseries]{"},
moredelim=[l][\color{blue}\bfseries]{:}
}
\lstdefinelanguage{YAML}{
keywords={true,false,null},
keywordstyle=\color{blue}\bfseries,
sensitive=true,
comment=[l]{\#},
commentstyle=\color{codegreen}\itshape,
string=[b]",
stringstyle=\color{codepurple},
moredelim=[l][\color{orange}]{\&},
moredelim=[l][\color{orange}]{*},
moredelim=**[il][\color{blue}]{:}
}
\lstdefinelanguage{Bash}{
keywords={cd,mkdir,git,pnpm,dotnet,nano,tree,rm,cat,docker,ls,head,which,node,npm,alias,echo,export},
keywordstyle=\color{blue}\bfseries,
sensitive=false,
morecomment=[l]{\#},
commentstyle=\color{codegreen}\itshape,
string=[b]",
stringstyle=\color{codepurple}
}
\lstdefinelanguage{Dockerfile}{
keywords={FROM,ENV,ARG,COPY,ADD,RUN,CMD,ENTRYPOINT,EXPOSE,VOLUME,WORKDIR,USER,LABEL,MAINTAINER,STOPSIGNAL,HEALTHCHECK,SHELL},
keywordstyle=\color{blue}\bfseries,
sensitive=true,
comment=[l]{\#},
commentstyle=\color{codegreen}\itshape,
string=[b]",
stringstyle=\color{codepurple}
}
\lstdefinelanguage{CSS}{
keywords={color,background,background-color,margin,padding,font-family,font-weight,font-size,line-height,text-decoration,text-align,border,border-bottom,border-radius,display,flex,justify-content,align-items,box-sizing,cursor,width,max-width,height,list-style,outline,white-space,word-wrap,overflow,position,top,left,right,bottom,transform,transition,animation,opacity},
keywordstyle=\color{blue}\bfseries,
sensitive=true,
morecomment=[l]{//},
morecomment=[s]{/*}{*/},
commentstyle=\color{codegreen}\itshape,
string=[b]",
stringstyle=\color{codepurple},
moredelim=[s][\color{orange}]{:}{;},
alsodigit={-}
}
% ============================================
% HYPERLINKS
% ============================================
\usepackage[
colorlinks=true,
linkcolor=darkblue,
urlcolor=blue
]{hyperref}
% ============================================
% TABELLEN
% ============================================
\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}
% ============================================
% TITELSEITE
% ============================================
\title{
\Huge\textbf{Todo App}\\[0.3cm]
\Large Eine Lern-Anwendung für Softwarearchitektur\\[0.3cm]
\large Vom Quick \& Dirty zur Clean Architecture
}
\author{Robert Bretz}
\date{\today}
\begin{document}
% ============================================
% TITELSEITE
% ============================================
\maketitle
\thispagestyle{empty}
\clearpage
% ============================================
% INHALTSVERZEICHNIS
% ============================================
\tableofcontents
\thispagestyle{empty}
\clearpage
% ============================================
% KAPITEL EINBINDEN
% ============================================
\input{step_01.tex}
\input{step_02.tex}
\input{step_03.tex}
% Weitere Kapitel folgen hier:
% \input{step_02.tex}
% \input{step_03.tex}
% ...
\end{document}