Frontend Developer

TimMüller

Angular Developer seit v8.
Unvernünftig verliebt in gute UI.

scrollen

Werdegang

  1. Die Anfänge: Immer am Bauen

    Vor den Computern gab es Lego, Zeichnungen und einen Kopf voller Ideen. Immer mit der Frage, wie Dinge anders funktionieren könnten. Dieser Instinkt ist geblieben.

  2. ~2014: Minecraft hat alles verändert

    Eine Welt, in der Kreativität keine Decke hatte. Dinge gebaut, nach denen niemand gefragt hat. Dann an die Grenzen gestoßen und angefangen zu fragen, warum es sie überhaupt gibt.

  3. 2016: Java, um die Regeln zu brechen

    Das Spiel hat nicht gemacht, was ich wollte. Also habe ich gelernt, es zu ändern. Code wurde einfach ein weiteres Werkzeug, um Dinge nach meiner Vorstellung zu biegen.

  4. ~2019: Websites für echte Menschen

    Von Spielen ins Web. Seiten für Firmen aus der Region gebaut. Gemerkt, dass gutes Design genauso wichtig ist wie funktionierender Code. Wahrscheinlich wichtiger.

  5. 2021: Der erste richtige Job

    Aus einem Praktikum wurde ein Job als Full Stack Developer, neben einem dualen Studium, das sich als nicht mein Weg herausstellte. Legacy Angular und PHP, und meine erste große Migration von Angular 8 auf 12.

  6. 2023: Ein Jahr zum Umschauen

    Den Laptop gegen einen Rucksack getauscht. Europa, Japan und Thailand. Manchmal ist ein Umweg der beste Weg nach vorn.

  7. Heute: Angular & das ganze Bild

    Frontend Developer, dem es wirklich nicht egal ist. Ausbildung abgeschlossen, und heute baue ich Angular Module für eine Plattform für Unternehmen, komplett remote. Immer noch dasselbe Kind, das nichts so lassen konnte, wie es ist.

Ausgewählte Arbeiten

10.688Einträge33geladen20Zeilen in der Seite

Rechnungen25

Öffne ein paar Ordner und scroll dann. Pfeiltasten gehen auch.

01 · 2026

Ein Baum für zehntausend Dokumente

Ein Archivbaum für eine Dokumentenplattform für Unternehmen, der auch mit mehr als zehntausend Einträgen schnell bleibt. Das Original steht unter NDA, deshalb ist das hier ein Nachbau mit ausgedachten Daten. Probier ihn aus.

Aufgabe
Leute durchsuchen tiefe Archive mit tausenden Ordnern und Dokumenten. Alles auf einmal zu laden und zu zeichnen macht die Seite langsam beim Öffnen und beim Scrollen.
Ansatz
Ordner laden ihren Inhalt erst, wenn man sie öffnet, und nur die sichtbaren Zeilen sind in der Seite. Der Zustand liegt in Signals, also aktualisiert ein geöffneter Ordner nur, was sich geändert hat. Die Tastatur funktioniert wie in einem Dateiexplorer.
Ergebnis
Egal wie groß das Archiv wird, die Seite hält immer nur etwa einen Bildschirm voller Zeilen. Schau beim Scrollen auf den Zähler über dem Baum.

Frontendentwicklung

  • Angular
  • Signals
  • TypeScript
  • Accessibility
Der Storybereich dieser Seite: die Pixelfigur läuft über eine Regenbogenstraße am Himmel

02 · Seit 2025

Dieses Portfolio

Eine Story zum Durchscrollen: Du läufst durch eine Pixelwelt, in der sich der Weg mit jedem Kapitel ändert.

Aufgabe
Zeigen, wer ich bin, und zwar mehr als ein Lebenslauf. Ohne dass die Seite zur Diashow aus leeren Bildschirmen wird oder zu einem Template, das aussieht wie jede andere Entwicklerseite.
Ansatz
Angular mit Signals und zoneless Change Detection, in zwei Sprachen zu statischem HTML vorgerendert. Die Story ist eine kleine Pixelwelt, durch die man beim Scrollen läuft. Jedes Kapitel ändert den Boden unter den Füßen. Die gesamte Pixelart wird per Code auf einem Canvas gezeichnet.
Ergebnis
Keine Anfragen an fremde Server, denn Fonts und Daten werden beim Build eingebacken. Jeder Push wird gelintet, getestet, in einem echten Browser geprüft und auf meinen eigenen Server deployt.

Design, Entwicklung & Hosting

  • Angular
  • TypeScript
  • Canvas
  • i18n
  • Docker

So arbeite ich

Ein paar Dinge, die mir wichtig sind, jeweils mit kleiner Demo.

01 · Figma

Erst skizzieren, dann bauen

Figma öffne ich, wenn ich nachdenken muss. Meistens um eine Komponente zu skizzieren oder herauszufinden, warum etwas komisch aussieht.

02 · Angular

Klarer, lesbarer State

Ich arbeite seit v8 mit Angular. Signals machen State deutlich leichter nachvollziehbar. Beweg einen Regler und sieh, was sich aktualisiert.

store.ts
qty 2price 12 €
total 24 €
total = computed(() => qty() * price())

03 · Tailwind

Schnell von der Idee zum Bildschirm

Bei Utility Classes war ich anfangs skeptisch. Inzwischen mag ich es, das Styling direkt neben dem Markup zu haben.

<button class=" ">Kontakt aufnehmen</button>
VorschauKontakt aufnehmen

04 · Handwerk

Auf Details achten

Ich versuche, Dinge schnell, barrierefrei und getestet zu halten. Diese Seite wird bei jedem Push geprüft.

Bei jedem Push

  1. Lint
  2. Unittests
  3. Build
  4. Browsertests
  5. Lighthouse
  6. Deploy
Lighthouse · timlucasmueller.com
  • Performance100
  • Barrierefreiheit100
  • Best Practices100
  • SEO100

Kontakt

Was auf dem
Herzen?

Du suchst jemanden fürs Frontend, hast eine Frage oder bist einfach neugierig? Hier findest du mich. Kein Druck, keine Formulare, nur eine Nachricht.

hallo.

Worum geht's?

Senden