Skip to content

Blog

What we learn while building: on systems, commerce and AI. Written by the people who deliver the projects.

Project experience to inform your decisions

Where do we start with digitalisation?

An approach to identifying opportunities in your processes and choosing the next step.

Robert Kramer

Read article

Which reports actually help us make decisions?

Why adding more reports can make it harder to find your way, and how to keep reporting clear.

Philipp Junghanns

Read article

What makes a reliable purchasing forecast?

Lessons on seasonality, forecasting models and the consequences of ordering too much or too little.

Paul Dittrich

Read article

All articles

Explore a topic or browse our articles on software development and project work.

Architecture

Learnings from building our own sales forecast

Paul Dittrich
Paul Dittrich
Architecture

Why I don’t condemn technical debt

Andreas Roth
Andreas Roth
AI

Four Eyes, Two Agents

Julien Seerig
Julien Seerig
AI

Why should you read our blog?

Johann Roth
Johann Roth
AI

AI Coding Agents Commit Your Bad Habits Faster

Paul Behla
Paul Behla
Architecture

Why every project needs a grid and why it has nothing to do with personal taste

Philipp Junghanns
Philipp Junghanns
JavaScript

JavaScript Dates were never really about Dates

Team esveo
Team esveo
SQL

MySQL query optimization: a practical guide

Philipp Dehler
Philipp Dehler
Basics

The 1984 Algorithm That Quantum Computers Still Can't Break

Paul Dittrich
Paul Dittrich
AI

Spec-Driven Development: Why the Future of Software Lies in Descriptions, Not Code

Robert Kramer
Robert Kramer
Social

The things that surprised me in my first tech project

Celina Nestler
Celina Nestler
AI

Reviewing Agent Code

Andreas Roth
Andreas Roth
AI

Let’s Try Out OpenCode UI

Jonathan Frere
Jonathan Frere
Social

Between Speed and Stability: E-Commerce in China and Germany

Team esveo
Team esveo
AI

How AI is becoming the personal assistant in large documentations

Julien Seerig
Julien Seerig
JavaScript

You Might Not Need That Dependency

Jonathan Frere
Jonathan Frere
AI

Developing Software with AI (in 2026)

Johann Roth
Johann Roth
AI

Of Masons and AI

Philipp Junghanns
Philipp Junghanns
CSS

How to recreate collapsing borders on non-table elements

Team esveo
Team esveo
AI

Local MCP Server

Philipp Dehler
Philipp Dehler
Architecture

Undo, Redo, and the Command Pattern

Jonathan Frere
Jonathan Frere
React

Hero Images Without Compromise: Fast, Clear, and Adaptive

Team esveo
Team esveo
Social

Why is it called Softwaredevelopment?

Celina Nestler
Celina Nestler
Basics

Character Encoding Issues: Why “ö” sometimes displays as “ö”

Paul Dittrich
Paul Dittrich
Social

Evaluating Digitalization Potential: A Practical Guide

Robert Kramer
Robert Kramer
Social

Another anniversary

Philipp Junghanns
Philipp Junghanns
Architecture

Tips for Working with Legacy Code

Jonathan Frere
Jonathan Frere
Social

10 years of esveo: from Excel lists in student dorms to modern software technology

Robert Kramer
Robert Kramer
Architecture

AI Workshop Recap

Paul Dittrich
Paul Dittrich
React

Improve React Loading Experience with Suspense

Team esveo
Team esveo
Architecture

Implement draft order support in Medusa ourselves

Julien Seerig
Julien Seerig
Filters

Beyond Basic Filters: Excel-Style Grid Multi-Selects

Johann Roth
Johann Roth
Social

What I learned about software companies – as someone without a tech background

Celina Nestler
Celina Nestler
JavaScript

Hackathon: Learning from Bad UI

Team esveo
Team esveo
Architecture

A plea for reducing complexity in reporting

Philipp Junghanns
Philipp Junghanns
Next.js

Reducing Storyblok API usage by 90 percent in your Next.js app

Andreas Roth
Andreas Roth
TypeScript

When Modern Technologies Annoy: A DX Odyssey with tRPC, Drizzle, and TypeScript

Philipp Dehler
Philipp Dehler
CSS

Color Spaces on the Web: A Developer's Guide

Team esveo
Team esveo
TypeScript

What we learned from our last webshop go-live

Julien Seerig
Julien Seerig
React

How to communicate with sibling components in React

Andreas Roth
Andreas Roth
Social

Less structure, more culture? Why small teams often work better

Celina Nestler
Celina Nestler
SQL

Databases continued - Discoveries of our latest hackathon

Paul Dittrich
Paul Dittrich
Social

From understanding to teaching: Learning curves in double pack

Julien Seerig
Julien Seerig
Social

You grow with the challenge

Philipp Junghanns
Philipp Junghanns
Social

Bootcamp was the beginning - the real learning came afterwards

Team esveo
Team esveo
Architecture

Beyond Basic Filters: RegEx filters

Johann Roth
Johann Roth
Social

We Went to DevDay!

Jonathan Frere
Jonathan Frere
TypeScript

How to workaround the max recursion depth in TypeScript

Philipp Dehler
Philipp Dehler
SQL

Databases as locks, heap tables and more — results of the latest hackathon

Andreas Roth
Andreas Roth
Basics

Using Baseline: A glance at Cross-Browser Feature Support

Team esveo
Team esveo
Architecture

Loki Time Master - A service to enable time tracking for teams in Notion

Robert Kramer
Robert Kramer
Filters

Beyond Basic Filters: Date Multi-Select Filters

Johann Roth
Johann Roth
Social

Peeking behind Abstractions at DecompileD Conference in Dresden

Andreas Roth
Andreas Roth
Social

We Tried a Code Retreat

Jonathan Frere
Jonathan Frere
Architecture

Medusa - yet another new eCommerce CMS or a strong modular alternative?

Julien Seerig
Julien Seerig
JavaScript

WebGPU - More Than Just Graphics

Paul Dittrich
Paul Dittrich
Basics

Let’s build a simple math expression parser

Philipp Dehler
Philipp Dehler
Filters

Beyond Basic Filters: Rethinking Multi-Select Filter State

Johann Roth
Johann Roth
Architecture

From margin calculation to order planning: data as the basis for decisions in eCommerce (eCommerce Data & Decisions Part 1)

Robert Kramer
Robert Kramer
Social

React Day 2024

Team esveo
Team esveo
Architecture

Speed up your AI & LLM-integration with this simple trick

Andreas Roth
Andreas Roth
Architecture

The triangle of abstractions

Andreas Roth
Andreas Roth
Social

c't <webdev> 2024

Jonathan Frere
Jonathan Frere
Social

NodeConf EU 2024

Jonathan Frere
Jonathan Frere
Social

My first month at esveo

Julien Seerig
Julien Seerig
Social

My first international conference

Andreas Roth
Andreas Roth
JavaScript

YouTube Music And Its Broken Volume Slider

Paul Dittrich
Paul Dittrich
Social

Developers are better with No-Code

Andreas Roth
Andreas Roth
Basics

What are lockfiles?

Julien Seerig
Julien Seerig
Social

The IT market in transition - challenges and opportunities in a new era

Robert Kramer
Robert Kramer
TypeScript

Why it's a bad idea to convert a union to a tuple type

Philipp Dehler
Philipp Dehler
Basics

Updating npm Dependencies

Andreas Roth
Andreas Roth
JavaScript

Replay Browser

Paul Dittrich
Paul Dittrich
Basics

Creating an esveo basics knowledge base

Andreas Roth
Andreas Roth
Basics

What are bundlers?

Andreas Roth
Andreas Roth
JavaScript

Real-time editing using Storyblok with Next.js Server Components

Paul Dittrich
Paul Dittrich
CSS

CSS Custom Filters

Paul Dittrich
Paul Dittrich
Architecture

The importance of the shell in the operating system: A comprehensive analysis

Team esveo
Team esveo
CSS

Why INP is the Future of Core Web Vitals

Team esveo
Team esveo
CSS

Best practices for Core Web Vitals: Optimize your website performance

Team esveo
Team esveo
Social

Career change to IT: an inspiring story

Team esveo
Team esveo
JavaScript

Progressive Web Apps

Paul Dittrich
Paul Dittrich
JavaScript

Effect - The missing standard library

Philipp Dehler
Philipp Dehler
JavaScript

Efficient reactivity for modern web development with Signals

Jonathan Frere
Jonathan Frere
Social

A short story about the history and origin of esveo

Robert Kramer
Robert Kramer
JavaScript

Dependency Injection with Closures

Jonathan Frere
Jonathan Frere
GraphQL

Migrating Apollo GraphQL to React Query

Johann Roth
Johann Roth
Architecture

Choosing the correct file structure in your projects

Johann Roth
Johann Roth
React

Increase the reusability of libraries with the strategy pattern

Andreas Roth
Andreas Roth
React

When imperative is better than declarative in React

Andreas Roth
Andreas Roth
RxJS

Controlling multiple HTTP requests with RxJS

Andreas Roth
Andreas Roth
React

The fullstack lifecycle of a React component

Andreas Roth
Andreas Roth
CSS

Inline styles no longer considered harmful

Andreas Roth
Andreas Roth
GraphQL

Introduction to GraphQL on the backend

Andreas Roth
Andreas Roth
React

React Hooks vs Vue 3 Composition API

Andreas Roth
Andreas Roth
TypeScript

Iterables, Iterators and Generators

Andreas Roth
Andreas Roth
Social

A Plea for Tech-Meetups

Andreas Roth
Andreas Roth
JavaScript

The surprising power of web apps

Andreas Roth
Andreas Roth