# Moin! Ich bin Daniel. 👋 [English version](./README.md) ### Papi 1.0 | Generation X | T-Shirt & Tattoos | Kaffeetrinker Zwischen Home-Office, Rock-Konzerten und Gaming-Sessions schlägt mein Herz fürs Tüfteln und Nerden. Aktuell entwickle ich SongFlip, einen plattformübergreifenden Musik-Link-Konverter für Android & iOS, den FamWake Familienwecker für stressfreie Morgenroutinen sowie MapFlip. Dabei bin ich ständig auf der Suche nach neuen Ideen und baue an weiteren Projekten. Wenn ich nicht gerade an neuen Features schraube, findet man mich wahrscheinlich auf dem nächsten Festival oder mit einem Controller in der Hand. :) --- ### 📂 Projekte & Portfolio #### 🔓 Open Source **[SongFlip](https://github.com/thefraggle/songflip)** – Automatischer Zero-Click Musik-Link-Konverter für Android & iOS zwischen Spotify, Apple Music, YouTube Music, Tidal, Deezer & Amazon Music. *Lizenz:* GPL-3.0 | *Stack:* Kotlin Multiplatform (KMP), Jetpack Compose, Swift, SwiftUI, Ktor, Firebase Cloud Functions, Aptabase 👉 **[APK herunterladen](https://github.com/thefraggle/songflip/releases)** | **Google Play (Closed Testing)** | **[Landingpage (songflip.link)](https://songflip.link)** | **[Quellcode](https://github.com/thefraggle/songflip)** **[FamWake](https://github.com/thefraggle/familienwecker)** (Familienwecker) – Eine smarte Wecker-App, die den morgendlichen Stress einer Familie durch Struktur und Entspannung ersetzt. 🏆 *#3 Daily Winner bei Uneed* *Lizenz:* GPL-3.0 | *Stack:* Kotlin, Jetpack Compose, Swift, SwiftUI, Firebase Auth/Firestore/Cloud Functions, Aptabase, RevenueCat 👉 **[Im App Store laden](https://apps.apple.com/app/famwake-family-alarm-clock/id6770643027)** | **[Bei Google Play herunterladen](https://play.google.com/store/apps/details?id=de.familienwecker.famwake)** | **[Landingpage (familienwecker.de)](https://familienwecker.de)** | **[Quellcode](https://github.com/thefraggle/familienwecker)** **[MapFlip](https://github.com/thefraggle/mapflip)** – Fängt Karten-Links (Apple Maps, Bing, OpenStreetMap, HERE, Waze) auf Android ab und leitet sie nahtlos an die favorisierte Navigations-App weiter (Google Maps, Waze, Organic Maps, OsmAnd). 🏆 *#2 Daily Winner bei Uneed* *Lizenz:* MIT | *Stack:* Kotlin, Jetpack Compose (Material 3), FOSS Flavor (Zero Permissions) & Play Flavor (Aptabase) 👉 **[Bei Google Play herunterladen](https://play.google.com/store/apps/details?id=de.goork.mapflip)** | **[APK herunterladen](https://github.com/thefraggle/mapflip/releases)** | **[Landingpage (goork.de/mapflip)](https://goork.de/mapflip/)** | **[Quellcode](https://github.com/thefraggle/mapflip)** **[Pulse](https://github.com/thefraggle/pulse)** – Eine moderne, selbst-hostbare Mentimeter-Alternative für Live-Umfragen und Wordclouds. *Lizenz:* MIT | *Stack:* React (Vite), Tailwind CSS v4, Socket.io, Node.js/Express, Prisma (SQLite) 👉 **[Live Demo](https://pulse.goork.de/GHJGCM)** | **[Quellcode](https://github.com/thefraggle/pulse)** #### 🌐 Webprojekte **[goork.de](https://goork.de)** – Mein zentraler App- und Service-Hub für öffentliche und private Projekte (FamWake, MapFlip, Pulse, Goork.it). *Stack:* Vanilla HTML/CSS/JS (ohne Framework) 👉 **[goork.de besuchen](https://goork.de)** **[goork.it](https://goork.it)** – Schlanker URL-Shortener mit Wunsch-Aliasen, Auto-Expiry, Admin-Dashboard und n8n-API-Schnittstelle. *Stack:* React (Vite), Tailwind CSS v4, Node.js/Express, Prisma (SQLite) 👉 **[goork.it besuchen](https://goork.it)** **[notthoff.org](https://notthoff.org)** – Meine digitale Visitenkarte im Linktree-Stil mit einem Dark-Glassmorphism-Design. *Stack:* Vanilla HTML/CSS/JS (ohne Framework) 👉 **[notthoff.org besuchen](https://notthoff.org)** **[schlawinerdogs.de](https://schlawinerdogs.de)** – Eine responsive Landingpage für eine Beißkorb-Beratung. *Stack:* Vanilla HTML/CSS/JS 👉 **[schlawinerdogs.de besuchen](https://schlawinerdogs.de)** #### ⚙️ Self-Hosted, Automation & Infrastruktur **Forgejo Git-Infrastruktur** – Meine selbstgehostete Forgejo-Instanz als primäre Entwicklungsplattform und Haupt-Repository, mit automatisiertem Push-Mirroring und Backup-Replikation nach GitHub. *Stack:* Forgejo, Git, Docker, Bash **n8n Automation ("Neo")** – Mein selbstgehosteter Telegram-basierter KI-Assistent „Neo“, gesteuert über 15+ n8n Workflows, GPT-4o und diverse Tools (Mail-Klassifizierung, Kalender-Sync, Web-Recherche). *Stack:* n8n, Node.js, Docker, Nginx Proxy Manager, OpenAI API **Paperless-ngx** – Selbstgehostetes Dokumenten-Management-System mit automatischer OCR-Texterkennung und Archivierung für die papierlose Organisation. *Stack:* Paperless-ngx, OCR, PostgreSQL, Redis, Docker **Umami Analytics** – Selbstgehostete, datenschutzfreundliche Web-Analytics-Plattform ohne Cookies oder Consent-Banner für alle eigenen Webprojekte. *Stack:* Umami, Next.js, PostgreSQL, Docker **Aptabase & TeleGoork Analytics** – Selbstgehostete, datenschutzfreundliche In-App-Telemetrie für mobile Apps auf Basis von ClickHouse & PostgreSQL, aggregiert in einem eigenen Mobile-First PWA-Dashboard. *Stack:* Aptabase, ClickHouse, PostgreSQL, Hono, PWA, Docker --- ### 🛠 Tech Stack & Tools [![Kotlin](https://img.shields.io/badge/kotlin-%237F52FF.svg?style=for-the-badge&logo=kotlin&logoColor=white)](https://kotlinlang.org/) [![Kotlin Multiplatform](https://img.shields.io/badge/Kotlin_Multiplatform-7F52FF?style=for-the-badge&logo=kotlin&logoColor=white)](https://kotlinlang.org/docs/multiplatform.html) [![Swift](https://img.shields.io/badge/swift-F54A2A?style=for-the-badge&logo=swift&logoColor=white)](https://developer.apple.com/swift/) [![Android](https://img.shields.io/badge/Android-3DDC84?style=for-the-badge&logo=android&logoColor=white)](https://developer.android.com/) [![iOS](https://img.shields.io/badge/iOS-000000?style=for-the-badge&logo=ios&logoColor=white)](https://developer.apple.com/ios/) [![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge&logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![JavaScript](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E)](https://developer.mozilla.org/en-US/docs/Web/JavaScript) [![React](https://img.shields.io/badge/react-%2320232a.svg?style=for-the-badge&logo=react&logoColor=%2361DAFB)](https://react.dev/) [![HTML5](https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge&logo=html5&logoColor=white)](https://developer.mozilla.org/en-US/docs/Web/HTML) [![CSS3](https://img.shields.io/badge/css3-%231572B6.svg?style=for-the-badge&logo=css3&logoColor=white)](https://developer.mozilla.org/en-US/docs/Web/CSS) [![TailwindCSS](https://img.shields.io/badge/tailwindcss-%2338B2AC.svg?style=for-the-badge&logo=tailwind-css&logoColor=white)](https://tailwindcss.com/) [![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge&logo=node.js&logoColor=white)](https://nodejs.org/) [![Firebase](https://img.shields.io/badge/Firebase-FFA611?style=for-the-badge&logo=firebase&logoColor=white)](https://firebase.google.com/) [![PostgreSQL](https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge&logo=postgresql&logoColor=white)](https://www.postgresql.org/) [![Prisma](https://img.shields.io/badge/Prisma-3982CE?style=for-the-badge&logo=Prisma&logoColor=white)](https://www.prisma.io/) [![SQLite](https://img.shields.io/badge/sqlite-%2307405e.svg?style=for-the-badge&logo=sqlite&logoColor=white)](https://www.sqlite.org/) [![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white)](https://www.docker.com/) [![Linux](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black)](https://www.linux.org/) [![Nginx](https://img.shields.io/badge/nginx-%23009639.svg?style=for-the-badge&logo=nginx&logoColor=white)](https://nginx.org/) [![Forgejo](https://img.shields.io/badge/Forgejo-%23F25923.svg?style=for-the-badge&logo=forgejo&logoColor=white)](https://forgejo.org/) [![Git](https://img.shields.io/badge/git-%23F05033.svg?style=for-the-badge&logo=git&logoColor=white)](https://git-scm.com/) [![n8n](https://img.shields.io/badge/n8n-EA4B71?style=for-the-badge&logo=n8n&logoColor=white)](https://n8n.io/) [![OpenAI](https://img.shields.io/badge/OpenAI-%23412991.svg?style=for-the-badge&logo=openai&logoColor=white)](https://openai.com/) --- ### 💬 Lass uns vernetzen! [![Website](https://img.shields.io/badge/notthoff.org-My_Hub-222222?style=for-the-badge&logo=safari&logoColor=white)](https://notthoff.org) [![LinkedIn](https://img.shields.io/badge/linkedin-%230077B5.svg?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/daniel-notthoff) [![Bluesky](https://img.shields.io/badge/Bluesky-0285FF?style=for-the-badge&logo=bluesky&logoColor=white)](https://bsky.app/profile/thefraggle.bsky.social) [![Instagram](https://img.shields.io/badge/Instagram-%23E4405F.svg?style=for-the-badge&logo=Instagram&logoColor=white)](https://instagram.com/dnotthoff) --- ### ✊ Haltung **#fckafd #noafd #fcknzs** Kein Platz für Intoleranz. 🏳️‍🌈 --- *“Stay hungry, stay foolish (and drink more coffee).”* ☕️ [![Umami telemetry](https://telemetry.goork.de/p/huUqAzoUK)](https://telemetry.goork.de)