Softwareentwicklung,
die den Betrieb übersteht
Portale, Web-Apps und interne Werkzeuge für Häuser, die über Jahre gewachsen sind. Ein Team von der ersten Skizze bis zur Rufbereitschaft — keine Übergabe, kein Staffellauf.
Softwareentwicklung
aus Köln
- Individualsoftware
- Web-Apps & Portale
- Kundenportale
- Discovery & Prototyping
- Design-Systeme
- Barrierefreiheit (BITV 2.0)
milkycode ist eine Agentur für Softwareentwicklung aus Köln. Wir entwickeln Individualsoftware, Webanwendungen und interne Werkzeuge für Unternehmen, denen Standardsoftware nicht mehr reicht: Kundenportale, Fachanwendungen, Verwaltungs- und Buchungssysteme. Statt ein fertiges Produkt zurechtzubiegen, bauen wir das, was zu euren Abläufen passt — und binden die Systeme an, die ihr ohnehin schon nutzt.
Technisch arbeiten wir mit TypeScript und React im Frontend sowie mit PHP, Laravel und Node.js im Backend, dazu PostgreSQL und MySQL als Datenbanken und Docker auf Linux für Auslieferung und Betrieb. Saubere Schnittstellen, automatisierte Tests und nachvollziehbare Releases gehören zur Grundausstattung, nicht zur Ausbaustufe.
Barrierefreiheit nach BITV 2.0 ist Teil des Entwurfs und keine Nachbesserung — besonders bei Anwendungen für Verbände, Kammern und öffentliche Auftraggeber. Als inhabergeführte Softwareagentur begleiten wir Projekte von der ersten Discovery über den Prototyp bis in den produktiven Betrieb, mit demselben Team über die ganze Strecke.
Woran es meistens hakt
-
Drei Dienstleister, keiner zuständig
Design, Entwicklung und Betrieb liegen bei verschiedenen Firmen. Beim Fehler zeigt jeder auf den nächsten.
-
Software, die niemand mehr anfasst
Der Entwickler von damals ist weg, dokumentiert wurde nichts, und jede Änderung ist ein Risiko.
-
Ein Angebot, das nach hinten losgeht
Der Festpreis stand, bevor jemand die Schnittstelle gesehen hat. Ab Monat drei kommen die Nachträge.
-
Features, die keiner benutzt
Gebaut wurde, was im Workshop laut gefordert wurde — nicht das, was im Alltag fehlt.
Was wir dagegen tun
-
Ein Team, eine Verantwortung
Strategie, Design, Entwicklung und Betrieb sitzen bei uns im selben Raum. Es gibt genau einen Ansprechpartner.
-
Code, den ihr weitergeben könnt
Euer Repository, dokumentierte Schnittstellen, keine Abhängigkeit von uns. Ihr könnt jederzeit ohne uns weiter.
-
Erst messen, dann schätzen
Ein Vorlauf, in dem wir eure Systeme wirklich ansehen. Danach eine Schätzung mit Bandbreite.
-
Die schwierigste Stelle zuerst
Wir bauen dort, wo das Risiko sitzt, nicht dort, wo es am schnellsten hübsch aussieht.
Ein Vorgang, quer durch die Abteilung.
-
Portal
Eingang
Die Anfrage kommt strukturiert an: Formular statt Freitext, Pflichtfelder statt Nachfragen. Was fehlt, fällt sofort auf und nicht erst beim Bearbeiten.
-
Portal
Zuständigkeit
Regeln entscheiden, wer übernimmt — sichtbar auch für die, die gerade nicht dran sind. Niemand muss mehr fragen, ob sich schon jemand kümmert.
-
Fachsystem
Prüfung
Stammdaten kommen aus dem führenden System, nicht aus einer Kopie in einer Tabelle. Widersprüche werden angezeigt, nicht stillschweigend überschrieben.
-
Portal
Bearbeitung
Der Bearbeiter sieht, was zu diesem Fall gehört, und den Verlauf dazu — ohne ihn in drei Postfächern zusammenzusuchen.
-
Portal
Freigabe
Wer entscheiden muss, bekommt genau das zu sehen, was er entscheiden soll. Jede Freigabe landet im Protokoll, mit Name und Grund.
-
ERP
Abschluss
Der Vorgang landet dort, wo er hingehört — einmal, und nicht zusätzlich als Mail an vier Verteiler.
Wir fangen bei diesem Ablauf an, nicht beim Framework. Die Technik ist danach eine Folge von Entscheidungen, die hier schon getroffen wurden.
Nicht nur Code, sondern alles drumherum.
-
Systemüberblick
Eine Karte eurer Landschaft, die auch Nicht-Techniker lesen können — inklusive der Stellen, die weh tun.
-
Schnittplan
Was zuerst gebaut wird, was später, was gar nicht. Mit Begründung, nicht nach Bauchgefühl.
-
Lauffähige Software
Alle vierzehn Tage etwas Fertiges in Produktion, nicht ein großer Wurf am Ende.
-
Tests, wo Geld hängt
Automatisierte Tests für alles, was Bestellungen, Preise oder Zugriffsrechte berührt.
-
Dokumentation
Architekturentscheidungen mit Begründung, damit in zwei Jahren nachvollziehbar ist, warum etwas so ist.
-
Betriebsübergabe
Monitoring, Alarme und Runbooks — auch dann, wenn ihr den Betrieb selbst übernehmt.
Vier Phasen, immer in dieser Reihenfolge.
-
01
Klären
zuerst, immer
Systeme ansehen, Annahmen aufschreiben, die riskanteste Stelle finden. Ergebnis: Systemüberblick, Schnittplan und eine ehrliche Schätzung.
-
02
Konstruieren
sobald der Schnitt steht
Ein festes Team, eine Codebasis, Releases alle vierzehn Tage. Reviews sind der Ort, an dem Wissen verteilt wird.
-
03
Kalibrieren
nach dem Launch
Messen, nachschärfen, wegwerfen, was niemand benutzt. Wir tragen den Pager mit.
-
04
Übergeben
wann immer ihr wollt
Saubere Übergabe an euer Team — oder wir bleiben. Beides ist vorgesehen, keins ist Bedingung.
- PHP
- Docker
- Laravel
- TypeScript
- React
- WordPress
- Node.js
- Magento
- MySQL
- Shopware
- JavaScript
- Linux
- PostgreSQL
Techstack
Womit wir entwickeln
Wir wählen die Technik nach eurem Fall, nicht nach unserer Vorliebe — und setzen konsequent auf Open Source, damit euch niemand an ein Lizenzmodell bindet.
Was „fertig“ bei uns heißt.
Der Satz „ist fast fertig“ hat schon mehr Projekte verzögert als jede technische Schwierigkeit. Deshalb ist „fertig“ bei uns keine Einschätzung, sondern eine Bedingung — und sie steht im Code, nicht in einer Präsentation.
// Was „fertig“ heißt. Ohne diese vier Punkte geht nichts live —
// auch nicht „ausnahmsweise, weil der Termin drückt“.
const fertig = (feature: Feature) =>
feature.hatTests // grün, nicht „läuft bei mir“
&& feature.istDokumentiert // im Handbuch, nicht im Kopf
&& feature.istBarrierefrei // BITV 2.0, mit der Tastatur geprüft
&& feature.hatBesitzer; // jemand bei euch, nicht bei uns
export const release = (backlog: Feature[]) =>
backlog.filter(fertig); // der Rest wartet — auch wenn er fast fertig ist
Drei Modelle, ehrlich beschrieben.
-
Festpreis
Für klar geschnittene Vorhaben
Wenn nach dem Klären alles steht, geht auch ein Festpreis. Bandbreite statt Wunschzahl, Nachträge nur bei echten Änderungen.
- Klar abgegrenzter Umfang
- Fester Termin
- Änderungen über Change Requests
-
Meistens die richtige Wahl
Zeit & Material
Der Regelfall
Ein festes Team für eine feste Kapazität. Ihr priorisiert alle zwei Wochen neu, wir liefern kontinuierlich.
- Feste Teamgröße
- Alle 14 Tage neu priorisieren
- Monatlich kündbar nach der Einarbeitung
-
Retainer
Für Betrieb und Weiterentwicklung
Feste Kapazität pro Monat für Wartung, Sicherheit und kleinere Ausbauten. Mit Reaktionszeiten, die im Vertrag stehen.
- Garantierte Reaktionszeit
- Rufbereitschaft optional
- Unverbrauchte Stunden verfallen nicht sofort
-
Das lässt sich seriös erst nach dem Klären sagen — deshalb ist es eine eigene, klein gehaltene Phase. Danach bekommt ihr eine Schätzung mit Bandbreite statt einer Zahl, die später nicht hält. Für die Größenordnung: Die meisten unserer Vorhaben starten im mittleren fünfstelligen Bereich.
-
Die erste lauffähige Version geht in Produktion, lange bevor das Ganze fertig ist. Nicht fertig, aber echt — mit Daten, Nutzern und allem, was dabei schiefgehen kann.
-
Häufiger als an neuem. Wir übernehmen gewachsene Systeme, arbeiten uns ein und migrieren in Etappen, ohne den Betrieb anzuhalten.
-
Dann übergeben wir. Euer Code liegt in eurem Repository, die Architekturentscheidungen sind dokumentiert, der Betrieb ist beschrieben. Wir halten niemanden über Abhängigkeit.
-
Ja. Ein Review einer bestehenden Architektur oder eine zweite Meinung zu einem Angebot ist schnell gemacht und oft das Sinnvollste, was man tun kann.
Was in solchen Vorhaben meistens danebensteht.
-
Plattform-Architektur
Sobald mehr als zwei Systeme beteiligt sind, entscheidet die Architektur darüber, was später überhaupt noch möglich ist.
-
KI & Automatisierung
Automatisierung braucht saubere Daten und eine Oberfläche, an der ein Mensch widersprechen kann. Beides entsteht hier.
-
Webhosting & Betrieb
Was gebaut wird, läuft danach jahrelang. Wer den Pager trägt, gehört deshalb früh an den Tisch.
Erzähl uns, wo es hakt
15 Minuten, ohne Verkaufsdeck. Danach weißt du, ob wir die Richtigen sind — und wenn nicht, wen du stattdessen anrufen solltest.











