M cenaly.ru
⚙️ Features

🍲 Meal Plan Subscriptions

Calendar meal plans: subscriptions, skipped days, automatic order generation

Documentation

Meal Subscription Plans

A meal plan isn't a one-off order — it's a subscription: the guest pays for a period (a week or a month) and gets ready-made lunches delivered on a schedule, without re-ordering every single day. It fits canteens, dark kitchens, corporate office lunch delivery, and fitness meal programs — anywhere a guest eats on a recurring schedule rather than occasionally.

Open: Admin Panel → Meal subscriptions (admin.cenaly.ru/meal-plans) — that is how both the sidebar entry and the page heading are labeled.

The section works on the international contour. On the Russian one (cenaly.ru) meal subscriptions are not supported yet: the menu entry is visible, but any action inside it ends with an error.


What a meal plan is#

A plan is a template the venue configures:

  • name, description and variant — a free-text tag like "standard," "veg," "light" for different flavor lines on the same schedule;
  • dishes or combos for the day and their quantities;
  • delivery weekdays (e.g. weekdays only);
  • subscription length — one week or several (a month ≈ 4 weeks);
  • price for the whole period — usually cheaper than the sum of one-off orders for the same days;
  • delivery window (e.g. "12:00–13:00");
  • active/inactive — inactive plans aren't shown to guests.

Admin section#

The "Meal subscriptions" page has a location picker and two sections:

Plans — a list with create/edit: the form collects name, description, variant, currency and period price, duration in weeks, delivery weekdays (day toggles), dishes with quantities, and the delivery window. The "⚙️ Generate orders now" button manually triggers today's order generation and shows a "Generated: N" summary — handy for testing without waiting for the automatic cron.

Subscriptions — a table of the location's active subscriptions: customer, plan, period (start/end dates), status (active/paused/cancelled/completed), payment (unpaid/paid), and the number of orders delivered so far; from the table you can mark a period as paid ("Mark paid"), undo that ("Mark unpaid"), or cancel a subscription.

The section shows up in the admin menu only when meal plans are enabled as a location capability.


Storefront and subscribing#

If the location has active plans, the menu page (in food/canteen mode) shows a "Meal subscription" block above the dish list: plan cards with the period price and delivery days, and a "Subscribe" button.

The guest picks a plan, enters name, phone and a delivery address, and confirms — the subscription is created right away. Online billing for the period isn't automated yet: after subscribing, the guest sees an "Awaiting payment" status — the period is paid on the spot or as arranged with the venue, and staff mark it paid in the admin panel.


The subscriber's calendar#

If a guest has already subscribed on this device (the browser remembers it), on their next visit to the menu page they see their subscription and a calendar of upcoming deliveries. For any given day there's a "Skip" button — that day's delivery isn't generated, without cancelling the whole subscription.


Daily order generation#

Every day, at a set time, an automatic process runs through all of a location's active subscriptions and, for each one that has a delivery scheduled today (and the day isn't skipped or the subscription isn't paused), creates a regular delivery order tagged with the "meal plan" source. From there the order flows through the same pipeline as any other: the kitchen (KDS), the order monitor, the own-delivery screen — there's no separate queue for subscription orders.

Re-running generation for a day that's already been processed doesn't create a second delivery — generation is idempotent.

The dishes and price locked into a subscription at signup don't change even if the plan template is edited later in the admin panel — every active subscription carries its own snapshot of the terms.


Paying for a period#

Right now, subscription payment is manual: the venue collects money for the period on the spot (cash/card) or however's convenient, and marks the subscription as paid in the subscriptions table. Automatic billing for the next renewal period isn't wired up.


What you need to get started#

  • The "Meal plans" toggle switched on in the App Store — the section is niche and off by default.
  • Menu items the lunches are assembled from — the plan is built from your catalog.
  • A pickup or delivery schedule — the days and times orders are generated for.
  • A way to pay for a period — payment is marked manually by an administrator.

Limitations#

  • On the Russian brand (cenaly.ru) meal-plan subscriptions are not supported — the menu item is visible, but the section does not work there.
  • There is no automatic charge per period. Recurring billing was deliberately not built: an administrator marks the period as paid.
  • The section is off by default and is enabled with a toggle.
  • This is a subscription, not a one-off pre-order — for one-off timed orders there are pre-order slots in the regular checkout.

Troubleshooting#

There is no "Meal plans" item in the menu. The section is not switched on — enable it in the App Store.

Orders for the day were not generated. Check the subscription schedule and skipped days in the subscriber's calendar: a skipped day creates no order.

A guest paid but the period is marked unpaid. Payment is marked manually by an administrator — there is no automatic charge per period.

The section does not work on the Russian brand. That is correct — the contour is not supported yet.


  • Orders — where scheduled orders land
  • Kitchen (KDS) — handling subscription orders alongside regular ones
  • Own Delivery — the courier screen that delivers subscription meals

FAQ#

What if a guest forgets to skip a day and isn't home?#

The order for that day is generated on schedule regardless — skip a delivery ahead of time in the subscriber calendar, or contact the venue directly.

Does editing the plan template affect subscriptions already signed up?#

No — each subscription keeps its own set of dishes, price and days, fixed at signup; template edits in "Plans" only apply to new subscriptions.

Is the subscription billed automatically each period?#

Not yet — payment is manual: the venue collects money for the period and marks the subscription paid in the admin panel.