Profile Mascot

Welcome to my projects page ;)

In this space I share details about selected web development projects I did, in collaboration with others as well as on my own. Note this is a work in progress.

As this page lists only a selection of my projects, feel free to skim my other public repositories at GitHub.

Projects

Travellers Lounge

A travel recommendation website with Home, About and Contact Page. Allows to search for destinations based on keywords. Coded in JavaScript.
View project

Advent calendar

Advent calendar web application. Displaying each day a little challenge related to IT-security. Allows to schedule an email newsletter. Coded in coperation with a senior developer, with Django.
View project

Dentist Website

Implementing a free template with a Django backend, including navigation, template inheritance, template tags, and functional email contact forms.
View project

Sportshop

Node web application listing products retrieved from a database by category. Including pagination and shopping cart functionality.
View project

Blogging Application

A simple application allowing to create, update and delete posts stored in a database. Implemented using the MERN stack.
View project

Dialogue System

A chatbot giving restaurant recommendations based on user preferences. Implemented in Python with a self-managed team of developers.
View project

Container Security thesis

A research project trying to assess the security level of container runtimes. Involving a static comparison and experimental testing of past exploits.
View project

Book Inventory

A program able store a collection of books, allowing CRUD operations, as well as import from and export to a xml file, by marshalling and unmarshalling. Implemented in Java.
View project

Travellers Lounge

Javascript (Frontend)

Node

Travel recommendation website

A website that gives travel destination recommendations based on user-supplied keywords. The database contains countries, beaches and temples. It is stored as a json file, fetched with JavaScript's fetch API function, and searched depending on user-supplied keywords. Results are added to the DOM and dynamically displayed back to the user.

Final project for the JavaScript essentials course of the IBM Fullstack Javascript Developer specialization.


Contact Page screenshot
Screenshot of the contacts page

Features

  • Home, About, Contact Page with contact formular
  • Functional Navigation Bar
  • Responsive Styling with CSS
  • Search for keywords and showing recommendation results
  • Fetching json data from an API
  • Node.js/express backend with routing

See code on GitHub here

PSI Adventure

Django

HTML, CSS

Advent calendar web application

A Django web application inspired by advent of code. Displays each day a little challenge related to a lecture on IT-security. For a correct solution, the user gets displayed the picture of the day and rewarded with a star. Includes a dashboard to manage Story Elements, Tasks, Correct Solutions, Users, Star Counts. Also allows to schedule newsletters.

This web application was written together with a Senior Developer from the Chair of Security and Privacy in Information Systems. It was also deployed and is currently available internally from the University's network.

See code on GitHub here

Dentist Website

Django

Dentist website based on a free template

Dentist Website for showcasing services, doctors, blogging, and making appointments. Based on a freely available template. Implementing the backend meant to adjust the template to use Django's template tags (such as static) and template inheritance, setup routing and corresponding views in Django. To make the forms for contact appointment booking functional, the backend uses send_mail, as well as a mailserver.

I completed this project while following a coding tutorial by John Elder.


Contact Page screenshot
Screenshot of contact form
Contact Page screenshot 2
Contact form and send_mail in action

Features

  • Home, About, Services, Doctors, Blog, Contact Pages
  • Functional appointment and contact forms
  • Google maps embedding

See code on GitHub here

Sportshop

Node

Sportshop web application

A node.js web application that displays products by category. Products are stored in a PostgreSQL database. features pagination to enhance the user experience. Shopping cart functionality, including a small summary icon, is also included.

See code on GitHub here

Blogging App

React

Node

Mongo

Simple blogging app allowing to create, display and update blogs stored in a database.

Dialogue System



Python

Dialogue Management

The dialogue management system is able to parse natural language user input given via chat. According to user preferences, the system finds suitable restaurants in the database and suggests them to the user. This project was developed in a self-organized team of four student developers, in winter semester 2022/2023. The main parts are the natural language parser, the dialogue management module, and the output module.

The module I contributed to the project is the dialogue management module. It implements a decision tree structure by filling pre-configured slots with information obtained from the input parser module - such as intent, area, pricerange for the restaurant.


See code on GitHub here

Container security



Master's thesis

Escape Games

Overview of Container Runtime Security

Thesis written for the completion of the Computing in the Humanities program at Bamberg University at the Chair for Security and Privacy in Information Systems.
  • Finished: July 2024

Thesis Abstract

Containerization technology has become increasingly popular as corporations adopt cloud architecture solutions. Containers streamline the development, testing, and deployment of applications by bundling them with necessary components, including the operating system environment. However, security concerns remain the primary obstacle to widespread adoption. In multi-tenant environments, such as those offered by Container as a Service (CaaS) providers, the risk of container breakouts is a critical concern. This thesis focuses on identifying the technical features essential for selecting a container runtime software to mitigate the threat of container breakouts. These criteria are developed by gaining a sufficient background understanding of the Linux kernel technologies underlying containerization. We evaluate four popular runtimes - LXC, Apptainer, runC, and gVisor - by examining their static features, architecture, rootless operation capabilities, and publicly known vulnerabilities. Our findings suggest that runC is the least suitable option due to its weak configurations, as well as a history of flaws and lax patching policy. Apptainer stands out for its use in high-performance computing (HPC) due to its immutability guarantees and design-centric integration of rootless containers. LXC presents a reliable choice due to its maturity, while gVisor is worth considering for those seeking the latest innovations. However, to effectively mitigate the threat of container breakouts, it is essential to investigate why they occur empirically – possibly due to leaked credentials or phishing rather than flaws in runtime software.

Book Inventory



Java

Java Database Project

A literature database program for command-line based interaction, student project in summer semester 2023. The database is stored in the form of a XML file and is loaded into the program for modification and can be exported back to XML. It was required to never let exceptions reach the user, but keep a consistent and reasonable flow of interaction anyway. There also had to be two menus, a main menu and a submenu. The menus had to offer the following options:

Database Menu/ Submenu:

  • Add Author
  • Remove Author
  • Add Publication
  • Remove Publication
  • List Authors
  • List Publications
  • Print XML on Console
  • Save XML to File
  • Back to main menu / close without saving

The sub-tasks we had to implement were these:

  • make the correct XML annotations for marshalling/ unmarshalling the file with JAXB
  • implement the logic for manipulating the database (see above)
  • implement the interface for the user

See code on GitHub here

Blog Posts

Start with Django

If you’ve been curious about web development, starting your journey with Django might just be the right choice for you. As a powerful framework, Django is designed to help developers build web applications more easily and efficiently.
Read more

HTTP requests: A beginner's guide

If you're just starting your web development journey, you've likely come across the term "HTTP requests." But what exactly are they, and why are they so important? Don’t worry; we’re here to break it down in a simple and approachable way!
Read more

Your first Node Server

Node.js is a powerful, open-source JavaScript runtime that allows you to build server-side applications with ease. If you’re looking to get started with web development beyond the client side, setting up your first Node server is a great way to begin.
Read more

Email Contact Form in Django

You’re probably aware that a contact form is a crucial component for many websites. In this tutorial, we will guide you through the process of creating a simple yet functional email contact form using Django.
Read more

Your First Full-Stack App

In this blog post, we'll explore how to set up a modern web application using React for the front end, Vite for a fast development experience, and Node.js for your backend. This powerful combination allows you to build dynamic, responsive applications with ease.
Read more

Routing in Express

In Express, a popular web framework for Node.js, setting up routes allows you to build dynamic, user-friendly applications effortlessly. In this tutorial, we’ll cover the essential concepts of routing in Express, including how to create routes, define route parameters, and handle different HTTP methods.
Read more