Vendors / Open source & self-hostable
TastyIgniter
dossier live
- Claims in scope
- 278
- Scored
- 278
- Assessed
- 240
- Unknown
- 38
- Not applicable
- 36
- Cells challenged
- 34
Identity
- Owner
- IGNITER LABS LTD (UK company number 10203662, incorporated 2016-05-27, status Active, SIC 62012 business and domestic software development). The site names Samuel Adepoyigi as trademark holder and every GitHub release is published by @sampoyigi -- effectively a single-maintainer commercial-open-source project.
- Founded
- Project active since 2013 (the site's own copyright line reads 'Copyright 2013-2026'; the GitHub repository was created 2014-02-02). Originally a CodeIgniter application; v4.x is a suite of Laravel packages. The commercial vehicle, IGNITER LABS LTD, was incorporated 2016-05-27.
- Scale
- unknown. No customer count, ARR or location count is published. The homepage claims '20,000+ installs'. The only independent quantitative signals are GitHub (3,683 stars, 1,161 forks, 4 open issues, last push 2026-07-25 -- https://api.github.com/repos/tastyigniter/TastyIgniter) and marketplace install counters as of 2026-08-03 (Local 46,617; Cart 46,509; Pay Register 46,114; Reservation 45,132; Automation 22,850; APIs for TastyIgniter 22,614; Coupons 31,789; SMS Notify 4,250; Kitchen Display 1,988 -- https://tastyigniter.com/marketplace/extensions). Install counters are downloads, not paying restaurants, and the paid operational extensions sit in single digits (POS 8, Dine-In Management 10, Waiter Management 7).
- Who it is for
- Single-location and small-group (1-5 location) independent restaurants and takeaways -- heavily UK/EU, pizza/kebab/Indian-takeaway shaped -- that want commission-free online ordering and reservations on their own domain and have (or can hire) a PHP/Laravel developer to run it. A substantial secondary ICP is web agencies and freelancers deploying it for restaurant clients. It is not a POS buyer's product: there is no terminal software, no card terminal, no cash drawer and no timeclock.
- Site
- https://tastyigniter.com/
Pricing
transparency: published · unit: free · processor lock-in: no
- Software
- Core: GBP 0, self-hosted, forever free, MIT licensed. Homepage states verbatim 'Free & open-source - Zero commission - Self-hosted', 'GBP 0 - Self-hosted, forever free. The complete ordering system with no usage limits' and 'No hidden fees. No commission. No contracts.' Revenue comes from two places. (1) Marketplace extensions, priced per item and published: Multi Vendor $149/yr; DocketPrint $75/yr; SumUp $50/yr; Star CloudPRNT $50/yr; POS - Point of Sale $49/yr; Delivery Management $49/yr; Dine-In Management $49/yr; Takeaway Management $49/yr; Waiter Management $49/yr; Group Ordering $49/yr; Two Factor Authentication $49/yr; Multi Vendor Stripe Connect $49/yr; Loyalty Points $30/yr; Schedule Special Days $30/yr; Uber Direct $28/yr; SEO Manager $10 one-off; Carrier Bag Charge $6 one-off; the rest free (Coupons, Kitchen Display, Webhooks, APIs, Automation, Reports, Import & Export Tool, Shipday, Gift Up!, SMS Notify, Translate, Visitor Tracker). The homepage summarises this as 'from GBP 29' (https://tastyigniter.com/marketplace/extensions). (2) Premium Support, monthly: Solo $80/mo (24-hour response), Pro $240/mo (12-hour), Enterprise $400/mo (8-hour), all 'billed monthly, cancel anytime', all weekdays 09:00-17:00 GMT, email/Discord/GitHub only (https://tastyigniter.com/premium-support).
- Card processing
- None. TastyIgniter takes no processing margin and publishes no card rate. Rates are whatever the merchant negotiates directly with Stripe, PayPal, Square, Mollie or Authorize.Net (https://tastyigniter.com/docs/extensions/payregister).
- Contract
- None for the software (MIT, perpetual). Premium Support is billed monthly with 'cancel anytime' stated on the plan cards. Marketplace extensions are annual licences or one-off purchases; the Terms and Conditions add a 30-day money-back guarantee for marketplace purchases that are not as described, contain security vulnerabilities, or have unresolved technical issues (https://tastyigniter.com/terms-and-conditions).
- Early termination
- None documented, and structurally impossible on the software -- it is MIT-licensed and runs on the operator's own server. Support plans are month-to-month.
- Hardware
- None. The vendor sells, leases and certifies no hardware of any kind; the site carries no device catalogue, accessory page or compatibility list.
API posture
public API: open
- Cost to integrate
- $0. The API ships as a free marketplace extension ('APIs for TastyIgniter', free, 22,614 installs) on an MIT-licensed self-hosted app. No partner agreement, no certification programme, no revenue share, no per-location API fee. The vendor publishes no commercial terms for marketplace extension authors, so seller-side economics remain unknown.
- Webhooks
- Not in core. A free first-party 'Webhooks' extension (Igniter Labs, 2,434 installs) is on the marketplace and documents secret-token auth, retries and a delivery history with response codes and payloads; the event catalogue is not enumerated publicly. Because the app is self-hosted Laravel, an operator can also subscribe to framework events directly -- a real escape hatch, but not a productised webhook contract.
- Data export on exit
- Total and unconditional. The operator runs the MySQL database on its own infrastructure under an MIT licence. There is no vendor-held copy, no export fee, no retrieval window and no vendor approval step. This is the strongest cell on the record and the main structural reason an operator would choose it.
- Notes
- Auth is Laravel Sanctum bearer tokens, minted by `php artisan igniter:api-token --name= --email=` or by POST /api/token with is_admin/email/password/device_name, optionally scoped to abilities (documented example `orders.*`) and issuable for admin or customer contexts. Resources: categories, coupons, customers, locations, location settings, menus, orders, reservations, reviews -- each with list/create/retrieve/update/destroy, so the API is genuinely symmetric read/write for what it covers. What it does NOT cover: payment objects, employees or labour (there is no labour data model at all), and inventory beyond menu-item and option-value stock counts. Not OAuth 2.0 -- no operator consent screen, no per-app revocable grants beyond deleting a token. No published rate limits, no pagination contract, no API changelog or deprecation policy, and no hosted sandbox (though the whole product installs free locally, which serves the same purpose).
Capabilities
Every claim is binary and checkable. Grades: A primary documentation · B product documentation · C pricing or feature page · D marketing claim · E third-party reporting · F inference with no source. A yes on a differentiator claim requires A or B.
Order capture & FOH workflow
order-capture-floor-plan-editor
Reservation module has Dining Areas and tables with per-table capacity, but configured as lists; no graphical editor, no saved layouts, no server sections. https://tastyigniter.com/docs/extensions/reservation · retrieved 2026-08-01
order-capture-seat-level
No seat, cover or position concept in the cart/order model. Orders are web or admin-entered carts with a single line-item list; the model set is Cart, Order, OrderMenu, OrderMenuOptionValue, OrderTotal with no seat column. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-03
order-capture-coursing-hold-fire
This is marketing-listing text for a third-party ($49/yr, avisaas) extension with 7 installs and no published product documentation. A one-line marketplace blurb plus 7 deployments is not evidence of a coursing/hold-fire capability. Partial overstates it. adversarially verified
order-capture-split-merge
Correct that core has none, but the reasoning ignores the existing third-party POS extension ($49/yr, avisaas). Whether that extension implements check splitting is undocumented either way. Core-absent + extension-unknown = unknown, not no. adversarially verified
order-capture-bar-tab-preauth differentiator
PayRegister ships a `WithAuthorizedPayment` pre-auth/capture trait that a gateway driver may opt into, but there is no tab object, no card-on-file-held-open flow, no incremental re-authorisation and no stale-tab close job. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-03
order-capture-transfer-audit
The Cart model set is the complete order domain: Cart, Category, Ingredient, Mealtime, Menu, MenuCategory, MenuItemOption, MenuItemOptionValue, MenuOption, MenuOptionValue, MenuSpecial, Order, OrderMenu, OrderMenuOptionValue, OrderTotal, Stock, StockHistory. There is no check, tab or seat entity, so there is no open check to transfer between servers, tables or devices. The nearest thing is ti-ext-user's AssignableLog, which records assignment of an order to a staff member - not a transfer naming both employees. https://github.com/tastyigniter/ti-ext-cart/tree/master/src/Models · retrieved 2026-08-03 · not refetchable · site policy · graded A when read adversarially verified
order-capture-native-handheld
Vendor ships no handheld app. Product is a browser-based Laravel web application. https://github.com/tastyigniter/TastyIgniter · retrieved 2026-08-01
order-capture-offline-order-entry
Server-rendered web app with no local terminal runtime. Vendor publishes no offline behaviour of any kind. https://tastyigniter.com/docs · retrieved 2026-08-01
order-capture-qr-same-check differentiator
A paid 'Dine-In Management' extension ($49/yr) offers table management, but whether guest QR orders attach to an existing open check is not documented.
order-capture-kiosk-first-party differentiator
No kiosk product on the site or marketplace. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
order-capture-drive-thru
Order types are an enumerated, extensible class set; the Cart docs name delivery and pickup as the only built-in types (subclasses of `AbstractOrderType`), each with configurable open/opening/closed/disabled descriptions. Anything else has to be written in PHP by the operator. There is no drive-thru order type, no lane or arrival state, no order-confirmation-board feed and no cars-in-lane concept. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-03
order-capture-drive-thru-timers
Order types are an enumerated, extensible class set; the Cart docs name delivery and pickup as the only built-in types (subclasses of `AbstractOrderType`), each with configurable open/opening/closed/disabled descriptions. Anything else has to be written in PHP by the operator. With no drive-thru flow there are no lane stage timestamps, no per-stage targets and no timer reporting. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-03
order-capture-voice-ai differentiator
The complete public marketplace (47 extensions, retrieved today) and the complete core model set were both enumerated. There is no first-party voice agent, no voice-AI extension and no named voice partner. The open REST write API would permit a third party to build one, but none is published. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03
order-capture-throttling differentiator
Per-location 'Limit Orders' setting caps orders per timeslot, with configurable slot interval and lead time. No automatic quote-time extension on kitchen load. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
order-capture-scheduled-orders
Scheduled orders with per-order-type lead time and min/max advance window are core. No make-queue fire-time injection — there is no make queue. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
order-capture-catering
The complete public marketplace (47 extensions, retrieved today) and the complete core model set were both enumerated. No catering extension exists and core models no quote, deposit, balance or event object — the order model is a single cart with a fulfilment time. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03
order-capture-order-ready-signal differentiator
No third-party marketplace integrations exist to signal. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
order-capture-void-comp-controls
The order status workflow supports a rejection status with configurable reasons and can be restricted to named staff, but there is no void/comp/discount reason-code model, no manager-approval gate and no exception report. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-03
Menu, modifiers & pricing engine
menu-pricing-nested-modifiers
Single-level menu options (select/radio/checkbox/quantity) containing option values. No nesting; required flag and min/max exist at that one level only. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
menu-pricing-modifier-price-by-parent-size
Option values carry one price. No parent-item or size matrix; you duplicate the option. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
menu-pricing-fractional-placement differentiator
No halves or quarters. Toppings are whole-pie option values only. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
menu-pricing-half-and-half-rule differentiator
No half-and-half pricing rule of any kind, configurable or otherwise. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
menu-pricing-topping-quantity-tiers
'Quantity' option type lets a guest pick N of an option value, price multiplying linearly. No light/regular/extra tiers with independent multipliers. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
menu-pricing-size-style-matrix differentiator
One base price per menu item. Size and crust would be modelled as option values with additive prices, not a two-axis grid with per-cell overrides. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
menu-pricing-included-allowance differentiator
Proven negative, still open today: issue #1178 '[Feature]: Add ‘Free Quantity Limit’ option for menu item options' (opened 2026-04-29) is one of only three open issues on the repository. The capability is an unimplemented request, not a shipped feature. https://github.com/tastyigniter/TastyIgniter/issues · retrieved 2026-08-03
menu-pricing-combos
Complete model set of the Cart extension, which owns the entire menu and order domain: Cart, CartSettings, Category, Ingredient, Mealtime, Menu, MenuCategory, MenuItemOption, MenuItemOptionValue, MenuOption, MenuOptionValue, MenuSpecial, Order, OrderMenu, OrderMenuOptionValue, OrderTotal, Stock, StockHistory. Stock/StockHistory is a plain count against a menu item or an option value with a low-stock alert; `Ingredient` is the renamed allergens table (migration 2022_02_03_000300_rename_allergens_to_ingredients_table), not a recipe component. There is no combo, meal or bundle model, no component-swap price delta and no cart-side combo detection. https://api.github.com/repos/tastyigniter/ti-ext-cart/contents/src/Models · retrieved 2026-08-03
menu-pricing-upsell-prompts differentiator
No upsell engine documented in core; a community extension may exist but I could not verify one.
menu-pricing-86-propagation
Stock quantity at zero makes the item unavailable across the site — but there is only one channel. Nothing to propagate to (no POS, no kiosk, no marketplaces). No latency published. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
menu-pricing-countdown-auto-86 differentiator
Per-item and per-option-value stock quantity decrements on sale and auto-hides the item at zero, with a minimum-quantity alert. No scheduled auto-restore. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
menu-pricing-dayparting
Mealtimes (breakfast/lunch/dinner) gate item availability by time, and Special Pricing supports Daily / Period / Recurring-weekday validity with start-end times. Per-location timezone handling of these rules is not explicitly documented. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
menu-pricing-channel-price-books
Items can be restricted to delivery, pickup, or both, but carry one price. No per-channel price book, no percentage-markup rule. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
menu-pricing-dual-pricing differentiator
PayRegister documents five gateways — Authorize.Net AIM, Mollie, PayPal Express, Square, Stripe — all online/hosted-checkout drivers, plus opt-in traits for payment profiles, refunds and pre-authorised payments. Gateway configuration fields are enumerated as API credentials, order fee, minimum order total and order status mapping. A menu item carries one price; there is no cash-price/card-price pair on the item, no automatic differential applied at tender, and no receipt disclosure text. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-03
menu-pricing-allergen-nutrition
Ingredients/allergens can be tagged per item and shown to customers. No nutrition values and no derivation from recipe components. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
menu-pricing-recipe-linkage differentiator
Free community extension 'Restaurant Production Pro' is described as an ERP managing food cost, recipes and inventory. Not core; depth and sale-driven depletion unverified. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
menu-pricing-3p-menu-push
No certified marketplace menu integrations. Only Uber Direct (courier-as-a-service, not the Uber Eats marketplace) and Shipday appear. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
menu-pricing-dynamic-pricing
Special Pricing (the MenuSpecial model) supports Daily / Period / Recurring-weekday validity windows with start and end dates — date- and time-driven only. There is no demand-, load- or inventory-driven pricing rule, no floor/ceiling guardrail and no experiment framework. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-03
Payments & money movement
payments-processor-choice differentiator
PayRegister documents five gateway classes - Igniter\PayRegister\Payments\Stripe, PayPalExpress, Square, Mollie and AuthorizeNetAim - plus opt-in traits (WithPaymentProfile, WithPaymentRefund, WithAuthorizedPayment) for building a sixth; the third-party SumUp gateway on the marketplace shows the extension point is used in practice. The vendor operates no processing business, so there is no in-house lock and no residual. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-03 adversarially verified
payments-published-rates differentiator
Vendor publishes no card rate because it takes no processing margin — the merchant contracts directly with its own gateway. Structurally favourable, but the cell is literally unmet. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-01
payments-dual-pricing differentiator
PayRegister documents five gateways — Authorize.Net AIM, Mollie, PayPal Express, Square, Stripe — all online/hosted-checkout drivers, plus opt-in traits for payment profiles, refunds and pre-authorised payments. Gateway configuration fields are enumerated as API credentials, order fee, minimum order total and order status mapping. No cash-discount or card-surcharge price pair exists in that configuration surface, and no dual-price line appears on the order-total model. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-03
payments-surcharge-guardrails differentiator
PayRegister documents five gateways — Authorize.Net AIM, Mollie, PayPal Express, Square, Stripe — all online/hosted-checkout drivers, with configuration limited to API credentials, order fee, minimum order total and order status mapping. There is no surcharging engine at all, therefore no debit/prepaid BIN exclusion, no network cap enforcement and no per-state rule table. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-03
payments-emv-nfc
PayRegister enumerates a closed set of five online gateways with no card-present flow, terminal pairing or reader SDK, and the vendor sells no hardware. The obvious counter-example was checked and fails: the SumUp extension ($50/yr, dineabyte, 11 installs) is 'an additional payment gateway for the Pay Register extension' for online card payments with Apple Pay and Google Pay embedded as web Alternative Payment Methods, not a terminal driver. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-03 adversarially verified
payments-softpos-tap-to-pay differentiator
PayRegister documents five gateways — Authorize.Net AIM, Mollie, PayPal Express, Square, Stripe — all online/hosted-checkout drivers, plus opt-in traits for payment profiles, refunds and pre-authorised payments. Gateway configuration fields are enumerated as API credentials, order fee, minimum order total and order status mapping. There is no card-present, terminal, reader or Tap-to-Pay-on-phone path anywhere in the extension or its driver framework. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-03
payments-pay-at-table
No handheld hardware of any kind. https://github.com/tastyigniter/TastyIgniter · retrieved 2026-08-01
payments-qr-guest-pay differentiator
Paid 'Dine-In Management' extension exists; QR scan-to-pay closing a check is not documented and there is no POS check to close.
payments-tip-adjust
Guest tip is entered at online checkout (a custom tip input exists in the cart box). No pre-auth-then-adjust flow, no batch/adjust window, no unadjusted-tips manager screen. https://github.com/tastyigniter/TastyIgniter/issues · retrieved 2026-08-01
payments-tip-pooling differentiator
Complete admin migration set of tastyigniter/core (55 files, read through the GitHub contents API) enumerates every table the platform creates: locations and location_areas, menus/options/specials/mealtimes, orders, order_totals, order_menu_options, reservations and reservation_tables, staffs + staff_groups + staff_roles + locationables, stocks, payment_profiles, payment_logs, assignable_logs, working_hours and settings. There is no time-clock, shift, punch, break, pay-rate, till/drawer or payroll table anywhere, and src/Admin/Models contains only Staff.php, Status.php and StatusHistory.php. The tip is a line on order_totals with no employee link, so there is nothing to pool into or distribute from. https://api.github.com/repos/tastyigniter/core/contents/database/migrations/admin · retrieved 2026-08-03
payments-offline-store-and-forward differentiator
Web app; no offline payment capture path exists.
payments-offline-decline-liability differentiator
Nothing to document — there is no offline payment capability.
payments-gift-cards
Free 'Gift Up! Gift Cards' extension integrates a third-party gift-card provider. No first-party stored-value ledger in the platform. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
payments-house-accounts
No house/on-account tab with credit limits or statements documented in core; could not confirm a community extension either way.
payments-split-tender
payregister docs are silent on split tender — they neither implement nor affirmatively exclude it — and the third-party POS extension is undocumented. Per the 'no means not documented publicly' rule this is unknown. adversarially verified
payments-refund-void-controls
Refunds are supported via the WithPaymentRefund trait and admin actions are permission-gated, but no immutable audit log identifying an approver is documented. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-01
payments-chargeback-tooling differentiator
PayRegister documents five gateways — Authorize.Net AIM, Mollie, PayPal Express, Square, Stripe — all online/hosted-checkout drivers, with configuration limited to API credentials, order fee, minimum order total and order status mapping. No dispute object, evidence upload or representment workflow exists in the platform; chargebacks are handled entirely in the merchant's own gateway dashboard. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-03
payments-card-on-file differentiator
The trait is real (`supportsPaymentProfiles()`, `updatePaymentProfile()`, `payFromPaymentProfile()`), but it is an OPT-IN capability a gateway driver may implement — the docs nowhere enumerate which of the five shipped gateways actually do. Card-on-file is therefore documented at the framework layer, not guaranteed at the product layer. Partial. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-01 adversarially verified
payments-payout-timing differentiator
Deposit timing is set by the merchant's own gateway; TastyIgniter publishes no schedule and offers no funding product. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-01
payments-p2pe-pci4
Self-hosted open-source software; the vendor publishes no AoC or P2PE listing and the merchant/host carries PCI responsibility. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-01
Kitchen & production
kitchen-station-routing
Shortfall: routing is order-level, not item-level. The Kitchen Display manual (the extension is open source and documented, contrary to the earlier reading) configures each display with Locations, Order Types and Menu Categories filters plus up to five board columns mapped to order statuses, and its worked example names a display 'Pizza Station' - so routing by category, order type and location is real and operator-configurable. But the board renders whole order cards, so an order spanning two categories appears in full on both boards, and there is no per-item or revenue-centre routing. https://github.com/igniter-labs/ti-ext-kitchendisplay/blob/master/docs/index.md · retrieved 2026-08-03 adversarially verified
kitchen-expo-consolidation
No multi-station model, so no expo consolidation.
kitchen-course-firing differentiator
Identical basis, identical problem: third-party, 7 installs, listing copy only, fire-from-terminal explicitly unverified by the researcher's own note. Downgrade. adversarially verified
kitchen-prep-time-pacing differentiator
The Kitchen Display manual's Wait Time Management section is the whole of the product's cook-time handling: an operator clicks the order time and picks a +15/+30/+45 preset or types a custom HH:MM. That is a manual, order-level promise-time push. No per-item cook time exists in the menu model and nothing staggers item display so lines finish together. https://github.com/igniter-labs/ti-ext-kitchendisplay/blob/master/docs/index.md · retrieved 2026-08-03 adversarially verified
kitchen-order-throttling differentiator
'Limit Orders' caps orders per timeslot and lead/delay times extend the quote, but the trigger is a static slot cap, not measured kitchen load or ticket times. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
kitchen-channel-pause-propagation differentiator
No connected marketplaces exist to propagate to. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
kitchen-order-ready-callback differentiator
No marketplace integrations.
kitchen-bump-bar-hardware
The Kitchen Display extension does have a manual (github.com/igniter-labs/ti-ext-kitchendisplay, docs/index.md), read 2026-08-03; the earlier claim that only a marketplace card exists was wrong. Every interaction it documents is a click - 'Click the Next button', 'Click Pause button', 'Click order time'. There is no bump bar, keypad, keyboard-shortcut map or supported-model list either affirming or denying HID input, so a USB-HID bump bar emulating keystrokes is neither documented nor excluded. adversarially verified
kitchen-all-day-counts
The Kitchen Display extension does have a manual (github.com/igniter-labs/ti-ext-kitchendisplay, docs/index.md), read 2026-08-03. It describes the board as order cards in status columns with an Orders Limit of 1-100, and its usage section covers viewing, status updates, wait times, real-time push and permissions. No aggregate-by-item view is described, but the docs describe how the board operates rather than enumerating what it cannot render, so this is unresolved rather than absent. adversarially verified
kitchen-sla-alerts
The Kitchen Display manual enumerates the configuration surface exhaustively - 'The following settings are available': Title, Locations, Order Types, Menu Categories, Orders Limit, five Board Columns and Hide card details. No target cook time, threshold, colour escalation or audible alert appears there or in the usage section. The only time control is manual: click the order time and add a +15/+30/+45 preset or a custom HH:MM. https://github.com/igniter-labs/ti-ext-kitchendisplay/blob/master/docs/index.md · retrieved 2026-08-03 adversarially verified
kitchen-printer-fallback differentiator
Printing is handled by the paid DocketPrint extension ($75/yr, 1 install) and the third-party Star CloudPRNT extension ($50/yr, 29 installs). Neither publishes documentation covering failed-print detection, backup-printer failover or staff alerting, so the behaviour is undetermined rather than absent.
kitchen-offline-operation differentiator
Kitchen Display is a browser view of the central web app. If the app is unreachable, tickets stop.
kitchen-item-build-screens differentiator
Checked against the Kitchen Display manual (github.com/igniter-labs/ti-ext-kitchendisplay, docs/index.md), 2026-08-03. The nearest evidence is the 'Hide card details' setting, which suppresses Customer Name, Order ID and Order Type - implying cards carry order metadata plus lines, but saying nothing about whether option values are broken out, and nothing about recipe steps or portioning. adversarially verified
kitchen-pizza-fractional-display differentiator
No fractional placement exists in the menu model, so nothing fractional can be displayed. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
kitchen-recall-refire
Shortfall: order-level only. The Kitchen Display manual describes advancing a card with the Next button and 'then select a status from the dropdown' - arbitrary status selection, not a one-way bump - plus a Pause button that moves an order to On Hold, so a bumped order can be moved back to New or Preparing. Nothing recalls or refires an individual line, and reprinting is a separate paid extension (DocketPrint, $75/yr) with no documented refire hook. https://github.com/igniter-labs/ti-ext-kitchendisplay/blob/master/docs/index.md · retrieved 2026-08-03 adversarially verified
kitchen-order-modification-alerts differentiator
No documentation of change-flagging on a live ticket.
kitchen-guest-ready-notification differentiator
I could not independently confirm the SMS Notify leg — that extension did not surface in the marketplace listing I retrieved, and the cited source is the cart docs rather than a notification doc. Native status-change email is credible; the SMS half of a 'yes' is unverified, and SMS in any case runs on the operator's own provider account with 10DLC entirely on them. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01 adversarially verified
kitchen-waste-logging
The free Restaurant Production Pro ERP extension may cover waste; not documented on the marketplace listing.
kitchen-speed-of-service-reporting
Reports extension ships Best/Worst Selling Items and Top/Bottom Customers only. No ticket-time or station-time reporting. https://tastyigniter.com/docs/extensions/reports · retrieved 2026-08-01
kitchen-prep-forecasting
The Reports extension documents four built-in dashboard datasets (Best Selling Items, Worst Selling Items, Top Customers, Bottom Customers) plus a developer report builder with filter operators, column types and CSV export. No forecasting model of any kind is documented, and with no recipe or ingredient model there is no prep quantity to forecast — ingredient-level inventory is still an open, unimplemented feature request (#1149). https://tastyigniter.com/docs/extensions/reports · retrieved 2026-08-03
Delivery, dispatch & third-party channels
delivery-driver-roster
Delivery Management is third-party (avisaas) with 7 installs and no documentation page. Native delivery dispatch is one of the flagged high-bar cells; a $49/yr blurb with a 7-install footprint clears nothing. adversarially verified
delivery-dispatch-board
Same evidence, and the researcher already concedes batching and elapsed-time columns are unverified. On the high-bar dispatch cell that is unknown, not partial. adversarially verified
delivery-route-map differentiator
Route sequencing for multi-stop runs is not described in the Delivery Management listing.
delivery-driver-tracking differentiator
No driver-facing mobile app documented; live GPS to dispatch unverified.
delivery-zones-polygon differentiator
The Local extension defines each delivery area as type 'address', 'circle' or 'polygon'. Polygon takes an explicit vertex ring (documented example [[[0.0,0.0],[0.0,1.0],[1.0,1.0],[1.0,0.0],[0.0,0.0]]]); circle takes a centre and radius; address takes priority-ordered components such as ['type' => 'locality', 'value' => 'London', 'priority' => 0]. Charges attach per area with conditions of type 'all', 'above' or 'below' an order total. Native, free, and configured by the operator. https://tastyigniter.com/docs/extensions/local · retrieved 2026-08-03 adversarially verified
delivery-zone-pricing
Each area carries conditional delivery charges (fixed, below-threshold, above-threshold, prioritised for tiering) and its own minimum order total. A per-zone quoted promise time is not documented — lead time is per-location. https://tastyigniter.com/docs/extensions/local · retrieved 2026-08-01
delivery-address-validation
The local docs I read document boundary types (polygon vertices, circle centre/radius, address components), a `boundaries` attribute, conditional charge `conditions`, and `checkMinimumOrderTotal()`. Geocoding is referenced, but the specific checkout-time rejection flow the researcher asserts is not spelled out in the documentation. Coverage checking is clearly implied by the model; 'rejected before acceptance' is inference presented as documented. https://tastyigniter.com/docs/extensions/local · retrieved 2026-08-01 adversarially verified
delivery-driver-comp differentiator
Complete admin migration set of tastyigniter/core (55 files, read through the GitHub contents API) enumerates every table the platform creates: locations and location_areas, menus/options/specials/mealtimes, orders, order_totals, order_menu_options, reservations and reservation_tables, staffs + staff_groups + staff_roles + locationables, stocks, payment_profiles, payment_logs, assignable_logs, working_hours and settings. There is no time-clock, shift, punch, break, pay-rate, till/drawer or payroll table anywhere, and src/Admin/Models contains only Staff.php, Status.php and StatusHistory.php. No mileage, reimbursement or driver-pay table, and no payroll export of any kind. https://api.github.com/repos/tastyigniter/core/contents/database/migrations/admin · retrieved 2026-08-03
delivery-cash-reconcile
A driver settle-up / over-short flow is not described in the Delivery Management listing.
delivery-daas-dispatch
Both couriers are first-party Igniter Labs publications: Uber Direct for TastyIgniter at $28.00/yr with 20 installs, and Shipday: Local Delivery free with 1,091 installs. Neither documents auto-dispatch rules, fee quoting before dispatch, or courier assignment logic in public. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03
delivery-daas-fallback differentiator
The two courier extensions (Uber Direct, Shipday) carry marketplace cards but no public configuration documentation, so whether either supports an own-driver-first-then-overflow rule is undetermined.
delivery-3p-direct-integration differentiator
No DoorDash, Uber Eats or Grubhub marketplace integration on the marketplace or in core. Uber Direct is courier dispatch, not the Uber Eats marketplace. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
delivery-3p-injection
No third-party marketplace integration is published. The complete first-party extension catalogue (one unpaginated page, read 2026-08-09) contains no Uber Eats, Deliveroo, Just Eat, DoorDash, Deliverect, Otter or Chowly connector; the two delivery items it does list, Uber Direct for TastyIgniter ($28/yr, 'Support local deliveries for your TastyIgniter store with Uber Direct order delivery') and Shipday (free), are last-mile dispatch of the operator's own orders, not marketplace order injection. The vendor's own comparison page treats Uber Eats as a competitor to run alongside, not to integrate: 'Keep your Uber Eats listing for discovery while driving repeat customers to your direct ordering page.' An operator could build injection themselves on the open write API (POST /api/orders). https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-09 adversarially verified
delivery-menu-push
The full public marketplace listing (47 extensions, retrieved today) contains no DoorDash, Uber Eats, Grubhub, Deliveroo or Just Eat marketplace connector. The only courier-shaped entries are Uber Direct ($28.00/yr, 20 installs) and Shipday: Local Delivery (free, 1,091 installs), both last-mile dispatch rather than a marketplace channel. With no marketplace channel connected there is no menu, price or photo sync to push, and no per-channel markup rule. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03
delivery-86-sync
No third-party channels connected.
delivery-store-pause
A location can be disabled in admin (and doing so has itself caused a 500-error bug), but there is no marketplace pause with timed reactivation. https://github.com/tastyigniter/TastyIgniter/issues · retrieved 2026-08-01
delivery-3p-reconciliation differentiator
The full public marketplace listing (47 extensions, retrieved today) contains no DoorDash, Uber Eats, Grubhub, Deliveroo or Just Eat marketplace connector. The only courier-shaped entries are Uber Direct ($28.00/yr, 20 installs) and Shipday: Local Delivery (free, 1,091 installs), both last-mile dispatch rather than a marketplace channel. No marketplace payout statements ever arrive, so there is nothing to reconcile order-by-order against deposits. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03
delivery-injection-error-visibility differentiator
No integration health surface because there are no first-party channel integrations.
delivery-tracking-page
Guests get an order-status page and status-change emails on the restaurant's own domain and branding — genuinely first-party. Live driver-position tracking is not core. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
delivery-promise-time differentiator
Promise time is lead time plus a configurable per-status delay — a static per-location constant, not load- or driver-aware. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
delivery-offline-behavior
Vendor publishes no offline behaviour documentation for any subsystem, delivery included.
Digital ordering & guest-facing channels
digital-first-party-web
Homepage states verbatim 'GBP 0 - Self-hosted, forever free. The complete ordering system with no usage limits', 'Zero commission' and 'No hidden fees. No commission. No contracts.' First-party ordering on the restaurant own domain and theme is the entire product, not an add-on channel. https://tastyigniter.com/ · retrieved 2026-08-03
digital-menu-single-source
One menu-item record per location assignment drives the storefront. There is only one first-party channel, so single-source is inherent rather than engineered. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
digital-native-app differentiator
A GitHub issue reports 'iOS App (iPhone/iPad) crashes after ~30 seconds and blocks login', implying some iOS client exists, but no branded native-app product is documented on the site or marketplace and I could not establish whether it is first-party or per-restaurant branded.
digital-account-saved-payment
Customer accounts with saved addresses and tokenised payment profiles are documented. One-tap reorder from order history is not explicitly documented. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-01
digital-upsell-engine differentiator
The complete public marketplace (47 extensions, retrieved today) and the complete core model set were both enumerated. No upsell, cross-sell or recommendation extension is published, and core checkout has no attach prompt or attach-rate reporting. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03
digital-scheduled-pacing
Scheduled orders with slot intervals, lead time, advance windows and a per-location order limit per slot are all core. Marked partial because multiple open issues report the Limit Orders setting failing to save and scheduling rules misbehaving. https://github.com/tastyigniter/TastyIgniter/issues · retrieved 2026-08-01
digital-fulfillment-modes
Delivery and collection/pickup are core order types with per-type fees and timing, and custom order types can be coded. Dine-in requires the paid Dine-In Management extension; curbside with arrival check-in is absent. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
digital-qr-table
Third-party (avisaas), 10 installs, no docs. Listing copy only. adversarially verified
digital-kiosk differentiator
No kiosk product. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
digital-group-ordering
The extension is listed at 0 installs. A product nobody has installed, with no documentation beyond a marketplace card, cannot support a partial on group ordering mechanics. adversarially verified
digital-catering-portal differentiator
The complete public marketplace (47 extensions, retrieved today) and the complete core model set were both enumerated. No catering portal, catering menu, lead-time rule set, quote, deposit or invoice-terms capability exists in core or on the marketplace. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03
digital-voice-ai-phone differentiator
The complete public marketplace (47 extensions, retrieved today) and the complete core model set were both enumerated. No AI phone-ordering extension is published and no certified voice partner is named anywhere on the site. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03
digital-drivethru-ai
The full public marketplace listing (47 extensions, retrieved today) contains no DoorDash, Uber Eats, Grubhub, Deliveroo or Just Eat marketplace connector. The only courier-shaped entries are Uber Direct ($28.00/yr, 20 installs) and Shipday: Local Delivery (free, 1,091 installs), both last-mile dispatch rather than a marketplace channel. There is no voice or drive-thru AI extension on the marketplace, and no drive-thru order type in core for one to attach to. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03
digital-sms-ordering
The free SMS Notify extension sends outbound notifications only; there is no conversational text-to-order. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
digital-google-order differentiator
The complete public marketplace (47 extensions, retrieved today) and the complete core model set were both enumerated. No Order with Google, Google Business Profile or food-ordering-schema provisioning extension exists, and the site makes no such claim. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03
digital-apple-business-connect
The full public marketplace listing (47 extensions, retrieved today) contains no DoorDash, Uber Eats, Grubhub, Deliveroo or Just Eat marketplace connector. The only courier-shaped entries are Uber Direct ($28.00/yr, 20 installs) and Shipday: Local Delivery (free, 1,091 installs), both last-mile dispatch rather than a marketplace channel. There is likewise no Apple Business Connect, Apple Maps or Order with Google provisioning extension, and the site makes no such claim. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03
digital-loyalty-attach
Paid 'Loyalty Points' extension ($30/yr) lets customers earn and redeem against the same customer account used for ordering. Not core, and there is no in-store identity to unify with. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
digital-subscriptions
No membership or recurring-billing product documented; could not confirm a community extension.
digital-promo-parity
The free Coupons extension (31,789 installs today) defines discount codes once for the storefront. Parity is trivially satisfied because there is only one channel — there is no POS, kiosk or marketplace stream for a promotion to diverge across. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03
digital-guest-data-ownership differentiator
Self-hosted MIT application: the operator holds the MySQL database outright and the free REST API exposes customers directly. No fee, no approval, no vendor copy. https://github.com/tastyigniter/TastyIgniter · retrieved 2026-08-01
digital-checkout-pci-sca
Stripe, Square, Mollie, PayPal and Authorize.Net gateways keep card data off the merchant's own form and carry 3DS/SCA at the gateway. But TastyIgniter publishes no PCI DSS 4.0 compliance statement and no position on the March-2025 client-side script-integrity requirements — self-hosting pushes that onto the operator. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-01
digital-surcharge-transparency differentiator
PayRegister documents five gateways — Authorize.Net AIM, Mollie, PayPal Express, Square, Stripe — all online/hosted-checkout drivers, with configuration limited to API credentials, order fee, minimum order total and order status mapping. No surcharge, cash-discount or dual-pricing engine exists on any channel, so there is no pre-tender disclosure of a fee to render. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-03
Guest data, loyalty & marketing
guest-loyalty-unified-profile
One customer record with customer groups spans all locations in the install. There is no POS or kiosk stream to merge, and no documented dedup/merge behaviour on phone or email match. https://tastyigniter.com/docs/extensions/user · retrieved 2026-08-01
guest-loyalty-thirdparty-identity-attach differentiator
No third-party marketplace orders arrive at all.
guest-loyalty-accrual-models
Paid 'Loyalty Points' extension ($30/yr) provides points-per-purchase earn and redeem. Only one accrual model, and it is a bolt-on, which is what this criterion is specifically testing against. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
guest-loyalty-tiers differentiator
Customer groups exist as a manual classification (Admin.CustomerGroups permission). No rolling-window automatic promotion or demotion. https://tastyigniter.com/docs/extensions/user · retrieved 2026-08-01
guest-loyalty-offline-behavior differentiator
Nothing to document — no offline mode exists anywhere in the product.
guest-loyalty-offer-stacking-rules differentiator
Coupon combinability and precedence rules are not described in public documentation.
guest-loyalty-targeted-offers differentiator
Coupon codes are broadcast artefacts; no rules-based audience definition.
guest-loyalty-rfm-segmentation differentiator
Reports ships Top Customers and Bottom Customers datasets only — spend ranking, not lifecycle segmentation. https://tastyigniter.com/docs/extensions/reports · retrieved 2026-08-01
guest-loyalty-lifecycle-automation
The Automation extension is a real event → condition → action engine (e.g. CustomerRegisteredEvent → SendMailTemplate) running on Laravel queues, and abandoned-checkout automation exists. But it ships no prebuilt birthday, first-visit or lapsed win-back campaigns — the operator builds each rule. https://tastyigniter.com/docs/extensions/automation · retrieved 2026-08-01
guest-loyalty-native-email-sms differentiator
Transactional email is native via mail templates; SMS via the free SMS Notify extension using the operator's own provider. Bulk marketing campaign sending with list management is not documented. https://tastyigniter.com/docs/extensions/automation · retrieved 2026-08-01
guest-loyalty-consent-management
Per-channel marketing consent capture with timestamp and source is not documented; a basic opt-in flag likely exists but I could not verify its shape.
guest-loyalty-10dlc-registration
SMS runs through the operator's own provider account via SMS Notify, so A2P 10DLC brand and campaign registration is entirely the operator's problem. The vendor neither handles nor documents it. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
guest-loyalty-campaign-attribution differentiator
No campaign object to attribute to; coupon redemption is visible on orders but not tied to a send.
guest-loyalty-data-export-portability differentiator
The MIT source registers a `customers` API resource with actions index:admin, show:admin, store:admin, update:users, destroy:admin, and CustomerTransformer returns the full Customer model with `addresses`, `orders` and `reservations` as includes - the guest list with contact PII plus each guest's transaction history. The extension is free, and the operator mints its own admin token (`php artisan igniter:api-token --admin` or POST /api/token), so there is no fee and no support ticket. Being self-hosted and MIT, the operator also holds the database outright. One correction to the CSV half: the free Import & Export Tool's marketplace card advertises 'Import/Export Menu Items, Orders, Customers from/into any CSV', but the shipped v4 extension contains only menuexport/menuimport models - the working export route is the API or direct SQL, not that tool. https://github.com/tastyigniter/ti-ext-api/blob/master/src/Extension.php · retrieved 2026-08-09 adversarially verified
guest-loyalty-review-capture-routing differentiator
The trigger half ships out of the box: ti-ext-local registers the automation preset `chase_review_after_one_day`, named 'Send a message to leave a review after 24 hours', firing on OrderSchedule with action SendMailTemplate (template `igniter.local::mail.review_chase`, send_to customer) under condition ReviewCount is 0. The routing half does not exist. Across every extension that registers automation rules, the only actions are AssignToGroup and SendMailTemplate, and no condition reads a review's score - ReviewCount counts reviews rather than rating them, and the other conditions are OrderAttribute, OrderStatusAttribute, CustomerAttribute, ReservationAttribute and ReservationStatusAttribute. There is no score branch, no private-recovery path and nothing that pushes a guest toward a public review site. https://github.com/tastyigniter/ti-ext-local/blob/master/src/Extension.php · retrieved 2026-08-09 adversarially verified
guest-loyalty-referral-program
No referral mechanic in core; could not confirm or rule out a community extension.
guest-loyalty-wallet-pass differentiator
The complete public marketplace (47 extensions, retrieved today) and the complete core model set were both enumerated. No Apple Wallet or Google Wallet pass issuance extension exists; the Loyalty Points extension ($30/yr) is an in-account points balance only. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03
guest-loyalty-privacy-rights-tooling
Admin.DeleteCustomers permission allows deleting a guest record, and self-hosting gives the operator complete database-level access to locate and export anything. But there is no purpose-built DSAR workflow and no propagation guarantee into loyalty or marketing records held by extensions. https://tastyigniter.com/docs/extensions/user · retrieved 2026-08-01
guest-loyalty-redemption-fraud-controls
Velocity limits, manual-adjustment approval and employee self-redemption flagging are not described for the Loyalty Points extension.
guest-loyalty-ai-offer-recommendation differentiator
The complete public marketplace (47 extensions, retrieved today) and the complete core model set were both enumerated. No AI or ML feature is published in core, in the marketplace, or on the site — no next-best-offer, no propensity model, no send-time optimisation. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03
guest-loyalty-stored-value-gift
Free 'Gift Up!' extension integrates an external gift-card provider. Balances live with that provider, not tied to the native guest profile. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
Labor & workforce
labor-clock-in-at-pos
No timeclock and no POS terminal. Staff records exist for admin access and order handling only. https://tastyigniter.com/docs/extensions/user · retrieved 2026-08-01
labor-photo-punch-verification differentiator
Complete admin migration set of tastyigniter/core (55 files, read through the GitHub contents API) enumerates every table the platform creates: locations and location_areas, menus/options/specials/mealtimes, orders, order_totals, order_menu_options, reservations and reservation_tables, staffs + staff_groups + staff_roles + locationables, stocks, payment_profiles, payment_logs, assignable_logs, working_hours and settings. There is no time-clock, shift, punch, break, pay-rate, till/drawer or payroll table anywhere, and src/Admin/Models contains only Staff.php, Status.php and StatusHistory.php. No punch mechanism exists to photograph. https://api.github.com/repos/tastyigniter/core/contents/database/migrations/admin · retrieved 2026-08-03
labor-offline-time-punch differentiator
Complete admin migration set of tastyigniter/core (55 files, read through the GitHub contents API) enumerates every table the platform creates: locations and location_areas, menus/options/specials/mealtimes, orders, order_totals, order_menu_options, reservations and reservation_tables, staffs + staff_groups + staff_roles + locationables, stocks, payment_profiles, payment_logs, assignable_logs, working_hours and settings. There is no time-clock, shift, punch, break, pay-rate, till/drawer or payroll table anywhere, and src/Admin/Models contains only Staff.php, Status.php and StatusHistory.php. There is no punch of any kind to buffer offline, and no local runtime to buffer it in. https://api.github.com/repos/tastyigniter/core/contents/database/migrations/admin · retrieved 2026-08-03
labor-granular-rbac
Real permission-per-action model (Admin.Orders, Admin.Customers, Admin.DeleteCustomers, Admin.Impersonate, Admin.StaffGroups...) with staff groups and per-location restriction. Marked partial because the enumerated POS actions this criterion tests — void, comp, discount, drawer open, price change — have no corresponding permissions, and one open issue reports the location restriction leaking. https://tastyigniter.com/docs/extensions/user · retrieved 2026-08-01
labor-manager-override-audit
No override workflow and no immutable audit trail documented. https://tastyigniter.com/docs/extensions/user · retrieved 2026-08-01
labor-native-scheduling differentiator
Locations and staff have working-hours settings that gate order acceptance, not shift schedules for employees. https://tastyigniter.com/docs/extensions/local · retrieved 2026-08-01
labor-demand-labor-forecast differentiator
Complete admin migration set of tastyigniter/core (55 files, read through the GitHub contents API) enumerates every table the platform creates: locations and location_areas, menus/options/specials/mealtimes, orders, order_totals, order_menu_options, reservations and reservation_tables, staffs + staff_groups + staff_roles + locationables, stocks, payment_profiles, payment_logs, assignable_logs, working_hours and settings. There is no time-clock, shift, punch, break, pay-rate, till/drawer or payroll table anywhere, and src/Admin/Models contains only Staff.php, Status.php and StatusHistory.php. No hours, wage or schedule data exists to forecast against. https://api.github.com/repos/tastyigniter/core/contents/database/migrations/admin · retrieved 2026-08-03
labor-realtime-labor-percent differentiator
No labour cost data exists in the system. https://tastyigniter.com/docs/extensions/reports · retrieved 2026-08-01
labor-overtime-prevention differentiator
Complete admin migration set of tastyigniter/core (55 files, read through the GitHub contents API) enumerates every table the platform creates: locations and location_areas, menus/options/specials/mealtimes, orders, order_totals, order_menu_options, reservations and reservation_tables, staffs + staff_groups + staff_roles + locationables, stocks, payment_profiles, payment_logs, assignable_logs, working_hours and settings. There is no time-clock, shift, punch, break, pay-rate, till/drawer or payroll table anywhere, and src/Admin/Models contains only Staff.php, Status.php and StatusHistory.php. No clocked hours exist, so weekly-hour projection and approaching-overtime alerting have nothing to run on. https://api.github.com/repos/tastyigniter/core/contents/database/migrations/admin · retrieved 2026-08-03
labor-break-compliance-by-state differentiator
Complete admin migration set of tastyigniter/core (55 files, read through the GitHub contents API) enumerates every table the platform creates: locations and location_areas, menus/options/specials/mealtimes, orders, order_totals, order_menu_options, reservations and reservation_tables, staffs + staff_groups + staff_roles + locationables, stocks, payment_profiles, payment_logs, assignable_logs, working_hours and settings. There is no time-clock, shift, punch, break, pay-rate, till/drawer or payroll table anywhere, and src/Admin/Models contains only Staff.php, Status.php and StatusHistory.php. No break, meal-period or jurisdiction rule table exists. https://api.github.com/repos/tastyigniter/core/contents/database/migrations/admin · retrieved 2026-08-03
labor-minor-labor-rules
Complete admin migration set of tastyigniter/core (55 files, read through the GitHub contents API) enumerates every table the platform creates: locations and location_areas, menus/options/specials/mealtimes, orders, order_totals, order_menu_options, reservations and reservation_tables, staffs + staff_groups + staff_roles + locationables, stocks, payment_profiles, payment_logs, assignable_logs, working_hours and settings. There is no time-clock, shift, punch, break, pay-rate, till/drawer or payroll table anywhere, and src/Admin/Models contains only Staff.php, Status.php and StatusHistory.php. Staff records carry no date of birth, no minor flag and no hour caps; there is nothing to enforce a minor-labour rule against. https://api.github.com/repos/tastyigniter/core/contents/database/migrations/admin · retrieved 2026-08-03
labor-tip-pooling-rules
ti-ext-user/src/Models is the complete staff and customer domain: Address, AssignableLog, Customer, CustomerGroup, Notification, User, UserGroup, UserPreference, UserRole. There is no shift, punch, timesheet, pay-rate, tip or payslip entity anywhere in it, and the marketplace lists no labour, scheduling or payroll extension at any price. Tip pooling has no data model to run on. https://github.com/tastyigniter/ti-ext-user/tree/master/src/Models · retrieved 2026-08-03 · not refetchable · site policy · graded A when read adversarially verified
labor-tip-distribution-audit-trail
Complete admin migration set of tastyigniter/core (55 files, read through the GitHub contents API) enumerates every table the platform creates: locations and location_areas, menus/options/specials/mealtimes, orders, order_totals, order_menu_options, reservations and reservation_tables, staffs + staff_groups + staff_roles + locationables, stocks, payment_profiles, payment_logs, assignable_logs, working_hours and settings. There is no time-clock, shift, punch, break, pay-rate, till/drawer or payroll table anywhere, and src/Admin/Models contains only Staff.php, Status.php and StatusHistory.php. Tips are an order-level amount on order_totals with no employee attribution, so there is no distribution to audit. https://api.github.com/repos/tastyigniter/core/contents/database/migrations/admin · retrieved 2026-08-03
labor-qualified-tips-w2-reporting differentiator
Complete admin migration set of tastyigniter/core (55 files, read through the GitHub contents API) enumerates every table the platform creates: locations and location_areas, menus/options/specials/mealtimes, orders, order_totals, order_menu_options, reservations and reservation_tables, staffs + staff_groups + staff_roles + locationables, stocks, payment_profiles, payment_logs, assignable_logs, working_hours and settings. There is no time-clock, shift, punch, break, pay-rate, till/drawer or payroll table anywhere, and src/Admin/Models contains only Staff.php, Status.php and StatusHistory.php. No payroll or earnings data exists, so no W-2 Box 12 TP / Box 14b treatment is possible. https://api.github.com/repos/tastyigniter/core/contents/database/migrations/admin · retrieved 2026-08-03
labor-native-payroll differentiator
Complete admin migration set of tastyigniter/core (55 files, read through the GitHub contents API) enumerates every table the platform creates: locations and location_areas, menus/options/specials/mealtimes, orders, order_totals, order_menu_options, reservations and reservation_tables, staffs + staff_groups + staff_roles + locationables, stocks, payment_profiles, payment_logs, assignable_logs, working_hours and settings. There is no time-clock, shift, punch, break, pay-rate, till/drawer or payroll table anywhere, and src/Admin/Models contains only Staff.php, Status.php and StatusHistory.php. No pay rate, no earnings, no tax withholding and no pay-run table. There is no payroll product. https://api.github.com/repos/tastyigniter/core/contents/database/migrations/admin · retrieved 2026-08-03
labor-payroll-export-formats
No Gusto, ADP, Paychex or QuickBooks payroll connector on the marketplace or in core. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
labor-shift-swap-workflow differentiator
Complete admin migration set of tastyigniter/core (55 files, read through the GitHub contents API) enumerates every table the platform creates: locations and location_areas, menus/options/specials/mealtimes, orders, order_totals, order_menu_options, reservations and reservation_tables, staffs + staff_groups + staff_roles + locationables, stocks, payment_profiles, payment_logs, assignable_logs, working_hours and settings. There is no time-clock, shift, punch, break, pay-rate, till/drawer or payroll table anywhere, and src/Admin/Models contains only Staff.php, Status.php and StatusHistory.php. No shift entity exists, so no swap, pickup or manager-approval workflow can exist. https://api.github.com/repos/tastyigniter/core/contents/database/migrations/admin · retrieved 2026-08-03
labor-server-performance-metrics differentiator
Reports covers items and customers only; no per-employee sales metrics. https://tastyigniter.com/docs/extensions/reports · retrieved 2026-08-01
Inventory, purchasing & cost control
inventory-recipe-bom-costing
Free community 'Restaurant Production Pro' extension is described as an ERP managing food cost, recipes and inventory. Multi-level sub-recipes and automatic plate-cost recalculation on ingredient price change are unverified. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
inventory-unit-conversion-yields
Purchase/recipe/count unit conversions and yield percentages are not described in the Restaurant Production Pro listing.
inventory-theoretical-vs-actual differentiator
Variance reporting is not described for the community ERP extension.
inventory-realtime-depletion differentiator
Core natively decrements stock quantity on menu items and on individual option values as orders are placed — including modifier-driven depletion. But it depletes the sellable item, not ingredients; ingredient-level depletion would need the community ERP extension. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
inventory-86-auto-sync differentiator
Stock hitting zero makes the item unavailable on the storefront automatically. There is no POS or third-party channel to sync to. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
inventory-count-modes
Full/spot/cycle count modes with retained variance history are not described publicly.
inventory-mobile-count-offline
The complete public marketplace (47 extensions, retrieved today) and the complete core model set were both enumerated. No mobile counting application is published; stock is edited in the browser admin against the operator's own server, so a count cannot be taken without connectivity. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03
inventory-vendor-catalogs-edi differentiator
No Sysco, US Foods or PFG catalogue integrations on the marketplace. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
inventory-invoice-ocr differentiator
Complete model set of the Cart extension, which owns the entire menu and order domain: Cart, CartSettings, Category, Ingredient, Mealtime, Menu, MenuCategory, MenuItemOption, MenuItemOptionValue, MenuOption, MenuOptionValue, MenuSpecial, Order, OrderMenu, OrderMenuOptionValue, OrderTotal, Stock, StockHistory. Stock/StockHistory is a plain count against a menu item or an option value with a low-stock alert; `Ingredient` is the renamed allergens table (migration 2022_02_03_000300_rename_allergens_to_ingredients_table), not a recipe component. There is no purchase order, supplier, invoice or document model at all, so there is nothing for OCR to populate. https://api.github.com/repos/tastyigniter/ti-ext-cart/contents/src/Models · retrieved 2026-08-03
inventory-price-change-alerts differentiator
Complete model set of the Cart extension, which owns the entire menu and order domain: Cart, CartSettings, Category, Ingredient, Mealtime, Menu, MenuCategory, MenuItemOption, MenuItemOptionValue, MenuOption, MenuOptionValue, MenuSpecial, Order, OrderMenu, OrderMenuOptionValue, OrderTotal, Stock, StockHistory. Stock/StockHistory is a plain count against a menu item or an option value with a low-stock alert; `Ingredient` is the renamed allergens table (migration 2022_02_03_000300_rename_allergens_to_ingredients_table), not a recipe component. No supplier price is ever stored, so a period-over-period cost-increase alert has no data to run on. https://api.github.com/repos/tastyigniter/ti-ext-cart/contents/src/Models · retrieved 2026-08-03
inventory-par-auto-suggest differentiator
Core supports only a per-item minimum-quantity stock alert. No par-driven suggested purchase orders and no forecast-driven mode. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
inventory-waste-logging
Not described in core or in the community ERP extension listing.
inventory-shelf-life-expiry
Complete model set of the Cart extension, which owns the entire menu and order domain: Cart, CartSettings, Category, Ingredient, Mealtime, Menu, MenuCategory, MenuItemOption, MenuItemOptionValue, MenuOption, MenuOptionValue, MenuSpecial, Order, OrderMenu, OrderMenuOptionValue, OrderTotal, Stock, StockHistory. Stock/StockHistory is a plain count against a menu item or an option value with a low-stock alert; `Ingredient` is the renamed allergens table (migration 2022_02_03_000300_rename_allergens_to_ingredients_table), not a recipe component. Stock is a scalar count with no lot, batch, received-date or use-by attribute, so shelf-life tracking and expiry alerting are not modelled. https://api.github.com/repos/tastyigniter/ti-ext-cart/contents/src/Models · retrieved 2026-08-03
inventory-bar-partial-bottle
Complete model set of the Cart extension, which owns the entire menu and order domain: Cart, CartSettings, Category, Ingredient, Mealtime, Menu, MenuCategory, MenuItemOption, MenuItemOptionValue, MenuOption, MenuOptionValue, MenuSpecial, Order, OrderMenu, OrderMenuOptionValue, OrderTotal, Stock, StockHistory. Stock/StockHistory is a plain count against a menu item or an option value with a low-stock alert; `Ingredient` is the renamed allergens table (migration 2022_02_03_000300_rename_allergens_to_ingredients_table), not a recipe component. Stock decrements in whole units of a menu item or option value; there is no weight, tenth-of-a-bottle or partial-unit measure. https://api.github.com/repos/tastyigniter/ti-ext-cart/contents/src/Models · retrieved 2026-08-03
inventory-cogs-gl-export
No QuickBooks, Sage or NetSuite connector on the marketplace and no GL mapping in core. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
inventory-native-not-partner differentiator
Simple item and option-value stock counting is genuinely native and free. Recipe costing and anything resembling real F&B cost control requires the separately-installed Restaurant Production Pro community extension. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
inventory-menu-margin-linkage differentiator
Contribution margin per item joined to sales mix is not documented; the ERP extension may compute food cost but the join to sales mix is unverified.
Reporting, BI & data access
reporting-realtime-dashboard
Admin dashboard with chart widgets (best/worst sellers, top/bottom customers) reflecting live data, accessible in any browser including mobile. No dedicated mobile app. https://tastyigniter.com/docs/extensions/reports · retrieved 2026-08-01
reporting-eod-closeout
Same false premise. A POS extension exists; whether it ships a closeout/drawer report is undocumented. Reports extension silence is not affirmative absence across the whole install. adversarially verified
reporting-pmix-modifier-level
Best Selling Items and Worst Selling Items datasets exist. Modifier/option-value level PMIX, and daypart or revenue-centre filtering, are not documented as built-in. https://tastyigniter.com/docs/extensions/reports · retrieved 2026-08-01
reporting-comps-voids-audit
No comp/void/override model exists to report on. https://tastyigniter.com/docs/extensions/reports · retrieved 2026-08-01
reporting-cash-over-short
Complete admin migration set of tastyigniter/core (55 files, read through the GitHub contents API) enumerates every table the platform creates: locations and location_areas, menus/options/specials/mealtimes, orders, order_totals, order_menu_options, reservations and reservation_tables, staffs + staff_groups + staff_roles + locationables, stocks, payment_profiles, payment_logs, assignable_logs, working_hours and settings. There is no time-clock, shift, punch, break, pay-rate, till/drawer or payroll table anywhere, and src/Admin/Models contains only Staff.php, Status.php and StatusHistory.php. There is no drawer, till, cash session or blind-count table, so declared-versus-expected cash cannot be reported. https://api.github.com/repos/tastyigniter/core/contents/database/migrations/admin · retrieved 2026-08-03
reporting-labor-productivity
Complete admin migration set of tastyigniter/core (55 files, read through the GitHub contents API) enumerates every table the platform creates: locations and location_areas, menus/options/specials/mealtimes, orders, order_totals, order_menu_options, reservations and reservation_tables, staffs + staff_groups + staff_roles + locationables, stocks, payment_profiles, payment_logs, assignable_logs, working_hours and settings. There is no time-clock, shift, punch, break, pay-rate, till/drawer or payroll table anywhere, and src/Admin/Models contains only Staff.php, Status.php and StatusHistory.php. No clocked hours and no wage figures exist, so sales-per-labour-hour and labour percentage cannot be computed. https://api.github.com/repos/tastyigniter/core/contents/database/migrations/admin · retrieved 2026-08-03
reporting-server-scorecards differentiator
https://tastyigniter.com/docs/extensions/reports · retrieved 2026-08-01
reporting-channel-profitability differentiator
Orders carry an order type (delivery/collection) so the data exists in the database, but whether the Reports extension slices revenue by it is not documented. There are no marketplace commissions to net out.
reporting-scheduled-delivery
No scheduled report email delivery documented. The platform does have a task scheduler an operator could script against. https://tastyigniter.com/docs · retrieved 2026-08-01
reporting-public-api differentiator
ti-ext-api's registerApiResources() registers fifteen resources - categories, currencies, addresses, customers, locations, location_settings, menus, menu_options, menu_item_options, orders, reservations, reviews, tables, status and users (Staff) - each with a per-action authorisation context such as 'index:users, show:users, store:users, update:admin, destroy:admin' on orders; ti-ext-coupons adds `coupons` and ti-ext-webhook adds `webhooks`. It is free, self-serve and needs no agreement: tokens come from `php artisan igniter:api-token` or POST /api/token. Partial because payments and labour are not covered - ti-ext-payregister registers no API resource at all, so payment data is reachable only as a `payment_method` include on an order, and there is no labour data in the product to expose. Note that the published docs page under-lists, naming nine resources and omitting currencies, addresses, menu options, menu item options, tables, status and staff, and describing all nine with one blanket 'List, create, retrieve, update and delete' line. https://github.com/tastyigniter/ti-ext-api/blob/master/src/Extension.php · retrieved 2026-08-09 adversarially verified
reporting-webhooks differentiator
Re-sourced from the marketplace sell page to the extension's own manual. The free first-party Webhooks extension (Igniter Labs, MIT, built on spatie/laravel-webhook-server) documents a per-webhook 'Secret Signature: A secret key used to sign the webhook payload for verification', a configurable Webhook Signature Header Name, a Webhook Retry Count, a timeout, SSL verification and a Recent Deliveries log carrying status and response per attempt. The event catalogue is enumerated: Category, Customers, Menu items, Orders, Reservations and Tables, each on created/updated/deleted. Order lifecycle is covered; there is no discrete payment event, but no payment object exists separately from the order. https://github.com/igniter-labs/ti-ext-webhook/blob/master/docs/index.md · retrieved 2026-08-03 adversarially verified
reporting-api-not-upcharged differentiator
Read off the extension's own registration and boot code rather than the docs index: the entire access-control surface of ti-ext-api is the Igniter.Api.Manage admin permission, Sanctum token abilities (per-controller `$requiredAbilities`, e.g. `orders:*`) and a rate limit of 60 requests per minute keyed on user id or IP. There is no licence check, entitlement lookup, tier flag, seat count or usage meter in the extension. It installs with `composer require tastyigniter/ti-ext-api -W` and is listed Free on the vendor's marketplace (23,492 installs, 2026-08-09). No per-location fee, revenue share or enterprise contract exists because the platform sells no subscription tiers at all. https://github.com/tastyigniter/ti-ext-api/blob/master/src/Extension.php · retrieved 2026-08-09 adversarially verified
reporting-tier-paywall differentiator
Shortfall: nothing is tier-gated because there are no tiers, but two of the four report families the claim names do not exist at all. The Reports extension is free and documented, shipping a generic Report Builder (Tools > Report Builder, column selection, filter operators and input types, CSV export) plus four dashboard datasets - Best Selling Items, Worst Selling Items, Top Customers, Bottom Customers. Labor vs sales is structurally impossible (no labour data model); comps/voids audit is absent; PMIX and multi-location comparison are themselves only partial on this record. https://tastyigniter.com/docs/extensions/reports · retrieved 2026-08-03 adversarially verified
reporting-history-retention differentiator
Shortfall: no documented retention window at all, and a thin reporting surface. The Reports docs describe four dashboard datasets (Best Selling Items, Worst Selling Items, Top Customers, Bottom Customers) plus a Report Builder under Tools, with report queries expressed as arbitrary Carbon ranges - the docs' own example is YourModel::query()->whereBetween('created_at', [$start, $end]) - so there is no built-in date cap. The core package also ships no pruning job (src/System/Console/Commands holds only extension, theme, install, update, up/down, passwd and util commands; the Purgeable trait is a form-field helper and Flame/Currency/Console/Cleanup touches exchange rates), and app/Console/Kernel.php schedules nothing. Retention is therefore bounded only by the operator's own database and no archive-retrieval fee can exist - but no vendor document states 24 months or any other window, and year-over-year comparison must be hand-built in the Report Builder rather than queried from a packaged report. https://tastyigniter.com/docs/extensions/reports · retrieved 2026-08-02 adversarially verified
reporting-anomaly-alerts differentiator
No threshold or deviation alerting. The Automation engine could be scripted toward it by a developer. https://tastyigniter.com/docs/extensions/automation · retrieved 2026-08-01
reporting-nl-query
The Reports extension documents four built-in dashboard datasets (Best Selling Items, Worst Selling Items, Top Customers, Bottom Customers) plus a developer report builder with filter operators, column types and CSV export. There is no natural-language query box, no assistant and no AI/ML surface documented anywhere in the product. https://tastyigniter.com/docs/extensions/reports · retrieved 2026-08-03
reporting-guest-cohorts differentiator
Top Customers and Bottom Customers datasets tie to identifiable customer records. New-versus-returning counts, frequency and lifetime-spend cohorts are not built in. https://tastyigniter.com/docs/extensions/reports · retrieved 2026-08-01
reporting-sales-forecast differentiator
https://tastyigniter.com/docs/extensions/reports · retrieved 2026-08-01
reporting-tip-tax-compliance
No per-employee tip attribution exists, so no declared-versus-charged reporting or tax liability summary is possible.
Multi-location, franchise & enterprise governance
multi-location-org-hierarchy
Locations are a flat list. Staff can be restricted to locations, but there is no region/group tier that reporting or permissions can be scoped to. https://tastyigniter.com/docs/extensions/local · retrieved 2026-08-01
multi-location-central-menu-publish
Menu items are single records with a location-selection field, so one edit reaches every assigned location — effectively central authoring. But there is no publish action, no version history, and no record of what was pushed, when, or by whom. https://tastyigniter.com/docs/extensions/cart · retrieved 2026-08-01
multi-location-price-zones
A menu item carries one price and a location assignment. Whether v4 supports a per-location price override on the same item record is not documented either way.
multi-location-consolidated-reporting
One install, one database, one admin view across all locations, so aggregate figures are available. Store-vs-store ranking and variance flagging are not shipped reports. https://tastyigniter.com/docs/extensions/reports · retrieved 2026-08-01
multi-location-cross-location-giftcard
Gift cards come from the external Gift Up! provider; cross-location redemption and outstanding-liability reporting depend on that provider, not on TastyIgniter.
multi-location-cross-location-loyalty
Customer accounts are install-wide, so a Loyalty Points balance would naturally span locations. Not verified in the extension's own documentation. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
multi-location-multi-brand differentiator
The paid Multi Vendor extension ($149/yr) supports multiple distinct vendors with separate menus in one install. There is no shared terminal or drawer to separate, so the criterion only half applies. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
multi-location-multi-tax-jurisdiction
Tax settings are per-location, and a free 'Tax Classes' extension adds VAT class management. Prepared-food versus grocery rules, inclusive/exclusive handling and per-location exemptions are not documented in detail. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
multi-location-central-labor-policy
Complete admin migration set of tastyigniter/core (55 files, read through the GitHub contents API) enumerates every table the platform creates: locations and location_areas, menus/options/specials/mealtimes, orders, order_totals, order_menu_options, reservations and reservation_tables, staffs + staff_groups + staff_roles + locationables, stocks, payment_profiles, payment_logs, assignable_logs, working_hours and settings. There is no time-clock, shift, punch, break, pay-rate, till/drawer or payroll table anywhere, and src/Admin/Models contains only Staff.php, Status.php and StatusHistory.php. There are no labour rules to author centrally or enforce per location. https://api.github.com/repos/tastyigniter/core/contents/database/migrations/admin · retrieved 2026-08-03
Hardware & physical footprint
hardware-commodity-devices differentiator
The vendor's download page states the whole requirement: 'PHP 8.1 or higher', 'MySQL 5.7+ or MariaDB 10.3+', 'Apache or Nginx'. It is a server-rendered Laravel application with no client binary, no vendor device and no certified terminal list, so the client is any browser on hardware the operator already owns. Note what the yes means here: the product ships no POS terminal software at all, so there is nothing proprietary to run. https://tastyigniter.com/download · retrieved 2026-08-03 adversarially verified
hardware-os-platforms
Shortfall: only the server side is specified, and the vendor's own pages disagree. The download page states PHP 8.1 or higher, while the application skeleton's composer.json requires php ^8.3 with laravel/framework ^12.0 and tastyigniter/core ^4.3 - two minor versions apart. Client operating systems, minimum browser versions and device specifications are published nowhere, because the vendor ships no client software and treats the client as any browser. https://github.com/tastyigniter/TastyIgniter/blob/master/composer.json · retrieved 2026-08-03 adversarially verified
hardware-handheld-purpose-built
No handheld device of any kind is sold, certified or listed. The product is a browser application; staff use whatever tablet or phone the operator already owns. https://tastyigniter.com/ · retrieved 2026-08-03
hardware-handheld-battery-swap differentiator
The vendor sells no hardware at all. The homepage positions the product as 'Free & open-source · Zero commission · Self-hosted' at '£0 - Self-hosted, forever free', and the site carries no hardware store, device catalogue, accessory page or compatibility list of any kind. No handheld exists, so battery life and hot-swap are not vendor-published facts. https://tastyigniter.com/ · retrieved 2026-08-03
hardware-handheld-lte
The vendor sells no hardware at all. The homepage positions the product as 'Free & open-source · Zero commission · Self-hosted' at '£0 - Self-hosted, forever free', and the site carries no hardware store, device catalogue, accessory page or compatibility list of any kind. No handheld and no vendor-supplied connectivity option, cellular or otherwise. https://tastyigniter.com/ · retrieved 2026-08-03
hardware-offline-mode
No terminal software and no offline capability. The vendor publishes nothing on degraded operation because there is no local runtime. https://tastyigniter.com/docs · retrieved 2026-08-01
hardware-kds
Shortfall: three of the claim's four elements are missing or partial. Kitchen Display is first-party (Igniter Labs) and free, with touch input, five configurable status columns, per-display Location/Order Type/Menu Category filters and real-time updates - though real-time requires separately installing the Broadcast extension. Bump-bar input is undocumented, station routing is order-level rather than item-level, and course/fire timing does not exist at all: the only timing control is a manual +15/+30/+45 wait-time bump. https://github.com/igniter-labs/ti-ext-kitchendisplay/blob/master/docs/index.md · retrieved 2026-08-03 adversarially verified
hardware-kiosk differentiator
https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
hardware-drive-thru
The vendor sells no hardware at all. The homepage positions the product as 'Free & open-source · Zero commission · Self-hosted' at '£0 - Self-hosted, forever free', and the site carries no hardware store, device catalogue, accessory page or compatibility list of any kind. No order confirmation board, headset, loop detector or lane hardware is sold or supported. https://tastyigniter.com/ · retrieved 2026-08-03
hardware-printer-compatibility
Paid 'DocketPrint' extension ($75/yr) handles automatic order/docket printing. No published ESC/POS compatibility list, no named Epson or Star models, no LAN printer documentation. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
hardware-peripherals
No cash drawer, barcode scanner, scale or customer-display support, and no compatibility list. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
hardware-p2pe-terminal
No card-present entry at all; no PTS device, no stated SAQ type. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-01
hardware-tap-to-phone differentiator
The vendor sells no hardware at all. The homepage positions the product as 'Free & open-source · Zero commission · Self-hosted' at '£0 - Self-hosted, forever free', and the site carries no hardware store, device catalogue, accessory page or compatibility list of any kind. No card-present acceptance path of any kind, so no SoftPOS/Tap to Pay offering on iPhone or Android. https://tastyigniter.com/ · retrieved 2026-08-03
hardware-pricing-transparency differentiator
Scored no because the criterion is literally unmet - there is no published device price list - but the reason is that the vendor sells no hardware at all, which is favourable to the operator rather than adverse. Read it alongside commercial-hardware-purchase-outright. https://tastyigniter.com/ · retrieved 2026-08-03
hardware-ownership-vs-lease differentiator
Shortfall: the vendor states nothing about hardware, because it sells none. The installation docs specify only server-side requirements - Apache with mod_rewrite or Nginx, PHP 8.3+ with bcmath/ctype/curl/dom/exif/gd/intl/json/mbstring/openssl/pdo_mysql/tokenizer/xml/zip, MySQL 8.0+ or MariaDB 10.6+, on shared hosting, VPS, Docker or a local machine - and the product is reached through a standard web browser. No vendor hardware programme exists, so no lease is possible and every device the operator runs on is bought outright from third parties; but there is equally no vendor terminal spec, no compatibility list and no purchase-versus-lease statement, which is what this claim asks the vendor to state. https://tastyigniter.com/docs/installation · retrieved 2026-08-02 adversarially verified
hardware-usable-after-churn differentiator
Shortfall: no vendor documentation addresses post-cancellation hardware use, because no device is ever purchased from the vendor. The nearest first-party evidence is the DocketPrint listing, which documents 'Multiple connection types: Local/USB thermal, Epson ePOS over the network, and raw ESC/POS over IP (port 9100)' - open, generic protocols on printers the operator sources independently, so no peripheral is vendor-provisioned or software-locked. Second shortfall: the extensions that drive peripherals are annual licences (DocketPrint $75/yr, the third-party POS $49/yr) and the effect of letting one lapse is undocumented, even though the MIT core is perpetual. https://tastyigniter.com/marketplace/item/igniterlabs-docketprint · retrieved 2026-08-02 adversarially verified
hardware-rma-sla differentiator
No hardware warranty or advance-exchange programme — the vendor supplies no hardware.
hardware-byod
Any staff device with a browser can reach the admin panel, and access is governed by the permission model with per-location restriction. But there is no documented BYOD security posture, no MDM story, and no core MFA (that is a $49/yr extension). https://tastyigniter.com/docs/extensions/user · retrieved 2026-08-01
hardware-remote-device-management differentiator
The complete public marketplace (47 extensions, retrieved today) and the complete core model set were both enumerated. The vendor supplies no devices, publishes no fleet console extension, and has no enrolment, remote-update or lock/wipe surface. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03
hardware-selfpour-scales
The vendor sells no hardware at all. The homepage positions the product as 'Free & open-source · Zero commission · Self-hosted' at '£0 - Self-hosted, forever free', and the site carries no hardware store, device catalogue, accessory page or compatibility list of any kind. No self-pour wall, RFID card, flow meter or scale integration is sold or documented. https://tastyigniter.com/ · retrieved 2026-08-03
hardware-callerid-integration
The complete public marketplace (47 extensions, retrieved today) and the complete core model set were both enumerated. No caller-ID, CTI or VoIP pop extension exists and core has no inbound-call surface — a real gap for the UK takeaway operators this product otherwise serves. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03
Integrations, API & extensibility
extensibility-public-api-docs
The page returns 200 to an unauthenticated fetch with no login, NDA, partner agreement or sales call, and documents installation, token issuance (POST /api/token with is_admin, email, password, device_name and an optional abilities array), `Authorization: Bearer` usage including the Apache .htaccess rewrite, the Igniter.Api.Manage permission, how to register custom resources, and a list of resource endpoints. Correcting the earlier wording: it is not a full API reference. There are no per-endpoint paths, parameter tables, payload schemas or status codes, and the resource list is incomplete against the code. The complete contract is readable only from the MIT source at github.com/tastyigniter/ti-ext-api. Note also that robots.txt disallows /api-docs/ for every user agent, so that path was not fetched. https://tastyigniter.com/docs/extensions/api · retrieved 2026-08-09 adversarially verified
extensibility-api-access-cost differentiator
The API extension is installed with `composer require tastyigniter/ti-ext-api -W` and is listed Free on the vendor marketplace (23,492 installs, 2026-08-09). Its source contains no licence key check, entitlement lookup, tier flag or usage meter; access is governed only by the Igniter.Api.Manage admin permission, Sanctum token abilities and a 60 requests-per-minute rate limit. There is no per-location fee, no surcharge and no plan upgrade because the core platform is MIT-licensed and sells no plans - the vendor's revenue is per-extension licences and monthly Premium Support, neither of which gates the API. https://github.com/tastyigniter/ti-ext-api/blob/master/src/Extension.php · retrieved 2026-08-09 adversarially verified
extensibility-free-sandbox differentiator
The whole product installs free locally from the documented Composer install, which serves as a sandbox in practice. But there is no hosted sandbox with seeded data, no test credentials issued on sign-up and no partner test tenant. https://tastyigniter.com/docs/installation · retrieved 2026-08-03
extensibility-oauth-partner-apps
Laravel Sanctum bearer tokens, scoped to abilities (e.g. orders.*), issuable per admin or customer context and individually revocable — better than a shared static key. But it is not OAuth 2.0: no authorisation-code flow, no operator consent screen for third-party apps. https://tastyigniter.com/docs/extensions/api · retrieved 2026-08-01
extensibility-webhooks-push
Shortfall: the event verbs are CRUD, not order lifecycle. Delivery is genuine push, and the catalogue is enumerated in the extension manual - Category, Customers, Menu items, Orders, Reservations and Tables, each wired to Eloquent created/updated/deleted events, with a second path through Automation Rules ('Send payload to Webhooks' with conditions). But there is no paid, voided or refunded event: a consumer must diff the order payload to infer those transitions. https://github.com/igniter-labs/ti-ext-webhook/blob/master/docs/index.md · retrieved 2026-08-03 adversarially verified
extensibility-webhook-reliability differentiator
Shortfall: no replay. Signing and backoff are both present, contrary to the earlier reading - the extension is built on spatie/laravel-webhook-server, whose signature is hash_hmac('sha256', payload, secret) in a configurable header, surfaced as a per-webhook Secret Signature plus a settable Webhook Signature Header Name, and whose default ExponentialBackoffStrategy retries three times at 10s/100s/1000s with the retry count exposed as a setting. What is missing is the third element: Recent Deliveries shows status, response code and payload, but no redeliver or replay action for a missed event is documented. https://github.com/igniter-labs/ti-ext-webhook/blob/master/docs/index.md · retrieved 2026-08-03 adversarially verified
extensibility-order-injection-api
Verified at the endpoint, not from the resource index. POST /api/orders is registered in ti-ext-api as `store:users` on the orders resource, guarded by the `orders:*` ability, and Orders::restAfterSave() attaches `order_menus` through addOrderMenus() (line items with their option values), `order_totals` through addOrderTotals(), applies `status_id` through updateOrderStatus(), and on `processed=1` calls markAsPaymentProcessed(), which dispatches OrderPaymentProcessedEvent - the same admin.order.paymentProcessed event the Cart extension registers as its OrderPlaced automation trigger. PATCH /api/orders/{orderId}/status is registered as a first-class route as well. The row created is an ordinary Order model, which is what the Kitchen Display boards (columns mapped to order statuses) and the Reports extension read, so an injected order is indistinguishable from a web order downstream. Auto-printing needs a separately paid extension (DocketPrint $75/yr or Star CloudPRNT $50/yr) for native and injected orders alike. https://github.com/tastyigniter/ti-ext-api/blob/master/src/ApiResources/Orders.php · retrieved 2026-08-09 adversarially verified
extensibility-menu-write-api differentiator
Confirmed at source rather than from the published reference, which omits three resources. ti-ext-api 4.x ships seventeen resource controllers including Menus, MenuOptions and MenuItemOptions; Menus declares restConfig actions index, store, show, update and destroy behind requiredAbilities ['menus:*'], validated by Cart's MenuRequest. Modifiers and option values are writable, not just menu headers. https://github.com/tastyigniter/ti-ext-api/blob/4.x/src/ApiResources/Menus.php · retrieved 2026-08-03 adversarially verified
extensibility-doordash-preferred differentiator
Not in DoorDash's 2026 Preferred Integration Partner cohort (Checkmate, Chowly, Deliverect, Otter, PAR, Qu, Square, Stream, Toast, UrbanPiper). It also could not meet the 250-live-store bar for a DoorDash integration it does not have.
extensibility-first-party-delivery-integrations differentiator
No DoorDash, Uber Eats or Grubhub marketplace integrations exist, first-party or otherwise. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
extensibility-middleware-compatibility
I did not verify Deliverect, Chowly, Otter or Checkmate POS-support lists. TastyIgniter's open write API would make it technically integrable, but I found no evidence any of them ship a supported connector.
extensibility-accounting-connectors
No QuickBooks Online connector and no other GL integration on the marketplace or in core. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
extensibility-payroll-export
No payroll providers integrated, and no hours data to send them. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
extensibility-app-marketplace
Public marketplace at tastyigniter.com/marketplace with browsable named extensions and themes, free and paid, advertised as '1-click easy to install' with no coding required and visible install counts. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
extensibility-headless-embedded
The write API can drive orders from an external UI, and the theme layer is replaceable outright. But there is no documented headless mode or supported decoupled-frontend contract. https://tastyigniter.com/docs/extensions/api · retrieved 2026-08-01
extensibility-data-portability-exit differentiator
There is no exit. The operator already holds the complete database and the MIT-licensed source; orders, customers, menu and payment metadata are all directly queryable forever at no cost. https://github.com/tastyigniter/TastyIgniter · retrieved 2026-08-01
Reliability, offline & operations
reliability-offline-order-entry
Server-rendered web application with no local runtime. Lose connectivity to the host and order entry stops entirely. https://github.com/tastyigniter/TastyIgniter · retrieved 2026-08-01
reliability-offline-card-auth differentiator
No store-and-forward. Gateway integrations are synchronous online calls. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-01
reliability-offline-decline-liability differentiator
Nothing to document — no offline capture exists.
reliability-lan-degraded-multi-terminal differentiator
State is centralised in the application database; there is no terminal-to-terminal degraded mode.
reliability-local-transaction-engine differentiator
This is the researcher constructing an offline story the vendor never makes. Offline is a flagged highest-bar cell. There is no local transaction engine — there is a server-rendered app that, if you happen to host it in the building, keeps serving LAN clients. The vendor documents no offline architecture, no degraded mode, no sync model, and the overwhelmingly common deployment is shared hosting. Inferring partial from a deployment topology is exactly the over-generosity we are correcting for. https://tastyigniter.com/docs · retrieved 2026-08-01 adversarially verified
reliability-offline-kds-printing
Same inference chain, same problem, and the researcher's own note concedes it is 'not a documented feature and not true for the common shared-hosting deployment'. A cell whose own justification disclaims itself should not score partial. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01 adversarially verified
reliability-printer-fallback
No backup printer failover or staff alerting documented for DocketPrint. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
reliability-sync-conflict-handling
No multi-device sync model exists, so no conflict-resolution behaviour is documented.
reliability-offline-feature-matrix
The vendor publishes no offline feature matrix anywhere in its documentation. https://tastyigniter.com/docs · retrieved 2026-08-01
reliability-public-status-page
No status.tastyigniter.com or equivalent is linked anywhere on the site. Partly structural - there is no vendor-run production service, since every install is the operator own - but the vendor also publishes no uptime history for the marketplace or update servers that installs do depend on. https://tastyigniter.com/ · retrieved 2026-08-03
reliability-247-live-support
Hard documented no. Support is weekdays 9am-5pm GMT only, and even that requires a paid plan starting at $80/month. There is no phone channel at all — email, Discord and GitHub only. Free users get community forum and Discord. https://tastyigniter.com/premium-support · retrieved 2026-08-01
reliability-onsite-install differentiator
The services page lists four offerings: an Installation service - 'We install TastyIgniter on your server, configure extensions and payments, apply your branding, and deliver an onboarding video' - plus Premium Support, quote-based Custom Development and Bug Fix sessions from $120. All of it is remote server work. No in-person go-live is offered anywhere on the site and there is no dealer or reseller network. https://tastyigniter.com/support/services · retrieved 2026-08-03 adversarially verified
reliability-menu-build-service differentiator
The Premium Support page excludes menu migration and points to 'our installation & dev services'; that services page lists Installation (server install, extension and payment configuration, branding, onboarding video), Premium Support, Custom Development and Bug Fix sessions - no menu build. The initial menu build is left to the operator, or becomes bespoke quote-based development. Note the vendor's own pages disagree about whether menu migration is purchasable, and neither publishes a price. https://tastyigniter.com/support/services · retrieved 2026-08-03 adversarially verified
reliability-hardware-replacement-sla
No hardware, therefore no replacement programme.
reliability-pci-dss-4-attestation
No AoC, no P2PE listing, no compliance page. Self-hosted software shifts PCI scope onto the merchant and its host. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-01
reliability-mfa-role-based-access
Upheld on the RBAC leg (core permission model is real), but strengthen the criticism: the 2FA extension is third-party (avisaas) at $49/yr with 0 installs. So MFA on the admin panel is not merely paid, it is unproven in the field. The dossier's conclusion is right and its evidence is weaker than it says. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01 adversarially verified
reliability-self-serve-training
Free public documentation, a help centre, a community forum and Discord are all open with no login. But there is no video/LMS training library and no practice or training mode. https://tastyigniter.com/docs · retrieved 2026-08-01
reliability-failover-terminal-role differentiator
No terminal roles exist to fail over.
reliability-cellular-backup
No first-party connectivity failover; entirely the operator's network problem.
Commercial, compliance & data ownership
commercial-month-to-month-contract differentiator
The core licence is MIT, verbatim 'Permission is hereby granted, free of charge, to any person obtaining a copy of this software' (copyright Samuel Adepoyigi). It is perpetual and has no term, so there is no contract to be locked into at all. Premium Support, the only recurring commitment the vendor sells, is published as 'billed monthly, cancel anytime' on all three plans. https://raw.githubusercontent.com/tastyigniter/TastyIgniter/master/LICENSE.md · retrieved 2026-08-03
commercial-no-early-termination-fee differentiator
An early-termination fee is structurally impossible on a perpetual, irrevocable, royalty-free MIT grant running on the operator own server; the vendor has no ability to switch the software off or invoice for stopping. Support plans are month-to-month with cancel-anytime stated. https://raw.githubusercontent.com/tastyigniter/TastyIgniter/master/LICENSE.md · retrieved 2026-08-03
commercial-autorenew-terms-published
Shortfall: monthly billing and 'cancel anytime' are stated on the plan cards and extension licences are priced per year, but no renewal date, no notice period and no auto-renewal clause is published in any MSA - there is no MSA. The Terms and Conditions cover website and marketplace use, not a subscription term. https://tastyigniter.com/premium-support · retrieved 2026-08-03
commercial-processing-not-bundled differentiator
Five gateways ship (Stripe, PayPal Express, Square, Mollie, Authorize.Net) plus a documented framework for building others. The vendor has no processing business, so there is nothing to lock the merchant into. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-01
commercial-interchange-plus-published differentiator
The vendor publishes no processing rate of any structure because it is not in the payments business. Rate terms come from the merchant's chosen gateway. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-01
commercial-rate-increase-clause differentiator
No processing agreement exists between vendor and merchant, so no rate-increase protection is offered — but equally no vendor can raise the merchant's card rate. Exposure sits entirely with the merchant's own processor contract. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-01
commercial-pricing-published
Verified verbatim: Solo $80/mo 'Guaranteed 24-hour response time', Pro $240/mo at 12 hours, Enterprise $400/mo at 8 hours, all 'Billed monthly - cancel anytime', all weekdays 09:00-17:00 GMT, all 'Unlimited priority support via email, Discord, and GitHub'. Every marketplace extension carries a public price. Two presentation inconsistencies: the homepage now shows Premium Support as 'Custom' rather than the figures, and advertises extensions 'from GBP 29' while the marketplace quotes USD with $6 and $10 one-offs at the bottom. https://tastyigniter.com/premium-support · retrieved 2026-08-03 adversarially verified
commercial-module-unbundling differentiator
Literal, structural unbundling, with the count corrected. The org holds 30 repositories: fifteen live ti-ext-* packages (cart, socialite, payregister, local, coupons, user, translate, reservation, pages, frontend, broadcast, automation, api, plus debugbar and dusk which are developer tools), ti-theme-orange, core and the application skeleton; three ti-ext-* repos are archived (drivers, onlinetracker, eventrules). Roughly thirteen are operator-facing. All are MIT, separately versioned and independently installable or removable via Composer, and every paid capability is its own marketplace purchase on its own annual licence, so there is no bundle to reprice. https://api.github.com/orgs/tastyigniter/repos?per_page=100&sort=pushed · retrieved 2026-08-03 adversarially verified
commercial-hardware-purchase-outright
Shortfall: the 'at a published price' half of the claim is unmet and inapplicable. The vendor sells, leases and certifies no hardware, so there is no mandatory lease to avoid - but there is also no device catalogue, accessory list, compatibility matrix or hardware price anywhere on the site, marketplace or services pages. Every terminal, screen and printer is bought from a third party at that third party's price. https://tastyigniter.com/ · retrieved 2026-08-03 adversarially verified
commercial-hardware-not-locked differentiator
Shortfall: the only first-party hardware documentation is a paid extension's sell page. DocketPrint (Igniter Labs, $75/yr, 1 install) documents 'Local/USB thermal, Epson ePOS over the network, and raw ESC/POS over IP (port 9100)' - genuinely open protocols on printers the operator sources itself - but the extension is closed source with no public repository, no Packagist package and no documentation page, so the claim rests on grade-C marketing copy. The MIT core ships no printer driver and no cash-drawer support of any kind. https://tastyigniter.com/marketplace/item/igniterlabs-docketprint · retrieved 2026-08-03 adversarially verified
commercial-data-export-self-serve
OrderTransformer returns `order_totals` and `order_menus` (line items with their selected option values) for every order, with customer, location, address, payment_method, status, status_history, assignee and assignee_group as includes; the orders resource exposes index and show, reachable with an admin Sanctum token the operator mints itself (`php artisan igniter:api-token --admin`). The extension is free, so no ticket and no fee, and because the product is self-hosted and MIT the operator additionally has direct SQL access to the entire schema. Two limits worth stating plainly: the free Import & Export Tool's CSV path ships only menu import/export models in v4 despite a marketplace card naming Orders and Customers, and there is no payment-transaction or labour resource - payments appear only as a payment_method reference plus order totals, and labour data does not exist in the product. https://github.com/tastyigniter/ti-ext-api/blob/master/src/ApiResources/Transformers/OrderTransformer.php · retrieved 2026-08-09 adversarially verified
commercial-export-customer-and-loyalty differentiator
Shortfall: one of the claim's three data types is unconditionally exportable, one needs a paid add-on, one is not held by the platform at all. Customers are a first-class API resource with full CRUD and sit in the operator's own MySQL database. Loyalty point ledgers exist only if the operator has bought Loyalty Points ($30/yr, Igniter Labs, 6 installs) - a base install has no ledger. Gift-card liability is held by Gift Up!, an external SaaS reached through a free connector, so those balances cannot be exported from TastyIgniter at all. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-03 adversarially verified
commercial-post-termination-export-window differentiator
Shortfall: no contractual or documented retrieval window of any length. The Terms and Conditions provide for termination of website access but contain no clause on data retrieval, export or deletion afterwards; the Privacy Policy addresses only website-visitor personal data. What is documented sits upstream of the question: LICENSE.md is verbatim MIT, granting perpetual rights to use, copy and modify, and the installation docs place the application and its MySQL 8.0+/MariaDB 10.6+ database on the operator's own hosting, so there is no vendor-held copy to cut off. The operator's practical position is better than any published window, but the vendor publishes no window, so this is not a documented yes. https://tastyigniter.com/terms-and-conditions · retrieved 2026-08-02 adversarially verified
commercial-data-ownership-clause differentiator
I read both published legal documents linked from the site footer. The Terms and Conditions (governing law England and Wales) cover usage restrictions, prohibited activities, liability disclaimers, a 30-day marketplace refund guarantee and a right to terminate website access for non-payment or breach - they contain no statement of who owns merchant transaction or customer data and no constraint on vendor use or resale of it. The Privacy Policy governs tastyigniter.com website visitors only ('We will not share any of your personal data with any third parties for any purposes') and does not reach data held in a self-hosted installation. LICENSE.md is the plain MIT text and concerns the software only. So no published data-ownership clause exists. This means 'no clause is published', not 'the vendor takes your data': under self-hosting the vendor never receives it, but that protection is architectural rather than contractual, and a Premium Support engagement explicitly grants the vendor admin access to the operator's installation. https://tastyigniter.com/terms-and-conditions · retrieved 2026-08-02 adversarially verified
commercial-pci-p2pe-tokenization
Gateway tokenisation via payment profiles keeps PANs off the merchant's systems, and hosted gateway fields reduce scope in practice. But the vendor names no applicable SAQ, publishes no P2PE validation, and self-hosting means the operator owns the assessment. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-01
commercial-pci-dss-4-controls
Fails on both named controls: MFA on admin access is not in core (paid $49/yr extension only), and the vendor documents no payment-page script-integrity monitoring for Req 6.4.3 / 11.6.1. https://tastyigniter.com/marketplace/extensions · retrieved 2026-08-01
commercial-privacy-dsar-tooling
Admin can delete customer records under a discrete permission, and self-hosting gives complete access to locate and export any individual's data. But there is no DSAR workflow, no deletion-propagation guarantee across extensions, and no published DPA — arguably no DPA is needed since the vendor is not a processor of operator data. https://tastyigniter.com/docs/extensions/user · retrieved 2026-08-01
commercial-wcag-kiosk-accessibility differentiator
No VPAT, no ACR and no WCAG conformance claim for the consumer ordering surface anywhere on the site or in the docs. There is no kiosk at all, so the kiosk half of the criterion cannot be met either. https://tastyigniter.com/ · retrieved 2026-08-03
commercial-dual-pricing-compliant differentiator
No dual pricing, cash discount or surcharging engine exists, so none of the debit-exclusion or disclosure requirements are met. https://tastyigniter.com/docs/extensions/payregister · retrieved 2026-08-01
Adversarial verification
An independent pass was instructed to refute this record, defaulting to downgrade when uncertain. It challenged 36 values — 29 upheld, 5 downgraded, 0 upgraded. This is published in full because a reader who can see which values were contested, on what evidence, and which way they moved has something no affiliate-funded comparison offers.
Capability claims
| Claim | As first scored | Verdict | What the verifier found |
|---|---|---|---|
| kitchen-station-routing | no / grade B, cites the marketplace extension index: 'The free Kitchen Display extension is a single status board that moves orders between statuses. No station routing by item, category, or revenue centre.' | downgrade-to-partial | The premise is wrong. The record asserts across five kitchen cells that Kitchen Display 'has no documentation page - only a marketplace card'. It has a full manual: the extension is open source at github.com/igniter-labs/ti-ext-kitchendisplay and ships docs/index.md, linked from its own README. I read it. Each display is configured with Locations, Order Types and Menu Categories filters plus up to five board columns mapped to order statuses, and the docs' own worked example names a display 'Pizza Station'. That is routing by category, order type and location, configurable per display in the admin with no vendor involvement. The shortfall that makes this partial rather than yes is the routing unit: the board renders whole order cards, not individual lines, so an order spanning two categories appears in full on both boards and there is no per-item or revenue-centre routing. source |
| kitchen-sla-alerts | unknown / grade F: 'Target cook times with colour escalation are not described in the Kitchen Display listing.' | resolve-to-no | Assessed against the listing when the manual exists. The Kitchen Display docs enumerate the settings exhaustively - 'The following settings are available': Title, Locations, Order Types, Menu Categories, Orders Limit, five Board Columns with their mapped statuses, and Hide card details (Customer Name, Order ID, Order Type). There is no target time, no threshold, no colour rule and no audible alert anywhere in the configuration surface or the usage section. The only time control is manual: an operator clicks the order time and adds a +15/+30/+45 minute preset or a custom HH:MM. A complete first-party settings enumeration that omits the capability is positive evidence of absence, so this is `no`, not unresolved. source |
| kitchen-recall-refire | unknown / grade F: 'The status model is bidirectional in principle, but recall/unbump and per-item refire are not documented.' | resolve-to-partial | Now documented. The Kitchen Display manual describes advancing a card with the Next button and 'then select a status from the dropdown' - an arbitrary status selection, not a one-way bump - plus a Pause button that moves an order to the On Hold column. An order bumped to Completed can therefore be moved back to a New or Preparing column. Partial, not yes: the operation is order-level only. Nothing in the docs recalls or refires an individual line, and reprinting is a separate paid extension (DocketPrint, $75/yr) with no documented refire hook. source |
| kitchen-all-day-counts | unknown / grade F: 'Kitchen Display extension detail is thin; an all-day aggregate view is neither confirmed nor denied.' | upheld | Upheld, but on better ground than the record had. I read the extension's manual rather than its marketplace card. The usage section covers Viewing Orders, Updating Status, Wait Time Management, Real-time Updates and Permissions; the display is described purely as order cards arranged in status columns with an Orders Limit of 1-100. No aggregate-by-item view is described - but neither is one ruled out, since the docs describe the board's operation rather than enumerating what it cannot render. Absence of evidence stays unknown. source |
| kitchen-bump-bar-hardware | unknown / grade F: 'The free Kitchen Display extension (1,988 installs) has no documentation page - only a marketplace card.' | upheld | The stated reason is false and I am recording that even though the value survives: the extension does have a documentation page (docs/index.md in its public repo). Reading it does not change the answer. Every interaction it describes is a click - 'Click the Next button', 'Click Pause button', 'Click order time' - and there is no bump bar, keypad, keyboard-shortcut map or supported-model list either affirming or denying HID input. A browser view may well accept a USB-HID bump bar emulating keystrokes, but nothing documents keystroke handling. Unknown stands, on a corrected premise. source |
| kitchen-item-build-screens | unknown / grade F: 'Whether the Kitchen Display renders full modifier breakout versus line text alone is not documented.' | upheld | Checked against the manual the record did not find. The nearest evidence is the 'Hide card details' setting, which lets an operator suppress Customer Name, Order ID and Order Type - implying the card carries order-level metadata plus lines, but saying nothing about whether option values are broken out, and nothing at all about recipe steps or portioning. Unknown stands. source |
| kitchen-prep-time-pacing | no / grade F: 'Lead/prep time is a per-location constant, not per-item cook times with staggered start.' | upheld | A grade-F `no` on a differentiator is exactly the pattern this pass exists to catch, so I re-sourced it. The Kitchen Display manual's Wait Time Management section is the whole of the product's cook-time handling: an operator clicks the order time and picks a +15/+30/+45 preset or types a custom HH:MM. That is a manual, order-level promise-time push. There is no per-item cook time and no scheduler that staggers item display so lines finish together. Value upheld; evidence moved from analyst inference to first-party documentation. source |
| hardware-kds | partial / grade B, cites the marketplace extension index | upheld | Partial is right and I can now name the shortfall precisely from the manual rather than from a marketplace card. First-party and free: touch input, five configurable status columns, per-display Location/Order Type/Menu Category filters, and real-time push - though real-time requires separately installing the Broadcast extension, which the record does not mention. Against the claim, bump-bar input is undocumented, station routing is order-level not item-level, and course/fire timing does not exist at all (the only timing control is a manual +15/+30/+45 wait-time bump). Three of the claim's four elements are missing or partial, so partial, not yes. source |
| reporting-tier-paywall | yes / grade B: 'nothing in it sits behind a tier, because there are no tiers.' | downgrade-to-partial | This reads a true statement about pricing as a capability. The claim asserts that reporting BEYOND basic sales summaries - naming labor vs sales, PMIX, comps/voids audit and multi-location comparison - is available without a tier upgrade. I read the Reports documentation: what ships is a generic Report Builder (Tools > Report Builder, New, pick columns, filter operators and input types, CSV export) plus four dashboard datasets - Best Selling Items, Worst Selling Items, Top Customers, Bottom Customers. Of the four report families the claim enumerates, none is documented, and this record's own cells agree: reporting-labor-productivity `no`, reporting-comps-voids-audit `no`, reporting-pmix-modifier-level `partial`, multi-location-consolidated-reporting `partial`. Labor vs sales is structurally impossible - there is no labour data model. Nothing is paywalled because nothing is tiered, but that is not the same as the reporting being available. Partial, with the shortfall named: no gate exists, and neither do two of the four report families. source |
| commercial-export-customer-and-loyalty | yes / grade B, with the note itself conceding 'Gift-card balances are the exception - those sit with the external Gift Up! provider.' | downgrade-to-partial | The record names its own shortfall and then scores yes anyway. The claim requires three things exportable: guest records, loyalty balances, and gift-card liability balances. Guest records: yes - Customers is a first-class API resource with full CRUD, confirmed in the API reference and in ti-ext-api's source. Loyalty: only if the operator has bought Loyalty Points ($30/yr, igniterlabs, 6 installs on the marketplace as of today) - a base install has no point ledger to export. Gift cards: the only gift-card option is the free Gift Up! connector, and those balances are held by Gift Up!, not in the operator's database, so the platform cannot export them at all. One of three unconditionally met, one conditional on a paid add-on, one not met. Partial. source |
| commercial-hardware-not-locked | yes / grade B, cites https://github.com/tastyigniter/TastyIgniter: 'Browser-based on commodity devices; no proprietary hardware requirement of any kind.' | downgrade-to-partial | The cited URL is the project's repository homepage, which says nothing about printers, drawers or peripherals - it cannot support this claim, which is specifically about DOCUMENTED support for a named non-proprietary device. I went looking for the real evidence. The only first-party hardware documentation that exists is the DocketPrint marketplace listing: 'Local/USB thermal, Epson ePOS over the network, and raw ESC/POS over IP (port 9100)'. That is genuine open-protocol support, but it is a $75/yr paid extension with 1 recorded install, it is closed source (no public repo, nothing on Packagist, no docs page - I checked all three), and its only description is a page written to sell it, which is grade C. Core ships no printer driver and no cash-drawer support of any kind. A differentiator yes needs grade A or B; the best available evidence is C. Partial. source |
| commercial-hardware-purchase-outright | yes / grade C, cites the homepage: 'The vendor sells no hardware, so all devices are bought outright from third parties.' | downgrade-to-partial | Credits the vendor for a capability by virtue of not having a business. The claim has two halves: terminals, KDS screens and printers purchasable outright AT A PUBLISHED PRICE, and no mandatory lease. I checked the homepage, the marketplace and the services page: there is no device catalogue, no accessory list, no compatibility matrix and no hardware price anywhere on the site. The second half is satisfied vacuously - there is no vendor lease to be trapped in because there is no vendor hardware - but the first half is not merely unmet, it is inapplicable. Scoring this yes puts TastyIgniter level with a vendor that publishes a real outright-purchase price list. Partial, shortfall: no vendor hardware and therefore no published hardware price. source |
| reporting-webhooks | yes / grade B, cites the marketplace listing page https://tastyigniter.com/marketplace/item/igniterlabs-webhook | upheld | Correct value, unsupportable source. A marketplace listing is a page written to sell an extension - grade C - and a differentiator yes on grade C fails the floor, so this cell was one re-grade away from collapsing. The real evidence exists and I retrieved it: the extension is open source, and its manual documents a per-webhook 'Secret Signature: A secret key used to sign the webhook payload for verification', a global 'Webhook Signature Header Name', 'Webhook Retry Count', a timeout, SSL verification, and a Recent Deliveries log with status and response per attempt. The event catalogue - which the record twice calls unpublished - is enumerated: Category, Customers, Menu items, Orders, Reservations and Tables, each on created/updated/deleted. Order lifecycle is covered; there is no discrete payment event, but the platform has no payment object separate from the order, and payment state changes fire order.updated. Yes stands, re-sourced. source |
| extensibility-webhook-reliability | partial / grade B: 'What is still missing is explicit HMAC signature verification and a replay action.' | upheld | Partial survives but the named shortfall was half wrong, which matters because a shortfall is the whole content of a partial. HMAC is not missing. The extension is built on spatie/laravel-webhook-server, whose signing is hash_hmac('sha256', $payloadJson, $secret) delivered in a configurable header; the TastyIgniter side exposes exactly that as a per-webhook Secret Signature plus a settable Webhook Signature Header Name. Backoff is not missing either - spatie's default ExponentialBackoffStrategy retries three times at 10s, 100s and 1000s, and TastyIgniter surfaces the retry count as a setting. What is genuinely absent is the third element: the Recent Deliveries view shows status and response but the docs describe no redeliver or replay action for a missed event. One of three elements missing, so partial - on the correct grounds. source |
| extensibility-webhooks-push | partial / grade B: 'Partial stands (event catalogue still not enumerated publicly).' | upheld | The stated shortfall is refuted; a different one keeps it at partial. The catalogue IS enumerated, in the extension's manual: Category, Customers, Menu items, Orders, Reservations and Tables, each triggering on created, updated or deleted, wired to Eloquent model events (the docs show registerEventListeners returning 'eloquent.created: Igniter\User\Models\Customer' and so on). Delivery is push, not polling, and there is a second path through Automation Rules ('Send payload to Webhooks' action with conditions). Against the claim's specific list, though, only created/updated/deleted exist - there is no paid, voided or refunded event, and a consumer must diff the order payload to infer those transitions. Partial, with the shortfall corrected. source |
| extensibility-menu-write-api | yes / grade B, cites the published API reference: 'menus and categories carry the full verb set' | upheld | Upheld and strengthened. The published reference lists nine resources and gives no payload specification for menu writes - thin support for a differentiator yes that names modifiers explicitly. I read the extension's source instead. ti-ext-api 4.x ships seventeen resource controllers, including three the published docs omit entirely - Menus, MenuOptions and MenuItemOptions - and Menus declares restConfig actions index, store, show, update and destroy behind requiredAbilities ['menus:*'], backed by Cart's MenuRequest validator. Modifiers are therefore writable over the API, not just menu headers. Yes, re-graded to A against source. source |
| payments-processor-choice | yes / grade B, cites the PayRegister documentation | upheld | Checked directly. PayRegister documents five gateway classes - Igniter\PayRegister\Payments\Stripe, PayPalExpress, Square, Mollie and AuthorizeNetAim - plus opt-in traits (WithPaymentProfile, WithPaymentRefund, WithAuthorizedPayment) that a developer implements to add a sixth. A third-party SumUp gateway on the marketplace demonstrates the extension point works in practice. There is no vendor processing entity and no residual, so there is nothing to lock the merchant into. Yes. source |
| payments-emv-nfc | no / grade B: 'the payment docs contain no mention of card-present, terminals, or offline modes at all.' | upheld | A `no` resting on 'the docs do not mention it' is the pattern these rules forbid, so I looked for the counter-example rather than the confirmation. The obvious one is the SumUp extension - SumUp being primarily a card-terminal company - and if it drove a reader this cell would be wrong. It does not: the listing describes 'an additional payment gateway for the Pay Register extension' for accepting card payments online, with guidance on embedding Apple Pay and Google Pay as web Alternative Payment Methods, and it requires a SumUp merchant account. No terminal pairing, no reader SDK. Combined with PayRegister documenting a closed set of five online gateways and no card-present flow, and with the vendor selling no hardware at all, the absence is affirmative. No stands. source |
| reliability-onsite-install | no / grade B, cites the Premium Support page | upheld | The Premium Support page only says installation is excluded from the plans; it points at a services page the record never reached, and that page could have overturned this cell. It does not. tastyigniter.com/support/services lists four things: an Installation service described as 'We install TastyIgniter on your server, configure extensions and payments, apply your branding, and deliver an onboarding video', Premium Support, quote-based Custom Development, and Bug Fix sessions 'Starts at $120'. The whole process is remote server work; nothing on the page offers in-person go-live, and there is no dealer or reseller network anywhere on the site. No stands, on evidence the record did not have. source |
| reliability-menu-build-service | no / grade B: 'the Premium Support page names menu migration among services requiring a separate quote.' | upheld | I expected to overturn this one. The Premium Support page's exclusion note reads 'Custom development, menu migration, and third-party software are not included - see our installation & dev services', which points at a paid service that might well perform the initial menu build. I retrieved that page. It does not: the Installation service covers server install, extension and payment configuration, branding and an onboarding video, and menu build is not among the four services listed. The only route is quote-based Custom Development. So the initial menu build is left to the operator. No stands - but note the vendor's own pages disagree about whether menu migration is a purchasable service, and neither publishes a price for it. source |
| commercial-pricing-published | yes / grade C, cites https://tastyigniter.com/premium-support | upheld | Every figure verified verbatim on the vendor's own page: Solo $80/mo with 'Guaranteed 24-hour response time', Pro $240/mo ('Most popular') at 12 hours, Enterprise $400/mo at 8 hours, all 'Billed monthly - cancel anytime', all 'weekdays, 9:00 AM to 5:00 PM (GMT)', all 'Unlimited priority support via email, Discord, and GitHub'. Marketplace prices spot-checked the same day: Multi Vendor $149/yr, DocketPrint $75/yr, SumUp $50/yr, POS/Dine-In/Takeaway/Delivery/2FA $49/yr, Loyalty Points $30/yr, Uber Direct $28/yr. Two presentation inconsistencies worth a reader's attention: the homepage now prices Premium Support as 'Custom' rather than showing the figures, and advertises extensions 'from £29' in sterling while the marketplace quotes USD and its cheapest items are $6 and $10 one-offs. Yes stands. source |
| commercial-module-unbundling | yes / grade A: 'eighteen separately versioned MIT Composer packages in eighteen repositories' | upheld | Value upheld, count wrong. I re-read the org listing the record cites: 30 repositories, of which the live extension packages are fifteen ti-ext-* (cart, socialite, payregister, local, coupons, user, translate, reservation, pages, frontend, debugbar, broadcast, automation, api, dusk - and debugbar and dusk are development tools, not operator modules), plus ti-theme-orange, core and the TastyIgniter skeleton. Three ti-ext-* repos are archived (drivers, onlinetracker, eventrules) and three ti-module-* repos carry no licence. So the honest figure is roughly thirteen operator-facing first-party packages, not eighteen. The structural point survives intact: every one is MIT, separately versioned and independently installable via Composer, and every paid capability is a separate marketplace purchase with its own annual licence, so there is no bundle to reprice. Yes. source |
| delivery-zones-polygon | yes / grade B, cites the Local extension documentation | upheld | Verified in the docs myself rather than taking the reasoning. The Local extension defines a delivery area with type 'address', 'circle' or 'polygon'; the polygon form takes an explicit vertex ring (the docs' example is [[[0.0,0.0],[0.0,1.0],[1.0,1.0],[1.0,0.0],[0.0,0.0]]]), the circle form takes a centre and radius, and the address form takes priority-ordered components such as ['type' => 'locality', 'value' => 'London', 'priority' => 0]. Charges attach per area with conditions of type 'all', 'above' or 'below' a total. Arbitrary map polygons are genuinely native and free. Yes - and this remains the strongest capability cell on the record. source |
| hardware-commodity-devices | yes / grade B, cites https://github.com/tastyigniter/TastyIgniter | upheld | Right answer, wrong citation - the repository homepage does not state platform requirements. The vendor's download page does: 'PHP 8.1 or higher', 'MySQL 5.7+ or MariaDB 10.3+', 'Apache or Nginx'. The deliverable is a server-rendered Laravel application with no client binary, no vendor device and no certified terminal list, so the client is any browser on hardware the operator already owns. Worth a reader knowing what this yes actually means here: it is scored on a product that ships no POS terminal software at all, so 'runs on commodity hardware' is true in the sense that there is nothing proprietary to run. source |
| hardware-os-platforms | partial / grade B, citing the download page and asserting 'the repository README requires a newer PHP than that' | upheld | Partial upheld and the record's own sub-claim confirmed at source. The download page states PHP 8.1 or higher; the skeleton's composer.json requires php ^8.3 alongside laravel/framework ^12.0 and tastyigniter/core ^4.3. The vendor's published minimum is two minor versions behind what its own manifest will actually install - a real, checkable inconsistency. Beyond that, everything published is server-side: no client operating system, minimum browser version or device specification appears anywhere, because the vendor ships no client software. Partial. source |
| order-capture-transfer-audit | no / grade A, cited as 'Complete admin migration set of tastyigniter/core (55 files) enumerates every table the platform creates' | upheld | The verdict is right; the methodology behind it is overstated and is load-bearing for roughly twenty other `no` cells, so it needs saying. database/migrations/admin is not the platform's schema - it is 55 incremental alterations (add_columns, drop_unused_columns, rename, make_primary_key_bigint, merge_staffs_into_users) and it contains no create_orders_table at all. It cannot establish what tables exist. What does establish it is the model set, which I read instead: ti-ext-cart/src/Models is Cart, Category, Ingredient, Mealtime, Menu, MenuCategory, MenuItemOption, MenuItemOptionValue, MenuOption, MenuOptionValue, MenuSpecial, Order, OrderMenu, OrderMenuOptionValue, OrderTotal, Stock, StockHistory. There is no check, tab or seat entity, so there is nothing to transfer between servers. ti-ext-user's AssignableLog records assignment of an order to a staff member - the nearest thing, and not a two-employee transfer audit. No stands, re-sourced. source |
| labor-tip-pooling-rules | no / grade A, cited against the admin migration directory | upheld | Re-sourced for the same reason as the transfer-audit cell: the migrations directory the record cites is an alteration log, not a schema. The right evidence is ti-ext-user/src/Models, which is the complete staff and customer domain: Address, AssignableLog, Customer, CustomerGroup, Notification, User, UserGroup, UserPreference, UserRole. There is no shift, punch, timesheet, pay-rate, tip or payslip entity, and no other extension supplies one - the marketplace has no labour, scheduling or payroll extension at any price. That is a complete first-party enumeration of the domain with the capability absent, which is genuine positive evidence. No stands, and the same source properly backs every other labor-* `no` on this record. source |
| delivery-3p-injection | no / grade B, cited https://tastyigniter.com/docs/extensions/api: 'No marketplace integrations to inject from. An operator could build injection on t...' | upheld | The value survives but its evidence did not. The cited page is the API extension's documentation; it discusses installation, Sanctum tokens and resource endpoints and never mentions a delivery marketplace, so it could only ever have supported the claim by silence. I re-grounded it on two first-party sources I retrieved myself. First, the marketplace extension catalogue, which for a self-hosted MIT product is where every vendor-published integration ships: I read the whole page (no pagination) and grepped it for uber eats, deliveroo, just eat, doordash, grubhub, otter, deliverect, chowly, foodpanda, glovo and menulog - the only hits are Uber Direct (a DaaS dispatch extension) and the footer's 'TastyIgniter vs Uber Eats' / 'vs Just Eat' comparison links. Second, the vs-Uber-Eats page's own FAQ, which answers 'Can I run TastyIgniter alongside Uber Eats?' with side-by-side operation and no mention of order flow between them. Grade lowered to C because the catalogue and the comparison page are first-party sell-side pages, not documentation. source |
| guest-loyalty-data-export-portability | yes / grade B, cited the API overview page: 'Customers resource is exposed over the free REST API with full CRUD, and the operator has direct SQL a...' | upheld | Held, on better evidence and with one supporting statement corrected. The overview page lists customers among nine resources under a blanket 'List, create, retrieve, update and delete' phrasing that is not per-resource accurate elsewhere in the same list, so I went to ti-ext-api's registerApiResources() and read the entry: index:admin, show:admin, store:admin, update:users, destroy:admin. CustomerTransformer exposes the model plus addresses, orders and reservations includes, which is the full guest record and its history. What does not hold is the CSV leg a reader might infer: igniter-labs/ti-ext-importexport at 4.x ships resources/models/menuexport.php and menuimport.php and nothing else, so the free Import & Export Tool exports menus only despite its marketplace card naming Orders and Customers. The claim allows CSV or API, the API leg is documented and free, and the product is self-hosted MIT, so yes stands at grade A. source |
| guest-loyalty-review-capture-routing | partial / grade B, cited the API overview page: 'Reviews are a first-class core resource with API endpoints, and the Automation engine could trigg...' | upheld | Partial upheld, with both legs re-evidenced from source instead of from the API index. On the trigger side the record understated what ships: ti-ext-local's registerAutomationRules() carries a preset, chase_review_after_one_day, that mails igniter.local::mail.review_chase to the customer 24 hours after an order when their review_count is 0 - a shipped post-transaction feedback request, not something an operator merely could build. On the routing side I enumerated the automation surface across ti-ext-automation, ti-ext-cart, ti-ext-local, ti-ext-user and ti-ext-reservation: two actions total (AssignToGroup, SendMailTemplate) and no condition class that reads a review rating. A complete registration list that contains no score condition and no publish action is positive evidence that score-based routing is absent, which is exactly what keeps this at partial rather than yes. source |
| reporting-public-api | partial / grade B, cited the API overview page: 'Free, self-serve, no-agreement REST API covering orders, menus, categories, customers, locations...' | upheld | Partial upheld and the coverage description corrected in both directions. The overview page's resource list is not an enumeration: it names nine resources where registerApiResources() registers fifteen, and it flattens per-action authorisation into one uniform CRUD sentence (currencies, for instance, is index-only in source and absent from the docs list altogether). Going the other way, I checked the two things the partial turns on. ti-ext-payregister's Extension.php contains no registerApiResources() method, so there is no payments resource and no payment-transaction endpoint; payment data surfaces only as OrderTransformer's payment_method include and the order totals. Labour has no resource because the product has no timeclock - the `users` resource is staff records, not shifts or hours. Orders and menus are fully covered, payments and labour are not, so partial is the right value and grade A is the right grade now that it rests on the registration code. source |
| reporting-api-not-upcharged | yes / grade B, cited the API overview page: 'The same public reference documents Sanctum token issuance and full CRUD over nine resources with no...' | upheld | Upheld on evidence that can actually establish it. Inferring 'no entitlement check, tier gate or metering' from a documentation page is the refuted move - a page that never mentions gating cannot rule it out. I read ti-ext-api's Extension.php end to end instead. register() merges config/api.php, sets up Sanctum and Fractal and registers the igniter:api-token console command; boot() configures rate limiting (Limit::perMinute(60) by user id or IP), registers the status routes and the resource routes. registerPermissions() declares one permission, Igniter.Api.Manage. There is no licence, entitlement or metering code path. The commercial side is confirmed separately: the extension is listed Free on the marketplace and the core product sells no tiers, so there is no plan for API access to be withheld from. The install counter has moved from 22,614 to 23,492 since the record was written; corrected in the note. source |
| extensibility-public-api-docs | yes / grade B: 'Full API reference is public at tastyigniter.com/docs/extensions/api with no login, NDA, partner agreement or sales call...' | upheld | Value upheld, wording withdrawn. I fetched the page with a plain curl and no credentials: HTTP 200, 181KB, and the rendered body carries the whole guide, so the accessibility proposition the claim tests is directly evidenced by the artefact itself. What is not true is 'full API reference'. The page has no endpoint table, no request or response schemas, no query parameters and no status codes; its 'Resource endpoints' section is nine bullet lines of the form 'orders - List, create, retrieve, update and delete', which under-lists the fifteen resources the code registers and flattens their differing per-action authorisation. A reader told the reference is full would over-estimate what is published, so the note now says what the page actually contains and points at the MIT source for the contract. I also read the whole of robots.txt: /secure-backend/, /index.php, /account/ and /api-docs/ are disallowed for all agents, so I did not probe /api-docs/ - the documentation path this claim rests on is not among them. source |
| extensibility-api-access-cost | yes / grade B, cited the API overview page: 'The full API reference is published without a login, an NDA, a partner agreement or a sales call, an...' | upheld | Upheld, but the reasoning it was carrying was circular: the readability of a documentation page says nothing about whether the capability it describes is charged for. I substituted two sources that can settle it. In ti-ext-api's Extension.php there is no licensing code of any kind - register(), boot(), registerPermissions() and registerApiResources() between them establish Sanctum, Fractal, one admin permission, a 60/min rate limiter and the resource routes, and nothing consults a plan, seat count or entitlement. On the commercial side the marketplace catalogue lists 'APIs for TastyIgniter' as Free alongside paid siblings priced at $28 to $149 a year, so the free designation is a real distinction on that page rather than a default. Install count corrected from 22,614 to 23,492. source |
| extensibility-order-injection-api | yes / grade B, cited the API overview page: 'The public docs, behind no login, enumerate nine resources ... Order injection by POST is documented.' | upheld | Upheld at a higher grade, and one supporting statement withdrawn: the page does not enumerate nine resources, it lists nine of the fifteen that registerApiResources() actually registers, so 'enumerate' was the wrong word for what the record was reading. The substance holds and is stronger than the record claimed. I read Orders.php: restConfig enables index, store, show, update, destroy and updateStatus; restAfterSave() adds order_menus and order_totals from the request body and calls updateOrderStatus() and markAsPaymentProcessed(). I then followed markAsPaymentProcessed() into the Cart extension's Order model, which dispatches OrderBeforePaymentProcessedEvent and OrderPaymentProcessedEvent, and confirmed in ti-ext-cart's registerAutomationRules() that admin.order.paymentProcessed is the OrderPlaced automation event. So an API-injected order carries line items, totals and a status, and fires the same downstream chain as an order placed on the storefront. Kitchen Display columns are configured by order status, so it lands on the board; reporting reads the same table. source |
| commercial-data-export-self-serve | yes / grade B, cited the API overview page: 'Free REST API with full CRUD over orders, customers, menus, reservations and coupons, plus direct S...' | upheld | Upheld with the payload verified rather than assumed. The overview page says only that orders can be listed, created, retrieved, updated and deleted, which does not tell you whether an exported order carries its line items - the thing this claim turns on. OrderTransformer::transform() returns currency, order_totals from getOrderTotals() and order_menus from getOrderMenusWithOptions(), so line-item detail with modifiers is in the response, and availableIncludes adds customer, location, address, payment_method, status, status_history, assignee and assignee_group. Against that, I checked the two weaker parts of the claim's wording. Payments: ti-ext-payregister registers no API resource, so there is no transaction-level payment export, only the method and the totals. Labour: none exists. CSV: igniter-labs/ti-ext-importexport at 4.x ships menuexport.php and menuimport.php only. Yes still holds because the claim is satisfied by a documented API and because a self-hosted MIT deployment leaves the operator holding the database, but a reader should see those three limits. source |
Sources
Every URL this record cites. 65 in total.
- https://tastyigniter.com/docs/extensions/reservation
- https://tastyigniter.com/docs/extensions/coupons
- https://github.com/tastyigniter/TastyIgniter/issues
- https://tastyigniter.com/marketplace/item/igniterlabs-webhook
- https://tastyigniter.com/terms-and-conditions
- https://tastyigniter.com/privacy-policy
- https://tastyigniter.com/docs/installation
- https://tastyigniter.com/marketplace/item/igniterlabs-docketprint
- https://tastyigniter.com/
- https://tastyigniter.com/premium-support
- https://tastyigniter.com/marketplace/extensions
- https://tastyigniter.com/docs
- https://tastyigniter.com/docs/extensions/api
- https://tastyigniter.com/docs/extensions/local
- https://tastyigniter.com/docs/extensions/cart
- https://tastyigniter.com/docs/extensions/payregister
- https://tastyigniter.com/docs/extensions/user
- https://tastyigniter.com/docs/extensions/reports
- https://tastyigniter.com/docs/extensions/automation
- https://tastyigniter.com/marketplace/item/avisaas-pos
- https://tastyigniter.com/marketplace/item/igniterlabs-kitchen-display
- https://tastyigniter.com/marketplace/item/igniterlabs-kitchen
- https://github.com/tastyigniter/TastyIgniter
- https://raw.githubusercontent.com/tastyigniter/TastyIgniter/master/LICENSE.md
- https://raw.githubusercontent.com/tastyigniter/TastyIgniter/master/app/Console/Kernel.php
- not refetchable
- https://api.github.com/repos/tastyigniter/TastyIgniter
- https://api.github.com/orgs/tastyigniter/repos?per_page=100&sort=pushed
- https://api.github.com/repos/tastyigniter/core/contents/src
- https://api.github.com/repos/tastyigniter/core/contents/src/Admin/Models
- https://api.github.com/repos/tastyigniter/core/contents/database/migrations
- https://api.github.com/repos/tastyigniter/core/contents/database/migrations/admin
- https://api.github.com/repos/tastyigniter/ti-ext-cart/contents/src/Models
- https://api.github.com/search/issues?q=repo:tastyigniter/TastyIgniter+is:issue+is:open
- https://api.github.com/search/issues?q=repo:tastyigniter/core+is:issue+is:open
- https://api.github.com/search/issues?q=org:tastyigniter+is:issue+checkout
- https://api.github.com/orgs/igniterlabs/repos?per_page=100&sort=pushed
- https://api.github.com/search/issues?q=org:tastyigniter+is:issue+options
- https://api.github.com/search/issues?q=org:tastyigniter+is:issue+install
- https://tastyigniter.com/download
- https://forum.cloudron.io/topic/3305/tastyigniter
- https://api.company-information.service.gov.uk/search/companies?q=Igniter+Labs
- https://find-and-update.company-information.service.gov.uk/search?q=igniter+labs
- https://find-and-update.company-information.service.gov.uk/company/10203662
- https://github.com/igniter-labs/ti-ext-kitchendisplay/blob/master/docs/index.md
- https://github.com/igniter-labs/ti-ext-webhook/blob/master/docs/index.md
- https://github.com/spatie/laravel-webhook-server
- https://github.com/tastyigniter/ti-ext-api/blob/4.x/src/ApiResources/Menus.php
- not refetchable
- not refetchable
- https://github.com/tastyigniter/TastyIgniter/blob/master/composer.json
- https://tastyigniter.com/support/services
- https://tastyigniter.com/marketplace/item/dineabyte-sumup
- https://api.github.com/repos/tastyigniter/ti-ext-api/contents/src/ApiResources?ref=4.x
- https://tastyigniter.com/tastyigniter-vs-ubereats
- https://github.com/tastyigniter/ti-ext-api/blob/master/src/Extension.php
- https://github.com/tastyigniter/ti-ext-api/blob/master/src/ApiResources/Transformers/CustomerTransformer.php
- not refetchable
- https://github.com/tastyigniter/ti-ext-local/blob/master/src/Extension.php
- https://github.com/tastyigniter/ti-ext-automation/blob/4.x/src/Extension.php
- https://github.com/tastyigniter/ti-ext-payregister/blob/master/src/Extension.php
- https://github.com/tastyigniter/ti-ext-coupons/blob/master/src/Extension.php
- https://tastyigniter.com/robots.txt
- https://github.com/tastyigniter/ti-ext-cart/blob/master/src/Models/Order.php
- https://github.com/tastyigniter/ti-ext-cart/blob/master/src/Extension.php