Borealis

half-built · laravel · 2025

Fifteen years of royalties, carried forward not rewritten

A US publisher of theatrical works for young performers

A theatrical licensing marketplace rebuilt on top of its own fifteen-year-old database, so nothing had to be migrated and nothing stopped selling.

The operation

A US publisher of theatrical works for young performers. Schools, community theatres and educational institutions buy performance rights, scripts and related materials through it, and playwrights earn a commission on every sale.

The problem

The platform already worked. It had been running since around 2009, on a PHP codebase and a MySQL schema that had grown for fifteen years, and it held more than 177,000 royalty records that the business depended on being correct.

The tempting answer to a system like that is a rewrite. The tempting answer is usually wrong: a rewrite means a migration, and a migration of fifteen years of financial history is the single most dangerous thing you can do to a business that has to pay its authors accurately.

What was built, and why that way

A Laravel application built on top of the existing schema rather than replacing it. The legacy tables were inherited, not migrated, so no Laravel migration manages the core data at all. The new admin panel took over the day to day work, and hands back to the original code for the parts that were working fine and not worth the risk of touching.

Coexisting like that is not free. Fifteen years of a database built by other people to older conventions means the new code has to bend to the old data rather than the other way round, in dozens of small places nobody would choose. That is the price of not migrating. It is far smaller than the price of migrating, and the business never stopped selling while it was being paid.

The rebuilt order screen, reading the original database. The link back to the old admin is the point: nothing had to be migrated.
The rebuilt order screen, reading the original database. The link back to the old admin is the point: nothing had to be migrated.

The part that was actually hard

The pricing model. Every play carries eight or more distinct licensing tiers, digital perusal, hardcopy, photocopy, video, stage performance, forensics, musical and classroom, and each tier has both its own price and its own author commission percentage. Video subdivides again into five package levels.

A single order mixes tiers freely, and each tier fulfils differently: digital delivery, physical shipping, or performance rights documentation. The money then cascades through subtotals, per-type commissions, tiered shipping, discounts, coupons and tax.

Underneath that sits what is effectively a small accounting system: royalties settled per order line, at rates that vary by author and by play, with advances reconciled against future earnings.

Where it stands

Built between 2023 and 2025 and running in production. Transactional email goes out through Amazon SES with delivery, bounce, open and click recorded per message.

Different business, same shape of problem?

Every system written up here started with somebody describing an operation that had outgrown the way it was being run. If that sounded familiar, tell me how yours works today.

Talk through your version