Wir konzipieren, entwickeln, sichern, testen, deployen und warten vollständige Softwareanwendungen – von der Benutzeroberfläche im Browser über die Anwendungslogik und APIs bis hin zur Datenbank und der Infrastruktur, auf der alles läuft.
Full-Stack bedeutet: Ein Partner verantwortet das gesamte System – keine Übergabe zwischen Front-End-, Back-End- und Infrastruktur-Teams. Genau das hält eine Anwendung kohärent, während sie wächst.
Front-End
Back-End
Daten
Die wenigsten Organisationen entscheiden sich bewusst für Individualsoftware. Sie lösen ein Problem – und stellen dann fest, dass Standardsoftware ein neues schafft. Diese Muster sehen wir am häufigsten.
Arbeit, die zwischen Systemen neu erfasst, in Tabellen verfolgt oder per E-Mail nachgehalten wird. Sie ist langsam, fehleranfällig und skaliert schlecht, wenn die Mengen wachsen.
ERP, CRM, Finanzen und Operations halten jeweils einen Teil des Gesamtbildes. Ohne manuellen Abgleich hat niemand den vollständigen Überblick – Entscheidungen basieren auf Teilinformationen.
Software, die noch funktioniert, aber nicht mehr unterstützt wird, unsicher ist oder sich nicht ändern lässt. Jede neue Anforderung wird zum Workaround, weil das Fundament nicht mitgeht.
Prozesse, die um die Grenzen der Werkzeuge herum gebaut wurden statt um die tatsächliche Arbeitsweise des Unternehmens – mit Freigaben und Übergaben, die es nur gibt, weil das System sie braucht.
Standardprodukte sind für den durchschnittlichen Kunden gebaut. Wenn Ihr Prozess ein Wettbewerbsvorteil ist, kostet eine erzwungene Standardschablone genau diesen Vorteil.
Was mit fünfzig Nutzern funktioniert, bricht bei fünfhundert. Systeme, die nie für Ihre Mengen, Ihre Standorte oder Ihren Reporting-Bedarf gebaut wurden, werden zur Wachstumsgrenze.
Wann Individualsoftware passt
Individualsoftware ist nicht immer die Antwort – und wir sagen Ihnen auch, wenn sie es nicht ist. Sie verdient ihren Platz, wenn ein Prozess wirklich differenzierend ist, wenn Systeme so zusammenarbeiten müssen, wie es kein Produkt unterstützt, oder wenn die Kosten des Workarounds längst die Kosten der richtigen Lösung übersteigen.
Vom fokussierten internen Tool bis zur vollständigen Geschäftsplattform entwickeln wir Software, die zum Prozess passt – statt den Prozess an die Software anzupassen.
Browserbasierte Anwendungen für interne Teams oder externe Nutzer – überall verfügbar, ohne lokale Installation.
Größere Systeme, die eine Kernfunktion des Unternehmens über Abteilungen, Nutzer und Standorte hinweg unterstützen.
Werkzeuge für Operations, Finanzen, HR, Qualität und Reporting, die Tabellen und getrennte Einzellösungen ersetzen.
Sicherer Self-Service-Zugang für Kunden, Lieferanten und Partner – mit Bestellungen, Anfragen, Dokumenten und Status.
Strukturierte Steuerung von Arbeit über Freigaben, Eskalationen, Fristen und Prüfpfade hinweg – über Teams und Systeme.
Werkzeuge für Produktion, Lager, Außendienst und Logistik – gebaut für reale Einsatzbedingungen, nicht für den Büroschreibtisch.
Neue Produkte, bei denen die Software das Angebot ist – konzipiert, entwickelt und als Ihr eigenes Produkt platziert.
Neuaufbau oder schrittweiser Ersatz alter Systeme – Geschäftslogik bleibt erhalten, technische Altlasten verschwinden. Mehr zu unseren ERP-Transformationen und Datenmigrationen.
Das Front-End ist alles, was der Nutzer sieht und anfasst. Hier wird eine Anwendung bewertet – oft innerhalb von Sekunden – und hier wird ein gut gebautes Back-End entweder zu sichtbarem Wert oder bleibt hinter Frust verborgen.
Wir bauen Oberflächen, die klar, schnell und vorhersehbar sind und sich über Browser, Bildschirmgrößen und Geräte hinweg korrekt verhalten. Gute Front-End-Arbeit ist keine Dekoration: Sie beeinflusst direkt, wie schnell Menschen Aufgaben erledigen und wie viele Fehler sie machen.
Barrierefreiheit behandeln wir als Anforderung statt als Nachgedanke – damit Anwendungen auch für Menschen nutzbar bleiben, die auf Tastatur, Screenreader oder größere Schrift angewiesen sind.
Komponentenbasierte Oberflächen für Konsistenz und Wiederverwendung – Änderungen erfolgen einmal statt überall.
Oberflächen, die sich vom Smartphone bis zum Desktop richtig anpassen – statt geschrumpfter Versionen eines großen Bildschirms.
Echtzeit-Validierung, dynamische Formulare, Inline-Bearbeitung und sofortiges Feedback, die Fehler direkt bei der Eingabe reduzieren.
Klare Informationshierarchie, sinnvolle Voreinstellungen und zugängliches Markup – nutzbar für alle, die darauf angewiesen sind.
Konsistentes Verhalten in den Browsern, die Ihre Nutzer tatsächlich verwenden – getestet statt angenommen, inklusive älterer Versionen, die in Unternehmensumgebungen noch Standard sind.
Zentrale Front-End-Technologien, mit denen wir arbeiten
Die Framework-Wahl folgt der Anforderung, nicht der Vorliebe. Das heißt: Teamkompetenz, Ökosystem-Passung und langfristige Wartbarkeit abwägen. Wir bauen ebenso gern framework-leichte Anwendungen, wenn das die bessere technische Antwort ist.
Im Back-End leben die Geschäftsregeln, und hier müssen Daten vertrauenswürdig sein. Dieser Teil des Systems muss korrekt bleiben, wenn sich Oberfläche, Nutzerzahlen oder Integrationen ändern.
Die Regeln, die Ihr Unternehmen funktionieren lassen: Preise, Berechtigungen, Freigaben, Berechnungen und Validierung – einmal kodiert und überall konsistent angewendet.
Bleiben diese Regeln im Back-End, lautet die Antwort immer gleich – egal ob die Anfrage von einer Webseite, einem mobilen Screen, einer API oder einer Integration kommt.
Daten zuverlässig lesen, transformieren und schreiben – von Massenimporten und Berichtserstellung bis zu rechenintensiven Operationen und nächtlichen Jobs, die korrekt abschließen müssen.
Transaktionsbehandlung und Idempotenz zählen hier: Ein Job, der zweimal läuft, darf die Daten nicht beschädigen.
Authentifizierung stellt fest, wer jemand ist. Autorisierung bestimmt, was er danach tun darf.
Wir setzen Berechtigungen im Back-End durch, nicht nur in der Oberfläche – Zugriff lässt sich also nicht durch direkte API-Aufrufe umgehen.
Arbeit, die Nutzer nicht warten lassen soll: geplante Importe, Berichtserstellung, Synchronisation zwischen Systemen, Benachrichtigungen, E-Mail-Versand und Wiederholungslogik, wenn ein nachgelagerter Dienst nicht erreichbar ist.
Die Dienste, aus denen Ihre Anwendung besteht: APIs, Integrationsschichten, Benachrichtigungsdienste, Dateiverarbeitung, Suche und Reporting – so entworfen, dass sie unabhängig voneinander änderbar bleiben.
Effiziente Abfragen, sinnvolles Caching, asynchrone Verarbeitung und Paginierung – damit die Anwendung reaktionsschnell bleibt, während Daten und Nutzerzahlen wachsen.
Technologie soll der Anforderung dienen. Unten steht, womit wir arbeiten – und wichtiger: wie wir zwischen den Optionen entscheiden.
Unsere primäre Back-End-Plattform für geschäftskritische Anwendungen. Ausgereift, stark typisiert, gut unterstützt und eine starke Wahl für langlebige Systeme.
Moderne, plattformübergreifende Webanwendungen und REST-APIs auf .NET – unser Standard für neue webbasierte Back-Ends.
Die Sprache des Webs. Wir setzen TypeScript ein, wo Typsicherheit Fehler in größeren Front-End- und Node.js-Codebasen reduziert.
React
Angular
Vue.js
Node.js
Python
Java
PHP
SQL
REST / APIs
Git
Azure Functions
Docker
Individualsoftware beginnt nicht immer bei null. Wir übernehmen regelmäßig bestehende Anwendungen in Sprachen oder Frameworks, die wir nicht ursprünglich gewählt haben – prüfen die Architektur, identifizieren Risiken und arbeiten innerhalb der bestehenden Grenzen.
Wir sagen ehrlich, ob etwas es wert ist, erweitert zu werden, oder besser neu geschrieben wird. Manchmal ist die pragmatische Antwort ein schrittweiser Ersatz statt eines Big-Bang-Umbaus – das verteilt Kosten und Risiko und hält den Betrieb am Laufen.
Daten überleben Anwendungen. Die Oberfläche wird neu gestaltet und das Framework irgendwann ersetzt – die Struktur Ihrer Daten und ihre Qualität bleiben meist. Wir behandeln sie entsprechend.
Festlegen, wie Daten gespeichert und verknüpft werden, bevor es teuer wird, das zu ändern. Das ist in den meisten Projekten die folgenreichste technische Entscheidung.
Geschäftsbegriffe in klare Strukturen übersetzen, die die tatsächliche Arbeitsweise abbilden und ohne Rätselraten abfragbar sind.
Strukturierte, transaktionale Daten mit durchgesetzter Integrität – der richtige Standard für finanzielle, operative und geschäftskritische Datensätze.
Dokument-, Key-Value- und Cache-Speicher, wenn flexible Schemas oder sehr hohe Lesevolumina den Weg weg von relational wirklich rechtfertigen.
Effizientes Abfragedesign, korrekte Indizierung und Prüfung der Ausführungspläne. Das ist der Unterschied zwischen einem Bericht, der sofort antwortet, und einem, der abbricht.
Constraints, Validierung und transaktionale Konsistenz – damit Sie sich auf die Daten verlassen können, von denen Ihr Reporting abhängt.
Schemaänderungen müssen wiederholbar, umkehrbar und sicher gegenüber Live-Daten sein. Wir verwalten Migrationen als versionierte, getestete Änderungen statt als manuelle Eingriffe von Hand – größere Legacy-Migrationen über unser Datenmigrationsprogramm.
Datenbanken, mit denen wir arbeiten
Wir wählen standardmäßig relational, weil die meisten Geschäftsdaten echte Beziehungen haben und transaktionale Garantien brauchen. Nicht-relationale Speicher setzen wir ein, wo sie es verdienen: flexible Dokumente, sehr hoher Lesedurchtrag oder Caching. Eine Datenbank aus Modegründen zu wählen, ist der Weg, auf dem Projekte vermeidbare Komplexität aufbauen.
Eine Anwendung, die nicht mit dem Rest Ihrer Systeme sprechen kann, wird einfach ein weiterer Silo. Integration ist kein Zusatz, sondern Teil des Designs.
Wir bauen REST-APIs, die die Fähigkeiten Ihrer Anwendung kontrolliert und dokumentiert bereitstellen – damit interne Teams, Partner und andere Systeme sie nutzen können, ohne direkten Datenbankzugriff zu brauchen.
Anbindung an die Systeme, die Sie bereits betreiben: ERP, CRM, Finanzen, HR, Logistik, Zahlungsverkehr, E-Mail und branchenspezifische Plattformen – damit Daten zuverlässig dorthin gelangen, wo sie gebraucht werden, statt neu erfasst zu werden.
Wo Polling zu langsam oder zu teuer ist, erlaubt ereignisgetriebene Integration, dass ein System ein anderes informiert, sobald etwas passiert: eine Bestellung wird ausgelöst, ein Status ändert sich, eine Zahlung geht ein.
Wir planen für die Realität, dass Zustellungen fehlschlagen: Signaturprüfung, idempotente Verarbeitung, Wiederholungen und Einsicht in fehlgeschlagene Nachrichten.
Maschine-zu-Maschine-Verbindungen brauchen ein eigenes Zugriffsmodell. Wir nutzen begrenzte Zugangsdaten, tokenbasierte Authentifizierung und Schlüsselrotation statt gemeinsamer Admin-Konten oder Zugangsdaten im Code.
Integrations-Zugangsdaten liegen in verwalteten Secret Stores – nicht in Konfigurationsdateien, die im Quellcode-Repository liegen.
Integrationen sind der Ort, an dem die meisten Systeme still scheitern. Wir behandeln sie als erstklassige Komponenten mit Fehlerbehandlung, Logging und Monitoring – denn eine Integration, die still fehlschlägt, ist schlimmer als eine, die nie existierte. Unsere Leistungen Systemintegration und API & Datentechnik gehen tiefer darauf ein.
Sicherheit ist kein Feature, das am Projektende ergänzt wird. Sie ist eine Reihe von Entscheidungen, die kontinuierlich getroffen werden – im Design, im Code, in Abhängigkeiten und im Betrieb der laufenden Anwendung.
Threat Modelling vor der ersten Codezeile: Was schützen wir, vor wem, und was passiert bei Offenlegung. Die Angriffsfläche früh zu bedenken ist deutlich günstiger als sie später zu beheben.
Bewährte Identitätsmechanismen statt Eigenbau und Berechtigungen, die serverseitig konsistent durchgesetzt werden: rollenbasierter Zugriff, minimale Rechte und Trennung zwischen Einsicht und Änderung.
Kontrollen auf Daten- und API-Ebene, nicht nur in der Oberfläche versteckt. Einen Button auszublenden ist keine Zugriffskontrolle, denn jeder kann einen Endpunkt direkt aufrufen.
Jede Eingabe als nicht vertrauenswürdig behandeln, serverseitig validieren und die Klassen Injection und Cross-Site-Scripting verhindern, die zu den häufigsten Schwachstellen der OWASP Top 10 zählen.
Verschlüsselung bei der Übertragung als Standard und im Ruhezustand, wo die Daten es erfordern. Sensible Werte gehasht oder tokenisiert statt lesbar gespeichert, personenbezogene Daten auf das Nötige reduziert.
Verbindungszeichenfolgen, API-Schlüssel und Zertifikate in verwalteten Secret Stores mit Rotation – niemals im Quellcode-Repository oder per E-Mail und Chat geteilt.
Moderne Anwendungen hängen stark von Drittbibliotheken ab. Schwachstellen sammeln sich still an – deshalb werden Abhängigkeiten verfolgt, auf bekannte Probleme überwacht und bewusst aktualisiert.
Festhalten, wer was getan hat – und wann. Wesentlich für die Untersuchung von Vorfällen, den Nachweis von Kontrollen gegenüber Prüfern und das Verständnis von Fehlern im Nachhinein.
Prüfungen, die in den Entwicklungsprozess eingebaut sind: statische Analyse, Dependency-Scanning und gezielte Reviews – statt einer einmaligen Prüfung kurz vor dem Go-live.
Wir nutzen die OWASP Top 10, die breit anerkannte Branchenreferenz für Sicherheitsrisiken in Webanwendungen, als Arbeitscheckliste während Design und Entwicklung – zu Zugriffskontrollfehlern, Injection, unsicherem Design, Fehlkonfiguration, verwundbaren Komponenten und Schwächen in der Authentifizierung.
Sie ist ein praktischer Leitfaden, um die richtigen Fragen zu stellen, kein Zertifikat. Ihre Anwendung reduziert Risiko; sie beseitigt es nicht.
Wir bauen datenschutzbewusste Software: Datenminimierung, Zugriffskontrolle, bereits im Design berücksichtigte Aufbewahrungsfristen und personenbezogene Daten, die als solche behandelt werden. Das unterstützt Ihre Pflichten nach Regelwerken wie der DSGVO.
Wir behaupten nicht, dass Software automatisch mit jeder Vorschrift konform ist. Compliance hängt von Ihren Prozessen, Richtlinien und Ihrer rechtlichen Position ab – das sagen wir lieber klar, als etwas anderes zu implizieren. Unsere Arbeiten zu Governance & Sicherheit gehen tiefer darauf ein.
Architektur ist die Summe der Entscheidungen, deren Änderung später teuer wird. Sie früh ungefähr richtig zu treffen, ist der Grund, warum eine Anwendung wachsen kann, ohne neu gebaut zu werden.
Klare Trennung von Darstellung, Geschäftslogik und Datenzugriff. Das Ergebnis: Eine Bildschirmänderung kann keine Berechnung brechen, und eine Regeländerung erfordert keinen Eingriff in die Oberfläche.
Das System in kohärente Module mit klaren Grenzen gliedern, damit ein Team an einem Bereich arbeiten kann, ohne die gesamte Anwendung im Kopf halten zu müssen.
Konsistente Konventionen, sprechende Namen, fokussierte Komponenten und pragmatische Dokumentation. Software wird viel häufiger gelesen als geschrieben – auch von denen, die sie später übernehmen.
Performance durch Messung statt Annahme. Langsame Antwortzeiten haben meist wenige konkrete Ursachen – ein fehlender Index, eine N+1-Abfrage oder eine übergroße Payload – die sich per Profiling finden lassen.
Caching bewusst eingesetzt, in der richtigen Schicht und mit korrekter Invalidierung. Falsch angewendetes Caching löst ein Problem und schafft ein schwereres: Nutzer sehen veraltete Daten, die sie nicht erklären können.
Für den Fehlerfall entwerfen, statt zu hoffen, dass er nicht eintritt: kontrollierte Degradation, Wiederholungen mit Backoff, Timeouts und klare Fehlerbehandlung statt stillem Datenverlust.
Für das erwartete Wachstum bauen, ohne heute für Skalierung zu zahlen, die Sie vielleicht nie brauchen – und wissen, welcher Teil des Systems bei steigendem Volumen zuerst an die Grenze stößt.
Cloud-Architektur erzeugt laufende Kosten. Wir berücksichtigen die Kostenfolgen von Designentscheidungen, damit eine elegante Lösung kein teurer Fußabdruck wird.
Ein gut strukturierter Monolith ist oft die richtige Antwort. Zu Microservices, Event-Streaming oder verteilten Systemen greifen wir nur, wenn die Anforderung es wirklich verlangt – Komplexität, die Sie nicht brauchen, ist ein Kostenfaktor, keine Auszeichnung.
Testing existiert, damit Sie Software sicher ändern können. Eine Suite verlässlicher Tests macht aus „wir glauben, es funktioniert noch“ ein „wir wissen, es funktioniert noch“ – und ermöglicht regelmäßige Releases.
Einzelne Logikeinheiten isoliert testen – eine Berechnung, eine Validierungsregel, eine Preisfunktion. Unit-Tests laufen in Millisekunden und fangen die häufigsten Fehler am günstigsten Punkt ab: bevor der Code überhaupt eine Umgebung erreicht.
Prüfen, dass Komponenten zusammenspielen – Anwendungscode gegen eine echte Datenbank oder eine Integration gegen einen tatsächlichen API-Vertrag. Viele Fehler sitzen in den Nahtstellen zwischen Komponenten, nicht in einer einzelnen – genau dort, wo Unit-Tests nichts sehen.
Vollständige Nutzerreisen durch die echte Oberfläche: anmelden, Bestellung anlegen, zur Freigabe einreichen, im Reporting prüfen. Diese Schicht spiegelt wider, was Ihre Nutzer tatsächlich erleben.
Bestehende Tests nach jeder Änderung erneut ausführen, um zu bestätigen, dass nichts vorher Funktionierendes kaputt ist. In langlebiger Software ist das die wertvollste Schutzform – denn die meisten Fehler entstehen in funktionierendem Code, nicht in neuem.
Bestätigen, dass die Software die vereinbarten fachlichen Anforderungen erfüllt – mit Ihrem Team, anhand echter Szenarien und Daten. Hier prüfen wir, ob wir das Richtige gebaut haben und nicht nur das Gebaute richtig.
Jede Änderung wird von einem weiteren Entwickler geprüft, bevor sie zusammengeführt wird – ein zweites Paar Augen auf Korrektheit, Sicherheit, Lesbarkeit und Sonderfälle. Wenn doch etwas schiefgeht, findet systematisches Debugging mit geeignetem Logging und Diagnosewerkzeugen die Ursache statt das Symptom.
Tests, die am Projektende geschrieben werden, dokumentieren, was einmal galt. Tests, die parallel zum Code entstehen und bei jeder Änderung automatisch laufen, erlauben einem System, sich über Jahre weiterzuentwickeln. Deshalb bauen wir Testing vom ersten Tag in den Entwicklungsprozess ein, statt es als letztes Tor zu behandeln.
Guten Code zu schreiben ist nur die Hälfte funktionierender Software. Die andere Hälfte ist, sie sicher, wiederholbar und ohne Drama nach Produktion zu bringen – und danach zu wissen, dass sie gesund ist.
Der gesamte Code liegt in der Versionsverwaltung mit Git und einer Branching-Strategie, die zu Ihrem Release-Rhythmus passt. Jede Änderung ist einer Person, einem Zeitpunkt und einem Grund zuordenbar – das macht Probleme untersuchbar und Rollbacks möglich.
Kein Code existiert nur auf dem Laptop eines Entwicklers.
Deployments laufen automatisiert statt von Hand. Eine Pipeline stellt Abhängigkeiten wieder her, baut, führt die Testsuite aus und liefert aus – damit läuft jedes Mal derselbe Prozess, und ein Release am Freitagnachmittag ist nicht mehr das Risiko von früher.
Automatisierte Pipelines beseitigen die häufigste Ursache für Deployment-Fehler: einen Schritt, den jemand vergessen hat.
Jede Änderung wird automatisch integriert, gebaut und getestet. Kleine, häufige Releases sind sicherer als große, seltene: weniger Änderungen auf einmal, leichter zu erkennen, was ein Problem verursacht hat, und einfacher rückgängig zu machen. CI/CD macht dieses Tempo nachhaltig.
Getrennte Entwicklungs-, Test- und Produktionsumgebungen, mit Konfiguration pro Umgebung statt fest im Code. So können Sie sauber testen, ohne echte Daten oder echte Nutzer jemals zu gefährden.
Wo sinnvoll, paketieren wir Anwendungen mit Docker, damit sie auf dem Entwicklerrechner, im Test und in Produktion identisch laufen. Das Hosting richtet sich nach der Anwendung: Cloud-Infrastruktur, wo Elastizität und Managed Services helfen, On-Premises, wo Datenresidenz oder bestehende Infrastruktur es verlangen.
Anwendungen werden auf Verfügbarkeit, Fehler und Performance überwacht – Probleme fallen auf, bevor Nutzer sie melden. Backups werden geplant und regelmäßig durch Wiederherstellung getestet, denn ein ungetestetes Backup ist kein Backup.
Wir arbeiten mit den Pipelines, Registries und Hosting-Plattformen, die Ihre Organisation bereits nutzt oder einführen möchte – statt einen Stack aufzuzwingen, den Sie dann selbst betreiben müssten. Wenn Sie bereits auf einer Plattform wie Azure sind, arbeiten wir damit; bei bestehender On-Premises-Infrastruktur entwerfen wir ebenfalls dafür.
Technologie soll der Anforderung dienen. Unten steht, womit wir arbeiten – und wichtiger: wie wir zwischen den Optionen entscheiden.
Unsere primäre Back-End-Plattform für geschäftskritische Anwendungen. Ausgereift, stark typisiert, gut unterstützt und eine starke Wahl für langlebige Systeme.
Moderne, plattformübergreifende Webanwendungen und REST-APIs auf .NET – unser Standard für neue webbasierte Back-Ends.
Die Sprache des Webs. Wir setzen TypeScript ein, wo Typsicherheit Fehler in größeren Front-End- und Node.js-Codebasen reduziert.
React
Angular
Vue.js
Node.js
Python
Java
PHP
SQL
REST / APIs
Git
Azure Functions
Docker
Individualsoftware beginnt nicht immer bei null. Wir übernehmen regelmäßig bestehende Anwendungen in Sprachen oder Frameworks, die wir nicht ursprünglich gewählt haben – prüfen die Architektur, identifizieren Risiken und arbeiten innerhalb der bestehenden Grenzen.
Wir sagen ehrlich, ob etwas es wert ist, erweitert zu werden, oder besser neu geschrieben wird. Manchmal ist die pragmatische Antwort ein schrittweiser Ersatz statt eines Big-Bang-Umbaus – das verteilt Kosten und Risiko und hält den Betrieb am Laufen.
Daten überleben Anwendungen. Die Oberfläche wird neu gestaltet und das Framework irgendwann ersetzt – die Struktur Ihrer Daten und ihre Qualität bleiben meist. Wir behandeln sie entsprechend.
Festlegen, wie Daten gespeichert und verknüpft werden, bevor es teuer wird, das zu ändern. Das ist in den meisten Projekten die folgenreichste technische Entscheidung.
Geschäftsbegriffe in klare Strukturen übersetzen, die die tatsächliche Arbeitsweise abbilden und ohne Rätselraten abfragbar sind.
Strukturierte, transaktionale Daten mit durchgesetzter Integrität – der richtige Standard für finanzielle, operative und geschäftskritische Datensätze.
Dokument-, Key-Value- und Cache-Speicher, wenn flexible Schemas oder sehr hohe Lesevolumina den Weg weg von relational wirklich rechtfertigen.
Effizientes Abfragedesign, korrekte Indizierung und Prüfung der Ausführungspläne. Das ist der Unterschied zwischen einem Bericht, der sofort antwortet, und einem, der abbricht.
Constraints, Validierung und transaktionale Konsistenz – damit Sie sich auf die Daten verlassen können, von denen Ihr Reporting abhängt.
Schemaänderungen müssen wiederholbar, umkehrbar und sicher gegenüber Live-Daten sein. Wir verwalten Migrationen als versionierte, getestete Änderungen statt als manuelle Eingriffe von Hand – größere Legacy-Migrationen über unser Datenmigrationsprogramm.
Datenbanken, mit denen wir arbeiten
Wir wählen standardmäßig relational, weil die meisten Geschäftsdaten echte Beziehungen haben und transaktionale Garantien brauchen. Nicht-relationale Speicher setzen wir ein, wo sie es verdienen: flexible Dokumente, sehr hoher Lesedurchsatz oder Caching. Eine Datenbank aus Modegründen zu wählen, ist der Weg, auf dem Projekte vermeidbare Komplexität aufbauen.
Eine Anwendung, die nicht mit dem Rest Ihrer Systeme sprechen kann, wird einfach ein weiterer Silo. Integration ist kein Zusatz, sondern Teil des Designs.
Wir bauen REST-APIs, die die Fähigkeiten Ihrer Anwendung kontrolliert und dokumentiert bereitstellen – damit interne Teams, Partner und andere Systeme sie nutzen können, ohne direkten Datenbankzugriff zu brauchen.
Anbindung an die Systeme, die Sie bereits betreiben: ERP, CRM, Finanzen, HR, Logistik, Zahlungsverkehr, E-Mail und branchenspezifische Plattformen – damit Daten zuverlässig dorthin gelangen, wo sie gebraucht werden, statt neu erfasst zu werden.
Wo Polling zu langsam oder zu teuer ist, erlaubt ereignisgetriebene Integration, dass ein System ein anderes informiert, sobald etwas passiert: eine Bestellung wird ausgelöst, ein Status ändert sich, eine Zahlung geht ein.
Wir planen für die Realität, dass Zustellungen fehlschlagen: Signaturprüfung, idempotente Verarbeitung, Wiederholungen und Einsicht in fehlgeschlagene Nachrichten.
Maschine-zu-Maschine-Verbindungen brauchen ein eigenes Zugriffsmodell. Wir nutzen begrenzte Zugangsdaten, tokenbasierte Authentifizierung und Schlüsselrotation statt gemeinsamer Admin-Konten oder Zugangsdaten im Code.
Integrations-Zugangsdaten liegen in verwalteten Secret Stores – nicht in Konfigurationsdateien, die im Quellcode-Repository liegen.
Integrationen sind der Ort, an dem die meisten Systeme still scheitern. Wir behandeln sie als erstklassige Komponenten mit Fehlerbehandlung, Logging und Monitoring – denn eine Integration, die still fehlschlägt, ist schlimmer als eine, die nie existierte. Unsere Leistungen Systemintegration und API & Datentechnik gehen tiefer darauf ein.
Sicherheit ist kein Feature, das am Projektende ergänzt wird. Sie ist eine Reihe von Entscheidungen, die kontinuierlich getroffen werden – im Design, im Code, in Abhängigkeiten und im Betrieb der laufenden Anwendung.
Threat Modelling vor der ersten Codezeile: Was schützen wir, vor wem, und was passiert bei Offenlegung. Die Angriffsfläche früh zu bedenken ist deutlich günstiger als sie später zu beheben.
Bewährte Identitätsmechanismen statt Eigenbau und Berechtigungen, die serverseitig konsistent durchgesetzt werden: rollenbasierter Zugriff, minimale Rechte und Trennung zwischen Einsicht und Änderung.
Kontrollen auf Daten- und API-Ebene, nicht nur in der Oberfläche versteckt. Einen Button auszublenden ist keine Zugriffskontrolle, denn jeder kann einen Endpunkt direkt aufrufen.
Jede Eingabe als nicht vertrauenswürdig behandeln, serverseitig validieren und die Klassen Injection und Cross-Site-Scripting verhindern, die zu den häufigsten Schwachstellen der OWASP Top 10 zählen.
Verschlüsselung bei der Übertragung als Standard und im Ruhezustand, wo die Daten es erfordern. Sensible Werte gehasht oder tokenisiert statt lesbar gespeichert, personenbezogene Daten auf das Nötige reduziert.
Verbindungszeichenfolgen, API-Schlüssel und Zertifikate in verwalteten Secret Stores mit Rotation – niemals im Quellcode-Repository oder per E-Mail und Chat geteilt.
Moderne Anwendungen hängen stark von Drittbibliotheken ab. Schwachstellen sammeln sich still an – deshalb werden Abhängigkeiten verfolgt, auf bekannte Probleme überwacht und bewusst aktualisiert.
Festhalten, wer was getan hat – und wann. Wesentlich für die Untersuchung von Vorfällen, den Nachweis von Kontrollen gegenüber Prüfern und das Verständnis von Fehlern im Nachhinein.
Prüfungen, die in den Entwicklungsprozess eingebaut sind: statische Analyse, Dependency-Scanning und gezielte Reviews – statt einer einmaligen Prüfung kurz vor dem Go-live.
Wir nutzen die OWASP Top 10, die breit anerkannte Branchenreferenz für Sicherheitsrisiken in Webanwendungen, als Arbeitscheckliste während Design und Entwicklung – zu Zugriffskontrollfehlern, Injection, unsicherem Design, Fehlkonfiguration, verwundbaren Komponenten und Schwächen in der Authentifizierung.
Sie ist ein praktischer Leitfaden, um die richtigen Fragen zu stellen, kein Zertifikat. Ihre Anwendung reduziert Risiko; sie beseitigt es nicht.
Wir bauen datenschutzbewusste Software: Datenminimierung, Zugriffskontrolle, bereits im Design berücksichtigte Aufbewahrungsfristen und personenbezogene Daten, die als solche behandelt werden. Das unterstützt Ihre Pflichten nach Regelwerken wie der DSGVO.
Wir behaupten nicht, dass Software automatisch mit jeder Vorschrift konform ist. Compliance hängt von Ihren Prozessen, Richtlinien und Ihrer rechtlichen Position ab – das sagen wir lieber klar, als etwas anderes zu implizieren. Unsere Arbeiten zu Governance & Sicherheit gehen tiefer darauf ein.
Architektur ist die Summe der Entscheidungen, deren Änderung später teuer wird. Sie früh ungefähr richtig zu treffen, ist der Grund, warum eine Anwendung wachsen kann, ohne neu gebaut zu werden.
Klare Trennung von Darstellung, Geschäftslogik und Datenzugriff. Das Ergebnis: Eine Bildschirmänderung kann keine Berechnung brechen, und eine Regeländerung erfordert keinen Eingriff in die Oberfläche.
Das System in kohärente Module mit klaren Grenzen gliedern, damit ein Team an einem Bereich arbeiten kann, ohne die gesamte Anwendung im Kopf halten zu müssen.
Konsistente Konventionen, sprechende Namen, fokussierte Komponenten und pragmatische Dokumentation. Software wird viel häufiger gelesen als geschrieben – auch von denen, die sie später übernehmen.
Performance durch Messung statt Annahme. Langsame Antwortzeiten haben meist wenige konkrete Ursachen – ein fehlender Index, eine N+1-Abfrage oder eine übergroße Payload – die sich per Profiling finden lassen.
Caching bewusst eingesetzt, in der richtigen Schicht und mit korrekter Invalidierung. Falsch angewendetes Caching löst ein Problem und schafft ein schwereres: Nutzer sehen veraltete Daten, die sie nicht erklären können.
Für den Fehlerfall entwerfen, statt zu hoffen, dass er nicht eintritt: kontrollierte Degradation, Wiederholungen mit Backoff, Timeouts und klare Fehlerbehandlung statt stillem Datenverlust.
Für das erwartete Wachstum bauen, ohne heute für Skalierung zu zahlen, die Sie vielleicht nie brauchen – und wissen, welcher Teil des Systems bei steigendem Volumen zuerst an die Grenze stößt.
Cloud-Architektur erzeugt laufende Kosten. Wir berücksichtigen die Kostenfolgen von Designentscheidungen, damit eine elegante Lösung kein teurer Fußabdruck wird.
Ein gut strukturierter Monolith ist oft die richtige Antwort. Zu Microservices, Event-Streaming oder verteilten Systemen greifen wir nur, wenn die Anforderung es wirklich verlangt – Komplexität, die Sie nicht brauchen, ist ein Kostenfaktor, keine Auszeichnung.
Testing existiert, damit Sie Software sicher ändern können. Eine Suite verlässlicher Tests macht aus „wir glauben, es funktioniert noch“ ein „wir wissen, es funktioniert noch“ – und ermöglicht regelmäßige Releases.
Einzelne Logikeinheiten isoliert testen – eine Berechnung, eine Validierungsregel, eine Preisfunktion. Unit-Tests laufen in Millisekunden und fangen die häufigsten Fehler am günstigsten Punkt ab: bevor der Code überhaupt eine Umgebung erreicht.
Prüfen, dass Komponenten zusammenspielen – Anwendungscode gegen eine echte Datenbank oder eine Integration gegen einen tatsächlichen API-Vertrag. Viele Fehler sitzen in den Nahtstellen zwischen Komponenten, nicht in einer einzelnen – genau dort, wo Unit-Tests nichts sehen.
Vollständige Nutzerreisen durch die echte Oberfläche: anmelden, Bestellung anlegen, zur Freigabe einreichen, im Reporting prüfen. Diese Schicht spiegelt wider, was Ihre Nutzer tatsächlich erleben.
Bestehende Tests nach jeder Änderung erneut ausführen, um zu bestätigen, dass nichts vorher Funktionierendes kaputt ist. In langlebiger Software ist das die wertvollste Schutzform – denn die meisten Fehler entstehen in funktionierendem Code, nicht in neuem.
Bestätigen, dass die Software die vereinbarten fachlichen Anforderungen erfüllt – mit Ihrem Team, anhand echter Szenarien und Daten. Hier prüfen wir, ob wir das Richtige gebaut haben und nicht nur das Gebaute richtig.
Jede Änderung wird von einem weiteren Entwickler geprüft, bevor sie zusammengeführt wird – ein zweites Paar Augen auf Korrektheit, Sicherheit, Lesbarkeit und Sonderfälle. Wenn doch etwas schiefgeht, findet systematisches Debugging mit geeignetem Logging und Diagnosewerkzeugen die Ursache statt das Symptom.
Tests, die am Projektende geschrieben werden, dokumentieren, was einmal galt. Tests, die parallel zum Code entstehen und bei jeder Änderung automatisch laufen, erlauben einem System, sich über Jahre weiterzuentwickeln. Deshalb bauen wir Testing vom ersten Tag in den Entwicklungsprozess ein, statt es als letztes Tor zu behandeln.
Guten Code zu schreiben ist nur die Hälfte funktionierender Software. Die andere Hälfte ist, sie sicher, wiederholbar und ohne Drama nach Produktion zu bringen – und danach zu wissen, dass sie gesund ist.
Der gesamte Code liegt in der Versionsverwaltung mit Git und einer Branching-Strategie, die zu Ihrem Release-Rhythmus passt. Jede Änderung ist einer Person, einem Zeitpunkt und einem Grund zuordenbar – das macht Probleme untersuchbar und Rollbacks möglich.
Kein Code existiert nur auf dem Laptop eines Entwicklers.
Deployments laufen automatisiert statt von Hand. Eine Pipeline stellt Abhängigkeiten wieder her, baut, führt die Testsuite aus und liefert aus – damit läuft jedes Mal derselbe Prozess, und ein Release am Freitagnachmittag ist nicht mehr das Risiko von früher.
Automatisierte Pipelines beseitigen die häufigste Ursache für Deployment-Fehler: einen Schritt, den jemand vergessen hat.
Jede Änderung wird automatisch integriert, gebaut und getestet. Kleine, häufige Releases sind sicherer als große, seltene: weniger Änderungen auf einmal, leichter zu erkennen, was ein Problem verursacht hat, und einfacher rückgängig zu machen. CI/CD macht dieses Tempo nachhaltig.
Getrennte Entwicklungs-, Test- und Produktionsumgebungen, mit Konfiguration pro Umgebung statt fest im Code. So können Sie sauber testen, ohne echte Daten oder echte Nutzer jemals zu gefährden.
Wo sinnvoll, paketieren wir Anwendungen mit Docker, damit sie auf dem Entwicklerrechner, im Test und in Produktion identisch laufen. Das Hosting richtet sich nach der Anwendung: Cloud-Infrastruktur, wo Elastizität und Managed Services helfen, On-Premises, wo Datenresidenz oder bestehende Infrastruktur es verlangen.
Anwendungen werden auf Verfügbarkeit, Fehler und Performance überwacht – Probleme fallen auf, bevor Nutzer sie melden. Backups werden geplant und regelmäßig durch Wiederherstellung getestet, denn ein ungetestetes Backup ist kein Backup.
Wir arbeiten mit den Pipelines, Registries und Hosting-Plattformen, die Ihre Organisation bereits nutzt oder einführen möchte – statt einen Stack aufzuzwingen, den Sie dann selbst betreiben müssten. Wenn Sie bereits auf einer Plattform wie Azure sind, arbeiten wir damit; bei bestehender On-Premises-Infrastruktur entwerfen wir ebenfalls dafür.
Ein strukturierter Weg vom ersten Gespräch bis zu einem System, das sich stetig verbessert – mit sichtbaren Meilensteinen, damit Sie jederzeit wissen, wo das Projekt steht.
Erst das fachliche Problem verstehen, dann das technische. Wer nutzt das System, was tun sie heute, wo bricht es, und wie sähe Erfolg tatsächlich aus.
Die Arbeit in lieferbare Etappen aufteilen, Prioritäten und Reihenfolge abstimmen und realistisch mit Zeitplan, Aufwand und Abhängigkeiten umgehen.
Die Form der Lösung festlegen – Datenmodell, Anwendungsstruktur, Integrationsansatz, Sicherheitsmodell und Hosting – bevor nennenswert Code entsteht.
In Schritten bauen, die Sie sehen und kommentieren können, statt monatelang zu verschwinden. Frühe funktionierende Software schlägt eine späte perfekte Spezifikation.
Automatisierte und manuelle Tests durchgängig, plus eine strukturierte Abnahmephase mit Ihrem Team anhand echter Szenarien, bevor etwas live geht.
Ein geplantes, risikoarmes Release über eine automatisierte Pipeline – mit Rollback-Option und Betreuung in der Zeit nach dem Go-live.
Technische Dokumentation für alle, die das System künftig warten, plus praktische Schulungen, damit Ihre Nutzer es mit Vertrauen annehmen statt mit Widerstand.
Software ist nie fertig. Wir betreuen, überwachen und erweitern sie, während sich Ihr Geschäft verändert – genau dort wächst echter Wert.
Der größte Teil der Kosten einer Anwendung entsteht nach dem Launch, nicht davor. Organisationen, die Nutzen aus Individualsoftware ziehen, sind die, die sie weiterentwickeln, statt sie altern zu lassen.
Wir bleiben beteiligt – nicht weil Software ständige Aufmerksamkeit braucht, sondern weil sich Unternehmen ändern und die Software mitändern muss.
Support & WartungNeue Funktionen, geänderte Workflows und Verfeinerungen, angetrieben davon, was Ihre Nutzer im täglichen Umgang lernen.
Schnelle Diagnose und Behebung, wenn sich etwas unerwartet verhält – mit geeignetem Logging, um festzustellen, was tatsächlich passiert ist.
Regelmäßige Bewertung von Antwortzeiten und Datenbankzustand, damit Verschlechterungen früh auffallen statt erst nach Nutzerbeschwerden.
Framework- und Abhängigkeitsupdates bewusst eingespielt, inklusive Sicherheitspatches – ein wirklich wichtiger Teil, um eine Anwendung über die Zeit sicher zu halten.
Jedes System sammelt Abkürzungen – manche bewusst, manche nicht. Unverwaltet bremsen sie jede künftige Änderung. Wir prüfen und bearbeiten technische Schulden als Teil der laufenden Arbeit, damit die Kosten der nächsten Änderung nicht weiter steigen.
Der Wert von Individualsoftware ist selten die Software selbst. Er zeigt sich in der Arbeit, die nicht mehr anfällt, in Entscheidungen, die schneller fallen, und in Fragen, die endlich beantwortet werden können.
Prozesse um die Arbeit selbst gestaltet statt um die Grenzen eines Werkzeugs – mit weniger Übergaben, weniger Schritten und weniger Dingen, die nur eine Person beherrscht.
Doppelerfassung, Kopieren zwischen Systemen und manueller Abgleich entfallen oder werden automatisiert – Zeit zurück für die Arbeit, für die Menschen tatsächlich qualifiziert sind.
Daten fließen dorthin, wo sie gebraucht werden – damit ERP, CRM, Finanzen und Operations sich nicht mehr widersprechen, sondern ein Bild ergeben.
Status, Fortschritt und Performance sichtbar, solange noch Zeit zum Handeln ist – statt rückblickend in einem Monatsbericht verdichtet, den niemand mehr beeinflussen kann.
Wenn Menschen den Zahlen vertrauen, verschiebt sich das Gespräch vom Abgleich der Werte zum Umgang mit ihnen. Genau dort liegt der Ertrag.
Software, die weiter funktioniert, wenn Mengen, Nutzer und Standorte steigen – statt zum Grund zu werden, das Wachstum zu bremsen.
Unsere Softwareentwicklung baut auf Prozess- und Operations-Erfahrung auf statt daneben zu stehen – deshalb lösen die Anwendungen, die wir bauen, meist ein operatives Problem und digitalisieren nicht nur ein bestehendes. Wie das konkret aussieht, zeigen unsere Case Studies, etwa eine Commercial-Operations-Plattform und die Konsolidierung eines Liefernetzwerks.
Klare Antworten auf die Fragen, die Unternehmen am häufigsten stellen, wenn sie Individualsoftware erwägen.
Individualsoftware steht selten allein. Diese Leistungen erweitern sie.
Anwendungen mit ERP, CRM, Microsoft 365 und externen Systemen verbinden.
Mehr erfahrenAPI-Entwicklung, Datenpipelines, Warehousing und analysefähige Datenfundamente.
Mehr erfahrenZugriffsmanagement, Umgebungskontrollen und Compliance über Ihre gesamte Landschaft.
Mehr erfahrenLaufende Verbesserungen, Updates, Monitoring und Management technischer Schulden.
Mehr erfahrenOb Sie eine detaillierte Spezifikation haben, einen Prozess, der seinen Tabellen entwachsen ist, ein alterndes System, das abgelöst werden muss, oder nur eine Idee, die Form annimmt – wir besprechen es gern mit Ihnen.
Unverbindlich und ohne Druck in Richtung Individualentwicklung, wenn es eine bessere Antwort gibt. Wir sagen Ihnen ehrlich, welchen Ansatz wir für richtig halten.
Klare Antworten auf die Fragen, die am häufigsten aufkommen, wenn Unternehmen Individualsoftware erwägen.
Individualsoftware steht selten allein. Diese Leistungen erweitern sie.
Anwendungen mit ERP, CRM, Microsoft 365 und externen Systemen verbinden.
Mehr erfahrenAPI-Entwicklung, Datenpipelines, Warehousing und analysefähige Datenfundamente.
Mehr erfahrenZugriffsmanagement, Umgebungskontrollen und Compliance über Ihre gesamte Landschaft.
Mehr erfahrenLaufende Verbesserungen, Updates, Monitoring und Steuerung technischer Schulden.
Mehr erfahrenOb Sie eine detaillierte Spezifikation haben, einen Prozess, der seine Tabellen überwachsen hat, ein alterndes System, das migriert werden muss, oder nur eine Idee, die Form annimmt – wir besprechen es gern mit Ihnen.
Unverbindlich und ohne Druck in Richtung Eigenentwicklung, wenn es eine bessere Antwort gibt. Wir sagen Ihnen ehrlich, welchen Ansatz wir für richtig halten.