BilderKraft: One System for Two Brands
Two brands, two domains, several applications grown over the years. From that comes one system carrying both, without running two applications.
Services Used
The situation
BilderKraft is a small family education institute in Berlin and a recognised provider of youth welfare services. Gewaltfreie Kindheit 365 used to be a company of its own and is today a project run by BilderKraft. That merger calls for one system covering both brands. Today two domains with overlapping content and several applications grown over the years run side by side.
The solution
I am building one system for both brands, as a monolith with a single database. Which brand is served is decided by a site context taken from the host header, and the appearance of each brand lives in its own theme. Two separate applications would be the wrong price for a small non-profit, because they double the cost of running them.
The shape of the model comes from fifteen years of running seminars at the institute. Seminar templates are versioned, and when a date is created the system copies the content instead of linking to it, so a course from 2019 still shows in 2027 what applied back then. Capacity and waiting list form a set of rules inherited through seminar type, location and date. A person is one entity with several roles, and the role belongs to the connection rather than to the person, because a guest lecturer is frequently a participant as well. Institutions are an entity of their own, because nurseries and providers register several people and take on the invoice. Attendance and payment are two independent conditions for a certificate, with a documented manual override. The specialist conference gets its own module in which the event format itself is configurable: across the years it has run with one location and with twelve, with one phase and with two.
Dates are marked up as schema.org Course and Event, and a public read interface makes them retrievable, for search engines as much as for agents. Accessibility and keeping the data in Germany are requirements, not additions.
The approach is a new build, not a migration. The existing system is a source of knowledge about the domain, not a template for the data model. The seminar catalogue and future dates are carried over through a versioned, idempotent seeder. Eight stages, each signed off separately, steered through an acceptance list with observable criteria and a complete redirect map for both domains.
The result
What stands at the end is one system carrying both brands without two applications having to be operated. Stage zero is imminent. I have been engaged by this institute since 2014.