Meine technische Expertise
Haupttechnologie-Stack
Web-Technologien
Node.js
In Kombination mit React war es mein erster Kontakt mit moderner Webentwicklung.
NPM
Ich habe ein paar NPM-Pakete erstellt, die ich in vielen meiner Projekte verwende, um die Dinge zu vereinfachen.
Express.js
Ich habe angefangen, Express.js zu lernen, weil es einfach ist, kleine und größere APIs zu schreiben.
Redux
Als React-Kontext/Hooks noch nicht existierten und es nur Klassenkomponenten gab (zumindest in meiner Welt), war Redux der beste Weg für die globale Zustandsverwaltung.
Socket.io
Ich verwende Socket.io in meinem Smarthome für jede Aktion. Ich habe auch eine kleine Chat-Anwendung geschrieben.
Frameworks
React
React war mein erster Kontakt mit moderner Webentwicklung. Im Laufe der Jahre verbrachte ich viel Zeit in mehreren Kursen, um alles darüber zu lernen.
Next.js
Als ich die Hauptvorteile von Next.js sah, z.B den eingebauten Router und SSR/SSG war ich verliebt. Ich habe die meisten meiner privaten Projekte von React auf Next.js umgestellt und angefangen, es in Kundenprojekten zu verwenden.
Strapi
Ich verwende Strapi in Privat- und Kundenprojekten, weil es sehr schnell und einfach zu bedienen ist und sich leicht für eigene Bedürfnisse erweitern lässt.
Bootstrap
Hauptsächlich während meiner Berufsausbildung in Kombination mit ASP.net und dem Entity Framework eingesetzt.
React Bootstrap
In vielen meiner älteren Anwendungen verwendet, z.B ein Testprojekt eines eigenen Login-Systems mit Benutzer- und Rechteverwaltung und meinem Password Generator.
MaterializeCSS
Verwendet in der ersten Version meines Smarthomes und anderer Anwendungen in meinen Anfangsjahren, weil es mit einfachem HTML sehr einfach zu entwickeln war.
Tailwind CSS
TailwindCSS ist mein bevorzugtes "Framework" für Kundenprojekte. Es ist super einfach zu bedienen, hält die Benutzeroberfläche konsistent und ist auch sehr kompakt.
MaterialUI
Wird stark in meinem Smarthome verwendet, aber auch in vielen anderen Projekten aufgrund der Möglichkeiten und UI-Komponenten für fast alles in kleinen und großen Anwendungen.
Wordpress
Ich habe Wordpress in einem Kundenprojekt verwendet, weil der Kunde es haben wollte. Ich mag es nicht, weil es in PHP geschrieben und im Vergleich zu Next.js-Projekten sehr langsam ist.
NestJS
Ich habe NestJS gelernt, da ich eine komplexe API erstellen wollte ohne dabei viel Zeit in einfache Dinge wie z.B. Input-Validierung zu investieren. Da NestJS auf Express.js basiert, fiel es mir sehr leicht.
Programmiersprachen
C#
C# war mein erster Kontakt zur Softwareentwicklung überhaupt. Ich habe mehrere Desktop-Apps entwickelt. Später habe ich es in meiner Berufsausbildung wieder eingesetzt.
C++
Während meiner Berufsausbildung habe ich Firmware für Sensoren geschrieben. Aber ich nutze es auch in privaten Projekten, wie meinem Smarthome, um die Firmware für die Mikrocontroller zu schreiben.
PHP
Nachdem ich meine Karriere als Webentwickler mit reinem HTML begonnen hatte, brauchte ich eine Möglichkeit, größere Websites zu schreiben, ohne Tausende von Zeilen von einer HTML-Datei in eine andere zu kopieren. Also habe ich PHP gelernt. Ich habe damit auch das Frontend meines ersten Smarthomes geschrieben.
HTML
Als ich mit der Webentwicklung anfing, hatte ich keine Ahnung von JS oder Frameworks. Ich habe nur einfaches HTML verwendet.
CSS
Wenn es ums Styling geht, ist CSS der beste Weg.
SCSS
SCSS zu lernen war eine große Erleichterung. Jetzt verwende ich nur noch SCSS, wo immer es möglich ist, wenn es ums Styling geht.
JavaScript
Nachdem ich Typescript gelernt hatte, musste ich nur noch in meiner Berufsausbildung JavaScript verwenden.
TypeScript
Ins kalte Wasser geworfen, als ich eigene VS-Code-Erweiterungen entwickeln wollte, musste ich TypeScript lernen. Jetzt verwende ich es überall wegen seiner Typsicherheit und perfekten Codevervollständigung.
Dart
Ich habe Dart zusammen mit Flutter gelernt, um nativ mobile Anwendungen zu erstellen.
Flutter
Ich habe Flutter gelernt, um native mobile Anwendungen zu erstellen. Eine Version meines Smarthomes wurde auch als Flutter-App geschrieben. Später habe ich mich entschieden, wieder eine Web-App zu schreiben, da diese unabhängig vom Betriebssystem ist (Flutter Web gab es damals noch nicht)

Python
Zuerst verwendet, um das Backend meines Smart Home zu schreiben. Jetzt verwende ich Python nur noch in kleinen Skripten, z.B. um Informationen über verbundene VPN-Clients in meinem Smart Home zu erhalten.
Datentechnologien
MySQL
Ich habe schon immer MySQL-Datenbanken verwendet. Deshalb habe ich mich entschlossen, zu lernen, wie man die komplexesten Abfragen schreibt.
Firebase
Ich habe angefangen, Firebase zu verwenden, weil es einfach in Webanwendungen zu implementieren ist. Ich habe es wegen seiner kostenlosen Stufe und der Möglichkeit, Veranstaltungen zu abonnieren, in einigen kleinen Projekten verwendet. Ich habe auch ein oder zwei Bewerbungen für Freunde auf Firebase gehostet.
MongoDB
Ich habe MongoDB gelernt, um das Wissen zu haben, es zu benutzen. Da ich noch keinen Hosting-Provider hatte, der es unterstützte, habe ich es nie in Produktionsprojekten verwendet.
PostgreSQL
Ich habe 2021 angefangen, es zu verwenden, weil es in den meisten Fällen viel schneller als MySQL ist.
MQTT
Ich verwende MQTT in meinem Smarthome. Es bietet mir fast Kommunikation fast ohne Latenz zwischen meinem Backend und den Mikrocontrollern.
Sequelize
Zu meiner JavaScript-Zeit war Sequelize der einfachste Weg, um auf Datenbanken zuzugreifen, ohne die Abfragen selbst schreiben zu müssen.
TypeORM
Als ich TypeORM entdeckte, hörte ich auf, Sequelize zu verwenden. TypeORM hat eine viel bessere TypeScript-Unterstützung und eine bessere Dokumentation.
Prisma ORM
Ich verwende Prisma ORM, weil es eine umfangreiche und zugleich intuitiv bedienbare Query-API bietet. Besonders in Kombination mit NestJS ermöglicht es eine saubere, typisierte und effiziente Datenbankintegration.
Anderes
Mac OS
Entwicklung und täglicher Betrieb in macOS-Umgebungen einschließlich Unix-Werkzeugen und Anwendungsworkflows.
Windows
Entwicklung und Systembetrieb unter Windows einschließlich PowerShell, Desktop-Werkzeugen und plattformübergreifenden Workflows.
Ubuntu
Administration von Ubuntu-Arbeitsplätzen und -Servern einschließlich Paketen, Diensten, Netzwerken und Deployments.
Debian
Administration und Betrieb von Debian-basierten Servern und Entwicklungsumgebungen.
Raspberry Pi
Aufbau und Betrieb kompakter Linux-Systeme für Automatisierung, Netzwerke, Sensoren und individuelle Hardware-Projekte.
Git
Versionsverwaltung mit strukturierten Branches, fokussierten Commits, Reviews und nachvollziehbaren Release-Verläufen.
GitLab
Repository-Verwaltung, Merge Requests, CI/CD-Pipelines, Releases und Container-Registry-Workflows in GitLab.
GitHub
Zusammenarbeit in Repositories, Pull Requests, Issue-Workflows, Releases und CI/CD-Automatisierung mit GitHub Actions.
VS Code
Effiziente plattformübergreifende Entwicklung mit angepassten Workspaces, Erweiterungen, Debugging und Aufgabenautomatisierung.
Visual Studio
Entwicklung und Debugging von .NET- und C#-Anwendungen mit Visual Studio.
Arduino
Entwicklung von Mikrocontroller-Projekten mit Arduino-Boards, Sensoren, Aktoren und Embedded C/C++.
Docker
Containerisierung von Anwendungen mit reproduzierbaren Images, Compose-Umgebungen und automatisierten Auslieferungsworkflows.