diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/LICENSE b/packages/preview/unofficial-hka-thesis/1.0.0/LICENSE
new file mode 100644
index 000000000..8c4fb836c
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2024 Ansgar Lichter
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/README.md b/packages/preview/unofficial-hka-thesis/1.0.0/README.md
new file mode 100644
index 000000000..c59676004
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/README.md
@@ -0,0 +1,66 @@
+# Typst Template HKA
+
+This is a thesis template written in [Typst](https://typst.app/),
+based on the [template of the TU Munich](https://github.com/ls1intum/thesis-template-typst).
+
+## Usage
+
+You can use this template in the Typst web app by clicking "Start from template"
+on the dashboard and searching for `unofficial-hka-thesis`.
+
+Locally, you can use the following command to start with this templates:
+
+```bash
+typst init @preview/unofficial-hka-thesis:1.0.0
+```
+
+### Features
+
+## Metadata
+
+In the file `settings/metadata.typ` you can enter all metadata (title, author, submission date, ...). The data is automatically referenced in the exposé and the thesis.
+
+## Settings
+
+Some important global settings are located in `settings/settings.typ`. You can adapt them here as you wish and they are automatically changed in the exposé and the thesis.
+
+## Pre-defined Pages
+
+The template supports the following pages out-of-the-box:
+
+- Titlepage
+- Declaration of Originality
+- Abstract, both in English and German
+- Table of Contents
+- List of Figures
+- List of Tables
+- List of Listings
+- List of Abbreviations (for instructions refer to [glossarium](https://github.com/typst/packages/tree/main/packages/preview/glossarium/0.2.6))
+- Bibliography
+
+# **Usage of official Titlepage**
+
+In the intranet you can download the official titlepage. As Typst is not able to include PDFs, you must manually exchange the current titlepage with the official in the final PDF file. Be aware, that you must adapt the numbering of the PDF itself, so that you view page `5` instead of `V` if you want to jump to page `5`.
+
+## Header
+
+Every header includes the heading of the current chapter, section or subsection.
+![Current Subsection](assets/image.png)
+
+If a new section or subsection starts at the current page this one is chosen.
+![New Section](assets/image-1.png)
+
+If a new chapter starts at the current page, no header will be shown.
+![New Chapter](assets/image-2.png)
+
+The numbering is shown thanks to the inspiration from [hydra](https://github.com/tingerrr/hydra) (Hydra didn't work flawlessly, therefore I had to write my own solution).
+
+## Footer
+
+Every footer is divided by a line from the main body. The footer contains the page numbering in the following format `1 / 3`.
+
+## 💡 Feedback
+
+**Anything Missing?** Please [create an issue](https://github.com/AnsgarLichter/unofficial-hka-thesis/issues/new) or open a Pull Request right away.
+
+**Have Questions?** Please [open a discussion](https://github.com/AnsgarLichter/unofficial-hka-thesis/discussions).
\ No newline at end of file
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/assets/HKALogo.png b/packages/preview/unofficial-hka-thesis/1.0.0/assets/HKALogo.png
new file mode 100644
index 000000000..de443bc97
Binary files /dev/null and b/packages/preview/unofficial-hka-thesis/1.0.0/assets/HKALogo.png differ
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/assets/company.jpg b/packages/preview/unofficial-hka-thesis/1.0.0/assets/company.jpg
new file mode 100644
index 000000000..57babb86a
Binary files /dev/null and b/packages/preview/unofficial-hka-thesis/1.0.0/assets/company.jpg differ
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/assets/company.svg b/packages/preview/unofficial-hka-thesis/1.0.0/assets/company.svg
new file mode 100644
index 000000000..29b765ed0
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/assets/company.svg
@@ -0,0 +1,114 @@
+
+
+
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/assets/image-1.png b/packages/preview/unofficial-hka-thesis/1.0.0/assets/image-1.png
new file mode 100644
index 000000000..d73ace674
Binary files /dev/null and b/packages/preview/unofficial-hka-thesis/1.0.0/assets/image-1.png differ
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/assets/image-2.png b/packages/preview/unofficial-hka-thesis/1.0.0/assets/image-2.png
new file mode 100644
index 000000000..ba9538e64
Binary files /dev/null and b/packages/preview/unofficial-hka-thesis/1.0.0/assets/image-2.png differ
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/assets/image.png b/packages/preview/unofficial-hka-thesis/1.0.0/assets/image.png
new file mode 100644
index 000000000..84ad01e1b
Binary files /dev/null and b/packages/preview/unofficial-hka-thesis/1.0.0/assets/image.png differ
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/lib.typ b/packages/preview/unofficial-hka-thesis/1.0.0/lib.typ
new file mode 100644
index 000000000..7d07bc2c7
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/lib.typ
@@ -0,0 +1,322 @@
+#import "modules/titlepage.typ": *
+#import "@preview/glossarium:0.5.1": print-glossary, register-glossary
+
+#let in-outline = state("in-outline", false)
+#let flex-caption(long, short) = context {
+ if in-outline.at(here()) { short } else { long }
+}
+
+#let preface(
+ settings: ()
+) = {
+ // Page Setup
+ set page(
+ margin: (
+ left: settings.page-margins.left,
+ right: settings.page-margins.right,
+ top: settings.page-margins.top,
+ bottom: settings.page-margins.bottom
+ ),
+ numbering: "I",
+ number-align: center
+ )
+ counter(page).update(2)
+
+ // Body Font Family
+ set text(
+ font: settings.font-body,
+ size: settings.font-body-size,
+ lang: "en"
+ )
+
+ show math.equation: set text(weight: 400)
+
+ // Headings
+ show heading: set block(
+ below: settings.headings-spacing.below,
+ above: settings.headings-spacing.above
+ )
+ show heading: set text(font: settings.font-body, size: settings.font-heading-size)
+ set heading(numbering: none)
+
+ // Paragraphs
+ set par(leading: settings.distance-between-lines, justify: true)
+
+ // Figures
+ show figure: set text(size: settings.font-figures-subtitle-size)
+
+ //Indentation of Lists
+ set list(indent: settings.list-indentation)
+ set enum(indent: settings.list-indentation)
+}
+
+#let listings(
+ abbreviations: ()
+) = {
+ register-glossary(abbreviations)
+ // Enable short captions to omit citations
+ show outline: it => {
+ in-outline.update(true)
+ it
+ in-outline.update(false)
+ }
+
+ // Table of Contents
+ outline(
+ title: {
+ heading(outlined: false, "Table of Contents")
+
+ },
+ target: heading.where(supplement: [Chapter], outlined: true),
+ indent: true,
+ depth: 3
+ )
+
+ v(2.4fr)
+ pagebreak()
+
+ // List of Figures
+ outline(
+ title: {
+ heading(outlined: false, "List of Figures")
+
+ },
+ target: figure.where(kind: image),
+ )
+ pagebreak()
+
+ // List of Tables
+ outline(
+ title: {
+ heading(outlined: false, "List of Tables")
+
+ },
+ target: figure.where(kind: table)
+ )
+ pagebreak()
+
+ // List of Listings
+ outline(
+ title: {
+ heading(outlined: false, "List of Listings")
+
+ },
+ target: figure.where(kind: raw)
+ )
+ pagebreak()
+
+ // List of Abbreviations
+ heading(outlined: false)[List of Abbreviations]
+
+ print-glossary(
+ abbreviations,
+ show-all: false,
+ disable-back-references: true,
+ )
+}
+
+#let main-body(
+ settings: (),
+ body
+) = {
+ // Main Body
+ set heading(numbering: settings.headings-numbering-style, supplement: [Chapter])
+ show heading.where(level: 1): it => {
+ if it.numbering == none {
+ [
+ #it
+ ]
+ } else {
+ [
+ #pagebreak()
+ #it
+ ]
+ }
+
+ counter(figure.where(kind: table)).update(0);
+ counter(figure.where(kind: image)).update(0);
+ counter(figure.where(kind: raw)).update(0);
+ }
+
+ set figure(numbering: it => {
+ let numbering-of-heading = counter(heading).display();
+ let top-level-number = numbering-of-heading.slice(0, numbering-of-heading.position("."))
+ [#top-level-number.#it]
+ })
+
+ set page(
+ // Header with current heading
+ header: context {
+ let elements = query(
+ selector(heading.where(depth: 1)).after(here())
+ )
+
+ // Don't show header if a new chapter is starting at the current page
+ if elements != () and elements.first().location().page() == here().page() and elements.first().depth == 1 {
+ return;
+ }
+
+ let display-heading
+ let display-numbering
+ let element
+ elements = query(selector(heading).after(here()))
+ if elements != () and elements.first().location().page() == here().page() {
+ element = elements.first()
+ if element.has("numbering") and element.numbering != none {
+ display-numbering = numbering(element.numbering, ..counter(heading).at(element.location()))
+ } else {
+ display-numbering = numbering(settings.headings-numbering-style, ..counter(heading).at(element.location()))
+ }
+
+ display-heading = element.body
+ } else {
+ // Otherwise take the next heading backwards
+ elements = query(
+ heading.where().before(here())
+ )
+ if elements != () {
+ element = elements.last()
+ if element.has("numbering") and element.numbering != none {
+ display-numbering = numbering(element.numbering, ..counter(heading).at(element.location()))
+ } else {
+ display-numbering = numbering(settings.headings-numbering-style, ..counter(heading).at(element.location()))
+ }
+
+ display-heading = element.body
+ }
+ }
+
+ align(center, display-numbering + " " + display-heading)
+ line(length: 100%, stroke: (paint: gray))
+ },
+
+ // Footer with Page Numbering
+ footer: context {
+ let current-page = counter(page).display()
+ let final-page = counter(page).final().first()
+
+ line(length: 100%, stroke: (paint: gray))
+ align(center)[#current-page / #final-page]
+ }
+ )
+
+ set page(
+ numbering: "1/1",
+ number-align: center,
+ )
+ counter(page).update(1)
+ // Set after header and after all initial pages to just apply it to the acutal content
+ set par(spacing: settings.space-before-paragraph)
+
+ // Actual Content
+ body
+}
+
+// Appendix
+#let appendix(body) = {
+ pagebreak()
+ outline(
+ title: {
+ heading("Appendix", outlined: true, numbering: none)
+ },
+ target: heading.where(supplement: [Appendix], outlined: true),
+ indent: true,
+ depth: 3
+ )
+
+ counter(heading).update(0)
+ set heading(numbering: "A.1.", supplement: [Appendix])
+ show heading: it => {
+ let prefixed-numbering;
+ if it.level == 1 and it.numbering != none {
+ prefixed-numbering = [#it.supplement #counter(heading).display()]
+ } else if it.numbering != none {
+ prefixed-numbering = [#counter(heading).display()]
+ }
+
+ block(
+ below: 0.85em,
+ above: 1.75em
+ )[
+ #prefixed-numbering #it.body
+ ]
+ }
+
+ set figure(numbering: it => {
+ let alphabet = ("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z")
+ let numbering-of-heading = counter(heading).display();
+ let top-level-number = numbering-of-heading.slice(0, numbering-of-heading.position("."))
+ let index = alphabet.position((el) => { el == top-level-number})
+
+ if index == none {
+ let numberingToAlphabet = numbering("A", int(top-level-number))
+ [#numberingToAlphabet.#it]
+ } else {
+ [#top-level-number.#it]
+ }
+ })
+
+ show heading.where(level: 1): it => {
+ if it.numbering == none {
+ [
+ #it
+ ]
+ } else {
+ [
+ #pagebreak()
+ #it
+ ]
+ }
+
+ counter(figure.where(kind: table)).update(0);
+ counter(figure.where(kind: image)).update(0);
+ counter(figure.where(kind: raw)).update(0);
+ }
+
+ body
+}
+
+// TODOs
+#let todo(body) = [
+ #let rblock = block.with(stroke: red, radius: 0.5em, fill: red.lighten(80%))
+ #let top-left = place.with(top + left, dx: 1em, dy: -0.35em)
+ #block(inset: (top: 0.35em), {
+ rblock(width: 100%, inset: 1em, body)
+ top-left(rblock(fill: white, outset: 0.25em, text(fill: red)[*TODO*]))
+ })
+
+]
+
+#let outline-todos(title: [TODOS]) = {
+ heading(numbering: none, outlined: false, title)
+ context {
+ let queried-todos = query()
+ let headings = ()
+ let last-heading
+ for todo in queried-todos {
+ let new-last-heading = query(selector(heading).before(todo.location())).last()
+ if last-heading != new-last-heading {
+ headings.push((heading: new-last-heading, todos: (todo,)))
+ last-heading = new-last-heading
+ } else {
+ headings.last().todos.push(todo)
+ }
+ }
+
+ for head in headings {
+ link(head.heading.location())[
+ #numbering(head.heading.numbering, ..counter(heading).at(head.heading.location()))
+ #head.heading.body
+ ]
+ [ ]
+ box(width: 1fr, repeat[.])
+ [ ]
+ [#head.heading.location().page()]
+
+ linebreak()
+ pad(left: 1em, head.todos.map((todo) => {
+ list.item(link(todo.location(), todo.body.children.at(0).body))
+ }).join())
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/modules/titlepage.typ b/packages/preview/unofficial-hka-thesis/1.0.0/modules/titlepage.typ
new file mode 100644
index 000000000..7cb6448ef
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/modules/titlepage.typ
@@ -0,0 +1,103 @@
+#let open-title-page(settings: ()) = {
+ set page(
+ paper: "a4",
+ margin: (left: 30mm, right: 30mm, top: 40mm, bottom: 40mm),
+ numbering: "I",
+ number-align: center,
+ footer: ""
+ )
+
+ set text(
+ font: settings.font-body,
+ size: settings.font-body-size,
+ lang: "en"
+ )
+
+ set par(leading: 1em)
+}
+
+#let finish-title-page(
+ settings: (),
+ degree: "",
+ program: "",
+ title: "",
+ subtitle: "",
+ title-german: "",
+ subtitle-german: "",
+ author: "",
+ matriculation-number: "",
+ place-of-work: "",
+ supervisor: "",
+ advisor: "",
+ start-date: none,
+ submission-date: none,
+) = {
+
+ v(5mm)
+ align(center, text(font: settings.font-heading, 1.9em, weight: 700, "University of Applied Sciences Karlsruhe"))
+
+ v(15mm)
+
+ align(center, text(font: settings.font-heading, 1.5em, weight: 100, degree + "’s Thesis in " + program))
+ v(8mm)
+
+ if title-german.len() > 0 {
+ if subtitle.len() > 0 or subtitle-german.len() > 0 {
+ align(center, text(font: settings.font-heading, 1.2em, weight: 700, title))
+ align(center, text(font: settings.font-heading, 1.2em, weight: 500, subtitle))
+ v(10mm)
+ align(center, text(font: settings.font-heading, 1.2em, weight: 700, title-german))
+ align(center, text(font: settings.font-heading, 1.2em, weight: 500, subtitle-german))
+ } else {
+ align(center, text(font: settings.font-heading, 1.4em, weight: 700, title))
+ v(10mm)
+ align(center, text(font: settings.font-heading, 1.4em, weight: 700, title-german))
+ }
+ } else {
+ if subtitle.len() > 0 {
+ align(center, text(font: settings.font-heading, 1.8em, weight: 700, title))
+ v(5mm)
+ align(center, text(font: settings.font-heading, 1.4em, weight: 500, subtitle))
+ } else {
+ align(center, text(font: settings.font-heading, 2.0em, weight: 700, title))
+ }
+
+ }
+
+ if advisor.len() > 0 {
+ pad(
+ top: 3em,
+ right: 10%,
+ left: 10%,
+ grid(
+ columns: (3fr, 3fr),
+ gutter: 1em,
+ strong("Author: "), author,
+ strong("Matriculation Number: "), matriculation-number,
+ strong("Place of Work: "), place-of-work,
+ strong("Supervisor: "), supervisor,
+ strong("Advisor: "), advisor,
+ strong("Start Date: "), start-date,
+ strong("Submission Date: "), submission-date,
+ )
+ )
+ } else {
+ pad(
+ top: 3em,
+ right: 10%,
+ left: 10%,
+ grid(
+ columns: (3fr, 3fr),
+ gutter: 1em,
+ strong("Author: "), author,
+ strong("Matriculation Number: "), matriculation-number,
+ strong("Place of Work: "), place-of-work,
+ strong("Supervisor: "), supervisor,
+ strong("Start Date: "), start-date,
+ strong("Submission Date: "), submission-date,
+ )
+ )
+ }
+
+ pagebreak()
+}
\ No newline at end of file
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/template/abbreviations.typ b/packages/preview/unofficial-hka-thesis/1.0.0/template/abbreviations.typ
new file mode 100644
index 000000000..5532a029d
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/template/abbreviations.typ
@@ -0,0 +1,7 @@
+#let abbreviations = (
+ (
+ key: "oidc",
+ short: "OIDC",
+ long: "Open ID Connect"
+ ),
+ )
\ No newline at end of file
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/template/bibliography/thesis.bib b/packages/preview/unofficial-hka-thesis/1.0.0/template/bibliography/thesis.bib
new file mode 100644
index 000000000..ecd4c5a22
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/template/bibliography/thesis.bib
@@ -0,0 +1,38 @@
+@book{Smith.2020,
+ author = {John Smith},
+ title = {A Comprehensive Introduction to C++},
+ year = {2020},
+ publisher = {Tech Books Publishing Ltd.},
+ address = {New York},
+}
+
+@book{a,
+ author = {John Smith},
+ title = {A Comprehensive Introduction to C++},
+ year = {2020},
+ publisher = {Tech Books Publishing Ltd.},
+ address = {New York},
+}
+
+@book{b,
+ author = {John Smith},
+ title = {A Comprehensive Introduction to C++},
+ year = {2020},
+ publisher = {Tech Books Publishing Ltd.},
+ address = {New York},
+}
+
+@book{c,
+ author = {John Smith},
+ title = {A Comprehensive Introduction to C++},
+ year = {2020},
+ publisher = {Tech Books Publishing Ltd.},
+ address = {New York},
+}
+@book{d,
+ author = {John Smith},
+ title = {A Comprehensive Introduction to C++},
+ year = {2020},
+ publisher = {Tech Books Publishing Ltd.},
+ address = {New York},
+}
\ No newline at end of file
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/template/chapters/1_introduction.typ b/packages/preview/unofficial-hka-thesis/1.0.0/template/chapters/1_introduction.typ
new file mode 100644
index 000000000..76a38b5c7
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/template/chapters/1_introduction.typ
@@ -0,0 +1,68 @@
+
+#import "@preview/unofficial-hka-thesis:1.0.0": todo, flex-caption
+#import "@preview/glossarium:0.5.1": gls, glspl
+
+= Introduction
+
+#lorem(800)
+
+== Motivation
+
+#lorem(250)
+
+#lorem(36)
+
+#lorem(30)
+
+=== Third Level
+
+#lorem(550)
+
+== Objective
+
+#lorem(300)
+
+This is an example citation @Smith.2020. #gls("oidc") means @oidc. @figure describes @table which is shown in @listing. Test a b c d.
+
+#figure(
+ image("/figures/tiger.png", width: 80%),
+ caption: flex-caption(
+ [This is my long caption text in the document. @a],
+ [This is short],
+ )
+)
+
+#figure(
+ table(
+ columns: (1fr, auto, auto),
+ inset: 10pt,
+ align: horizon,
+ [], [*Area*], [*Parameters*],
+ "Text",
+ $ pi h (D^2 - d^2) / 4 $,
+ [
+ $h$: height \
+ $D$: outer radius \
+ $d$: inner radius
+ ],
+ "Text",
+ $ sqrt(2) / 12 a^3 $,
+ [$a$: edge length]
+ ),
+ caption: flex-caption(
+ [This is my long caption text in the document. @b],
+ [This is short],
+ )
+)
+
+#figure(
+ ```rust
+ fn main() {
+ println!("Hello World!");
+ }
+ ```,
+ caption: flex-caption(
+ [This is my long caption text in the document. @c],
+ [This is short],
+ )
+)
\ No newline at end of file
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/template/chapters/2_foundations.typ b/packages/preview/unofficial-hka-thesis/1.0.0/template/chapters/2_foundations.typ
new file mode 100644
index 000000000..e63c266cd
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/template/chapters/2_foundations.typ
@@ -0,0 +1,8 @@
+#import "@preview/unofficial-hka-thesis:1.0.0": todo, flex-caption
+#import "@preview/acrostiche:0.2.0": acr, acrpl
+
+= Foundations
+
+This chapter describes the Foundations.
+
+#lorem(500)
\ No newline at end of file
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/template/chapters/A1_Material.typ b/packages/preview/unofficial-hka-thesis/1.0.0/template/chapters/A1_Material.typ
new file mode 100644
index 000000000..4acf9d0c4
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/template/chapters/A1_Material.typ
@@ -0,0 +1,7 @@
+= Additional Material
+
+#lorem(450)
+
+== Subchapter
+
+#lorem(450)
\ No newline at end of file
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/template/chapters/A2_Transcripts.typ b/packages/preview/unofficial-hka-thesis/1.0.0/template/chapters/A2_Transcripts.typ
new file mode 100644
index 000000000..63f3ea273
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/template/chapters/A2_Transcripts.typ
@@ -0,0 +1,11 @@
+= Transcripts
+
+#lorem(500)
+
+== Interview 1
+
+#lorem(250)
+
+=== Details
+
+#lorem(250)
\ No newline at end of file
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/template/figures/tiger.png b/packages/preview/unofficial-hka-thesis/1.0.0/template/figures/tiger.png
new file mode 100644
index 000000000..a175407dd
Binary files /dev/null and b/packages/preview/unofficial-hka-thesis/1.0.0/template/figures/tiger.png differ
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/template/logo/HKALogo.png b/packages/preview/unofficial-hka-thesis/1.0.0/template/logo/HKALogo.png
new file mode 100644
index 000000000..de443bc97
Binary files /dev/null and b/packages/preview/unofficial-hka-thesis/1.0.0/template/logo/HKALogo.png differ
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/template/logo/company.svg b/packages/preview/unofficial-hka-thesis/1.0.0/template/logo/company.svg
new file mode 100644
index 000000000..29b765ed0
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/template/logo/company.svg
@@ -0,0 +1,114 @@
+
+
+
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/template/settings/metadata.typ b/packages/preview/unofficial-hka-thesis/1.0.0/template/settings/metadata.typ
new file mode 100644
index 000000000..f348bcfc9
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/template/settings/metadata.typ
@@ -0,0 +1,14 @@
+#let degree = "Master" //Bachelor or Master
+#let program = "Computer Science"
+#let title-english = "Title English"
+#let subtitle-english = "Subtitle English"
+#let title-german = "Title German"
+#let subtitle-german = "Subtitle German"
+#let author = "Max Mustermann"
+#let matriculation-number = "12345"
+#let place-of-work = "ABC"
+#let supervisor = "Prof Dr. Max Mustermann"
+#let advisor = "Prof Dr. John Doe"
+#let start-date = "01.03.2024"
+#let submission-date = "31.08.2024"
+#let place = "Karlsruhe"
\ No newline at end of file
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/template/settings/settings.typ b/packages/preview/unofficial-hka-thesis/1.0.0/template/settings/settings.typ
new file mode 100644
index 000000000..b58bc4990
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/template/settings/settings.typ
@@ -0,0 +1,24 @@
+#let settings = (
+ font-body: "New Computer Modern",
+ font-body-size: 12pt,
+ font-figures-subtitle-size: 0.85em,
+ // At the moment only used on the title page
+ font-heading: "New Computer Modern Sans",
+ font-heading-size: 16pt,
+ headings-numbering-style: "1.1.",
+ headings-spacing: (
+ below: 0.85em,
+ above: 1.75em
+ ),
+ citation-style: "ieee",
+ space-before-paragraph: 24pt,
+ distance-between-lines: 1em,
+ list-indentation: 2.5em,
+ page-margins: (
+ top: 4cm,
+ bottom: 2.5cm,
+ left: 2.5cm,
+ right: 2.5cm
+ ),
+)
+
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/template/supplementary/abstract.typ b/packages/preview/unofficial-hka-thesis/1.0.0/template/supplementary/abstract.typ
new file mode 100644
index 000000000..5c6449a82
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/template/supplementary/abstract.typ
@@ -0,0 +1,5 @@
+#import "@preview/unofficial-hka-thesis:1.0.0": todo, flex-caption
+
+#heading(outlined: false, numbering: none, "Abstract")
+
+#todo("Abstract")
\ No newline at end of file
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/template/supplementary/abstractGerman.typ b/packages/preview/unofficial-hka-thesis/1.0.0/template/supplementary/abstractGerman.typ
new file mode 100644
index 000000000..fca68052e
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/template/supplementary/abstractGerman.typ
@@ -0,0 +1,5 @@
+#import "@preview/unofficial-hka-thesis:1.0.0": todo, flex-caption
+
+#heading(outlined: false, numbering: none, "Zusammenfassung")
+
+#todo("Abstract")
\ No newline at end of file
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/template/supplementary/statutoryDeclaration.typ b/packages/preview/unofficial-hka-thesis/1.0.0/template/supplementary/statutoryDeclaration.typ
new file mode 100644
index 000000000..ffb15d970
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/template/supplementary/statutoryDeclaration.typ
@@ -0,0 +1,20 @@
+#import "../settings/metadata.typ": *
+
+#heading(outlined: false, numbering: none, "Declaration of Originality")
+
+I declare that I have composed the #lower(degree)'s thesis myself and without use of any other than the cited sources and aids. Sentences or parts of sentences quoted literally are marked as such; other references with regard to the statement and scope are indicated by full details of the publications concerned. The thesis in the same or similar form has not been submitted to any examination body and has not been published. This thesis was not yet, even in part, used in another examination or as a course performance. Furthermore I declare that the submitted written (bound) copies of the #lower(degree)'s thesis and the version submitted in digital format are consistent with each other in contents.
+
+#pad(
+ top: 5em,
+ table(
+ columns: (1fr, 1fr),
+ gutter: 1em,
+ align: center,
+ stroke: none,
+ inset: (
+ x: 20pt
+ ),
+ line(length: 100%), line(length: 100%),
+ [(Place, Date)], author,
+ )
+ )
\ No newline at end of file
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/template/thesis.typ b/packages/preview/unofficial-hka-thesis/1.0.0/template/thesis.typ
new file mode 100644
index 000000000..2a4dce0f2
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/template/thesis.typ
@@ -0,0 +1,73 @@
+#import "@preview/unofficial-hka-thesis:1.0.0": *
+#import "abbreviations.typ": abbreviations
+#import "settings/metadata.typ": *
+#import "settings/settings.typ": *
+#import "@preview/glossarium:0.5.1": make-glossary
+
+#show: make-glossary
+
+#set document(title: title-english, author: author)
+#open-title-page(settings: settings)
+// Customize your company logo or just use the one from the university
+#grid(
+ columns: (1fr, 1fr),
+ align(left)[
+ #image("/logo/company.svg", height: 1.5cm)
+ ],
+ align(right)[
+ #image("/logo/HKALogo.png", height: 2cm)
+ ]
+)
+
+#finish-title-page(
+ settings: settings,
+ degree: degree,
+ program: program,
+ title: title-english,
+ subtitle: subtitle-english,
+ author: author,
+ matriculation-number: matriculation-number,
+ place-of-work: place-of-work,
+ supervisor: supervisor,
+ advisor: advisor,
+ start-date: start-date,
+ submission-date: submission-date,
+)
+
+#preface(settings: settings)
+
+// Citations - applied here so that you are able to use a local CSL file to define the citation style
+#set cite(style: settings.citation-style)
+
+// Statutory Declaration
+#include "supplementary/statutoryDeclaration.typ"
+#pagebreak()
+
+// Abstract
+#include "supplementary/abstract.typ"
+#pagebreak()
+
+// Abstract German
+#include "supplementary/abstractGerman.typ"
+#pagebreak()
+
+#listings(abbreviations: abbreviations)
+
+#show: main-body.with(
+ settings: settings
+)
+
+#include "chapters/1_introduction.typ"
+
+#include "chapters/2_foundations.typ"
+
+//Bibliography
+#pagebreak()
+#bibliography("bibliography/thesis.bib")
+
+//Appendix
+#appendix()[
+ #include "chapters/A1_Material.typ"
+
+ #include "chapters/A2_Transcripts.typ"
+]
\ No newline at end of file
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/thumbnail.png b/packages/preview/unofficial-hka-thesis/1.0.0/thumbnail.png
new file mode 100644
index 000000000..0839cec52
Binary files /dev/null and b/packages/preview/unofficial-hka-thesis/1.0.0/thumbnail.png differ
diff --git a/packages/preview/unofficial-hka-thesis/1.0.0/typst.toml b/packages/preview/unofficial-hka-thesis/1.0.0/typst.toml
new file mode 100644
index 000000000..4cad9d7b2
--- /dev/null
+++ b/packages/preview/unofficial-hka-thesis/1.0.0/typst.toml
@@ -0,0 +1,16 @@
+[package]
+name = "unofficial-hka-thesis"
+version = "1.0.0"
+entrypoint = "lib.typ"
+authors = ["Ansgar Lichter "]
+license = "MIT"
+description = "Unofficial thesis template used at the University of Applied Sciences Karlsruhe (Hochschule Karlsruhe / HKA) at the faculty of Computer Science."
+repository = "https://github.com/AnsgarLichter/unofficial-hka-thesis"
+keywords = ["Karlsruhe", "University of Applied Sciences Karlsruhe", "HKA", "Hochschule Karlsruhe", "Thesis", "Masterarbeit", "Bachelorarbeit", "Final Thesis", "Bachelor's Thesis", "Master's Thesis"]
+categories = ["thesis"]
+exclude = []
+
+[template]
+path = "template"
+entrypoint = "thesis.typ"
+thumbnail = "thumbnail.png"
\ No newline at end of file