release: online-payments in the module catalog (S10) - #116
Merged
Merged
Conversation
#115) * feat(catalog): add online-payments at €19, not yet sellable Slice S10 of SOFRA-PAYMENTS-PLAN — the control-plane third of a four-way lockstep (backend ModuleIds.cs, frontend modules.ts, deploy provision-tenant.sh). €19/mo, priced on value rather than on UI surface. The catalog's usual rule (staff surfaces 12, feature modules 9) reads it as a 9, but Sofra takes NO commission and the restaurant pays Stripe's fees — so this module is the entire revenue from enabling payments, and it is the one add-on whose value scales with the tenant's turnover while its price does not. GloriaFood charges $29 for the same capability. The support burden lands here too: chargebacks, KYC onboarding, a 2FA step in the runbook. NOT SELLABLE YET, and that is the load-bearing part of this commit. The vocabulary and the price list are the SAME array, so adding an id to make provisioning accept it also puts it on the public signup page — selling a module with no endpoint, no enforcement and no Stripe onboarding flow. A `sellable` flag now gates both purchase surfaces (SignupConfigurator and the founder's ProvisionPicker), with tests pinning that it is known-but-unsellable and that no bundle smuggles it in. Delete the flag in S9, when the flow works end to end. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * chore(deps): patch the js-yaml and nanoid high CVEs Lockfile only. These fail OSV-Scanner, Trivy and `npm audit` on EVERY sofra PR, not just this one — they are pre-existing on develop and were blocking the merge of a change that does not touch dependencies. Regenerated with `npx npm@10`, not the local npm 11: npm 11 writes a lockfile node-22 CI rejects, and CI pins node 22. lockfileVersion stays 3, `npm ci` resolves clean, 261/261 tests and tsc green. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Release — the sofra half of the payments batch
One commit: #115, the
online-paymentscatalog entry at €19/mo.It ships inert. The entry carries
sellable: false, so it appears on neither the public signup configurator nor the founder's provision picker. The vocabulary and the price list are the same array, so the id had to land for provisioning to accept it — the flag is what keeps it off the storefront.The flag stays for now, by owner decision. Its original reason ("unbuilt") has expired — the whole path is built, merged and, as of today, released and live on prod. But §7 items 6–8 are open owner actions on the live Stripe account: Connect may not be enabled on
acct_1TpwTDCHzplJfkIy, and provisioning's very first call isPOST /v1/accounts. Listing it for sale first would sell something provisioning cannot deliver. Remove the flag once §7.6 is confirmed.Completes the payments batch: backend #342 and frontend #487 are both released and verified live.
Verification after merge
/api/healthanswerssellable: falseassertion)🤖 Generated with Claude Code