Software engineering student and full stack developer based in Germany, currently building internal web applications at ODDO BHF SE. I work primarily with Angular, .NET and Java, and self-host and automate most of what I run.
- Name: Seraphin Berger
- Age: 22
- Location: Germany
- Education: Pursuing B.Eng. Software Engineering and Media Computing at Hochschule Esslingen
- Current Position: Full Stack Developer at ODDO BHF SE in Frankfurt am Main, Germany
- Employment Type: Working Student (Werkstudent) since November 2025
- Responsibilities: Developing and maintaining an internal web application
- Technologies: Angular, TypeScript, C# .NET 8, Oracle SQL
- Languages: Java, C#, TypeScript, HTML, CSS, SQL
- Infrastructure: Debian Linux, TrueNAS Scale, Hetzner
- Containerization: Docker, Docker Compose
- Services: Cloudflare, OpenAI API, GitHub Actions
- Website: mcmodersd.de
- LinkedIn: Seraphin Berger
- Email: business@mcmodersd.de
YEPPBot | Java Twitch Bot
This repository hosts the source code for YEPPBot, a comprehensive Twitch bot featuring numerous tools to entertain and manage your Twitch channel.
- Java: The primary programming language used for developing the bot.
- Docker: Used for containerizing the application, including a published Docker image and Docker Compose setup for easy self-hosting.
- GitHub Actions: Used for continuous integration and deployment automation through YAML configuration.
- Automated Build and Deployment: Utilizes GitHub Actions for CI/CD and multi-architecture support releases.
- Easy Self-Hosting: Comes with a ready-to-use Docker image and Docker Compose configuration for straightforward deployment.
- Multi-API Integration: Integrates with various third-party APIs to provide a wide range of functionalities:
- OpenAI-Wrapper: A custom wrapper to interact with OpenAI APIs for advanced functionalities.
- OpenWeatherMap: Fetches weather information to provide real-time weather updates in the chat.
- HTTPS-Server: A lightweight HTTPS server with automatic TLS certificate management via ACME.
This repository serves as a demonstration of my skills in developing, integrating, and managing a complex Java application with practical applications in the real world.
It is my biggest project yet, highlighting my proficiency in building scalable, maintainable, and feature-rich software solutions.
MCmoderSD.de | Personal Portfolio & Homepage
This repository hosts the source code for my personal portfolio and homepage. It's an Angular application that presents who I am, the projects I've built, the open-source packages I maintain, and the self-hosted services running on my home server.
- Angular 22: Standalone-first, signal-based components, native control flow, and
input()/output()/computed()for state. - TypeScript: Strict mode throughout.
- Angular Material: Layered with a custom, hand-built design system, CSS custom properties, OKLCh colors, wide-gamut/P3 support, and a dark/light color-scheme switch.
- SSR & Pre-rendering: Server-side rendering and static pre-rendering via
@angular/ssr, served through a minimal Express server. - Vitest: Unit testing.
- Docker: Multi-stage, multi-architecture (
amd64+arm64) image, built with Buildx on native per-arch GitHub Actions runners with registry-backed layer caching.
- Accessible by design: Built to pass AXE checks and WCAG AA minimums — focus management, color contrast, and ARIA attributes are treated as requirements, not afterthoughts.
- Custom design system: A cursor-following spotlight, a floating custom scrollbar, and a wide-gamut color palette that degrades gracefully on unsupported displays.
- Automated CI/CD: GitHub Actions builds and publishes the multi-arch Docker image to Docker Hub on every push, with Dependabot keeping GitHub Actions and the base image up to date automatically.
- Production hosting: Runs behind a Caddy reverse proxy that provisions and renews its own TLS certificates via the Cloudflare DNS challenge, with custom static error pages (404, 500, 502, 503, 504, ...) styled to match the site.
- Security-conscious server: Strict host allowlisting, security headers (HSTS, X-Frame-Options, Referrer-Policy, ...), and Brotli/gzip compression on the Express layer.
This repository demonstrates my ability to design and ship a production web application end-to-end: a polished, accessible frontend, a hardened SSR backend, and a fully automated build, security-update, and deployment pipeline.
Tab Scraper | TypeScript Chrome Extension
A lightweight, privacy-first Chrome extension that collects the URLs of all your open tabs and saves them as a text file, in a single click.
- TypeScript: The primary language used for all extension logic, compiled to ESNext via
tsc. - Chrome Extension APIs: Leverages the
tabs,downloads,storage,scripting, andactiveTabpermissions for full browser integration. - Manifest V3: Built on the latest Chrome extension standard using a service worker background script.
- One-Click Export: Gather all open tab URLs instantly and save them as a
.txtfile. - Advanced Filtering: Include or exclude tabs by URL prefix, suffix, or custom regular expressions.
- Invert Selection: Flip any filter to exclude matching patterns instead.
- Persistent Settings: Filter preferences sync across your Chrome profile via
chrome.storage.sync. - Privacy-First: All data stays local — no external servers, no tracking, no telemetry.
- Modern UI: Dark mode, responsive layout, and polished styling out of the box.
Available on the Chrome Web Store or as a self-hosted build via the GitHub releases page.
- Mainboard: Asus ROG Strix B550-F Gaming WiFi 2
- CPU: AMD Ryzen 7 5800X
- AIO Liquid Cooler: NZXT Kraken X63 RGB
- RAM: Corsair Vengeance RGB Pro 2x32GB 3600MHz CL18
- GPU: Zotac Gaming GeForce RTX 5070 TI SOLID SFF
- PSU: BeQuiet! Pure Power 12 M 750W
- NVMe M.2 SSD:
- C: Drive: WD Black SN850X 2TB
- D: Drive: WD Black SN850 1TB
- HDD: Seagate Desktop SSHD 2TB
- NIC: Intel X540-AT2 Dual 10GBit/s
- Case: Kolink Balance
- OS: Windows 11 Pro
- Monitors:
- Monitor Mount: BONTEC Monitor Bracket
- WebCam: Logitech StreamCam
- Microphone: RØDE NT-USB
- Headset: HyperX Cloud 2
- Keyboard: Wooting Two HE
- Keycaps: Wooting Double Shot Backlit PBT Keycaps
- Mouse: Logitech Pro X Superlight 2
- Mousepad:Glorious 3XL Extended Mousepad
- Controller: Xbox Wireless Controller Custom Design
- VR Headset: Meta Quest 3S
- VR Head-Strap: KIWI Design H4 Boost
- Notebook: Samsung Galaxy Book6 Pro 16" (NP960XJG-KG6DE)
- CPU: Intel Core Ultra X7 358H
- GPU: Intel Arc B390 (integrated)
- RAM: 32GB LPDDR5X 9600 MT/s (on board)
- NVMe: 1TB NVMe SSD
- Display: 16" Dynamic AMOLED 2X, 2880x1800 (WQXGA+), 30-120Hz
- OS: Windows 11 Pro
- Mouse: SteelSeries Rival 3
- Mainboard: Asus Prime B550-Plus
- CPU: AMD Ryzen 5 3400G
- RAM: 4x 8GB 2400MHz
- iGPU AMD Radeon RX Vega 11
- GPU: ASRock Intel Arc A380 6GB OC
- PSU: BeQuiet! Pure Power 13 M 550W
- NIC: Intel X540-AT2 Dual 10GBit/s
- Case: Inter-Tech 4U-40248
- OS: TrueNAS Scale
- Drives:
- 3x 500GB HHD's
- 5x 4000GB HHD's
- 1x 240GB SSD
- Smartphone: Samsung Galaxy S26 Ultra 1TB
- Tablet: Samsung Galaxy Tab S8+
- EarBuds: Samsung Galaxy Buds 4 Pro
- Watch: Samsung Galaxy Watch 4 44mm
- Internet ISP: Vodafone 250mbit/s ↓ 40mbit/s ↑
- Modem: AMV FRITZ!Box 7530
- Router: Ubiquiti UniFi Dream Router 7
- Access Point: Ubiquiti UniFi U7 Lite
- Smart Home Hub: Home Assistant
- Zigbee Antenna: Sonoff Zigbee 3.0 USB Dongle Plus
- Smart Plugs: TP-Link Tapo P110
- Smoke Detector: Aqara Smoke Detector



