The liturgical calendar is a database problem
Every parish tool treats the calendar as a list of events. That is the mistake underneath all the others.
Almost every piece of church software makes the same first mistake, and every other mistake follows from it: it treats the calendar as a list of events. You open a screen, you type in “Divine Liturgy, 9:30am,” you pick a date, you save. The calendar is a bucket you pour things into.
For an Orthodox parish, that model is not just incomplete. It is wrong at the foundation, and it quietly poisons everything built on top of it.
The calendar is a system of rules, not a bucket of entries
The Orthodox liturgical year is computed, not recorded. The whole moveable cycle hangs off the date of Pascha, which is itself a calculation. From Pascha you derive the Sundays of the Triodion and Pentecostarion, the start of the fasts, the Sunday tones cycling through their eight-week rounds. Alongside that runs the fixed calendar of saints and feasts, and layered over both are the fasting rules and their dispensations. And the day a given parish keeps depends on whether it reckons by the old calendar or the new.
None of that is data a volunteer should be typing in. It is knowledge that can be derived. Ask “what fast are we in today, and what does it permit?”, “what tone is sung this week?”, “what are the appointed readings?”, and for a correctly-built system every one of those is a query with a computed answer, not a field somebody remembered to fill in.
A list of events can tell you what someone typed. Only a model of the year can tell you what is true.
When you model the calendar as a list, the parish becomes the database. The knowledge lives in one person’s head and gets re-entered, parish by parish, week by week, until it drifts: a wrong tone here, a missed leavetaking there, a fast printed as fast-free. Multiply that by every parish running the same generic tool and you have thousands of people hand-maintaining the same computable truth, badly.
Build the hard part once, at the bottom
The alternative is to do the difficult thing exactly once. Compute Pascha. Derive the moveable cycle from it. Run the tone cycle. Resolve the fixed feasts against the parish’s reckoning. Attach the lectionary. Encode the fasts and their dispensations as rules, not annotations. Do that carefully, in one place, at the foundation, and the liturgical day stops being a screen someone visits and becomes a layer the rest of the product reads from.
Everything downstream gets simpler because of it. The bulletin already knows which commemorations to print. The public website shows the coming feast with nobody updating it. The readings are simply present. Change the parish’s calendar setting and the entire system shifts with it, correctly, because none of those surfaces stored the answer. They asked for it.
This is what we mean when we say Symphonia is built on the liturgical year rather than having a calendar feature. The distinction sounds academic until you watch a parish secretary stop re-typing the fast rules every Lent, because the software already knew.
Software that can’t tell a leavetaking from an apodosis was never going to serve a parish. So we taught it to, once, at the bottom, where everything else could stand on it. That is not a calendar feature. It is a database decision, and the most important one in the whole product.