Repository navigation
Production release: free-only MVP - #17
Open
Satelink-Protocol wants to merge 110 commits into
Open
Satelink-Protocol wants to merge 110 commits into
Satelink-Protocol wants to merge 110 commits into
Conversation
They pass alone in ~28s but exceeded the 30s default in a full run. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- migration 010: events.superprofile_url/product_id/checkout_mode, checkout_intents, external_orders, bookings.source, users.email_hash/claim_prompt_until - single PaymentProvider superprofile_link (createCheckout = URL with ref, verifyWebhook = constant-time shared secret, refund = NOT_SUPPORTED_IN_APP); https + superprofile.bio allowlist - GET /checkout/:slug records an intent and redirects (works signed out); web-only, hidden in the Mini App - /api/webhooks/superprofile: purchase/refund/cancelled orders, idempotent on order_id, fail-closed amount check, unmatched/flagged orders alert admins, refund-after-check-in keeps the record - Telegram claim flow (/claim, /start claim): one claim per order, 5/hour, generic errors - admin: Orders tab (finance links, support views, keyset pagination), SuperProfile fields on events - remove the old ticket checkout/hold/reconcile paths and the provider webhook route Adapter files, docs and env example are cleaned in the next commit. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…nd docs Removes lib/payments/razorpay.js and cashfree.js, PAYMENT_PROVIDER / RAZORPAY_* / CASHFREE_* / TICKET_CHECKOUT_ENABLED from .env.example, and rewrites PAYMENTS_DECISION, GO_LIVE, RUNBOOK and the other docs for SuperProfile as the only checkout. A grep test keeps them out. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- .github/workflows/ci.yml (Node 24, postgres:16, lint, unit, Playwright e2e) - POST /api/reconcile/superprofile + diffOrders for the daily Claude Code task - e2e for Book Tickets link, redirect, Mini App hiding, 320/375; local seed events - docs/SUPERPROFILE_OPS.md; purchases without a product are stored, not rejected - review fixes: bad-secret rate limit, lower(order_id) index, SuperProfile revenue in insights Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…I-only null boundingBox) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
SuperProfile as the only ticket checkout (P1) + CI + reconciliation
…, de-flake wizard e2e; preview audit - feeds: undici Agent with a validating connect.lookup so a rebound DNS answer can never be the address we connect to; isPrivateIp on net.BlockList incl. NAT64/6to4/Teredo/doc/site-local ranges - session: refuse (503) before inserting a user_sessions row when SESSION_SECRET is missing - checkout: a started multi-day event can no longer be bought via /checkout/:slug (same rule as free tiers) - e2e: poll wizard control measurements across autosave re-renders (fixes launch-mvp CI run 40938995707) - engines.node pinned to 24.x; undici 7.30.1 (exact) - docs/PREVIEW_RECOVERY_AUDIT.md: git/Vercel/Neon findings, test evidence, PASS/FAIL/BLOCKED matrix Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… for this branch; zod v4 plan - createFeedDispatcher(lookup) so a test can pin to a local HTTPS server: right hostname 200, wrong hostname ERR_TLS_CERT_ALTNAME_INVALID, untrusted issuer refused - safeFetch: https->http redirect refused before the http request; loops capped at 4 - vercel.json: git.deploymentEnabled false for fix/preview-recovery-audit only, so pushing runs CI without building a Preview on the shared Production DB - audit doc: follow-up verification, zod 4 trial and migration plan Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tion gate, telegram silencing & audit update
…logging, and Vercel preview protection
Fix PR #9 CI, MCP security and deployment blockers
Prepare StrangersMeetup website and MCP for cloud deployment
fix(deploy): align Render Docker runtime, Playwright base image, and .dockerignore
…igation, and empty states
feat(ux): enhance event discovery search, card ergonomics, mobile navigation, and empty states
… venue presentation, instant discovery, and preview reviewer testing
…wer rate limiting
feat(attendee): synthetic preview seeding, free booking flow, mystery venue presentation, and instant discovery
feat(organiser): Polish organiser onboarding, event wizard and dashboard
…rational workflows
…heck-in - Implement comprehensive organiser workspace: event overview, readiness checklist, ticket inventory & capacity, attendee lookup & cancellations, and event announcements. - Add event-scoped staff roles and permissions: organiser, event_manager, door_staff, guest_list_manager, assistant with tokenized invites, immediate access revocation, and audit logging. - Build server-authoritative QR ticket engine: HMAC-SHA256 signed payloads (NLZ1:<ticketCode>:<HMAC>) bound to event and confirmed booking without attendee PII leakage. - Deliver mobile-first door check-in scanner: camera BarcodeDetector/canvas detection, manual ticket code fallback, atomic duplicate scan and replay prevention, attendance KPIs, and scan history. - Add database migration 019: event_team audit enhancement, event_staff_invites, tickets, ticket_scans, event_announcements, and existing booking ticket backfill. - Comprehensive automated test suite in test/m6-organiser-workspace.test.js with 15/15 passing tests and 642 passing regression tests. - Update docs/PROJECT_STATE.md and add arch/ORGANISER_WORKSPACE_AND_QR_CHECKIN.md.
… empty state locator in organiser overview
…aved events & hub
…hours & operational comms
…nd roadmap update
…dit, mobile tap target remediation and preview automation runbook
…cceptance checklist
…ent preview configuration
multi-role-acceptance.spec.js (M9) submits real venue leads in the desktop and mobile projects; with one shared e2e database those rows reach the responsive project, so the 'Status of venue lead' combobox matched 3 rows and failed strict mode at every viewport. Target the seeded lead's row. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ENABLE_LIVE_PAYMENTS used to open both the SuperProfile link-out and the PhonePe/UPI checkout. It now gates only the SuperProfile hosted link-out. A new UPI_CHECKOUT_ENABLED flag (default false, exact 'true' only) gates every UPI surface: the /checkout/:slug/upi page, intent creation, status polling, guest claim (HTTP and Telegram), and the PhonePe webhook. Each returns 404 while off, and the generic /checkout/:slug link falls back to the event page instead of handing off to the closed UPI page. Refunds of already-captured payments are deliberately not gated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ePe currency note, release packet - DNS_AND_EMAIL_ROUTING: Vercel records DNS-only (grey cloud), apex A + www CNAME from Vercel Settings > Domains, www -> apex redirect in Vercel; drop proxied/Full (Strict) steps. DMARC starts at p=none with rua, then quarantine, then reject. Email Routing is receive/forward only; "send as" options stated. Cites current Vercel and Cloudflare docs. - PREVIEW_LOGIN (new): test bot bound to the launch-mvp branch alias, production bot to nightlifez.com; exact env names the code reads. - UPI_PROVIDER_READINESS: note that the payload-currency rule makes PhonePe v1 confirmations impossible by design; revisit if onboarded. - PRODUCTION_RELEASE_PACKET (new): migrations 010-020 and which touch existing rows, Gate 3 procedure, Production env names, release and rollback steps. - PROJECT_STATE: consolidation SHAs, superseded PRs, migrations per environment, owner gates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fix(payments): separate UPI_CHECKOUT_ENABLED from ENABLE_LIVE_PAYMENTS (S3a)
docs(launch): DNS/email corrections, Preview login, PhonePe note, release packet (S3b–d, S5)
Co-Authored-By: Claude Opus 5.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.
Production Release: Free-Only MVP
This PR releases the completed Free-Only MVP marketplace journey to Production.
1. Migrations to Execute on Empty Production DB
During the Vercel production build,
scripts/migrate.jswill execute migrations 003–011 under advisory lockpg_advisory_xact_lock(hashtext('sm_migrations')):003_identity_events_bookings.sql: Users (Telegram identity, 21+ flag), events, ticket tiers, bookings, and media.004_payments_entitlements_admin.sql: Payments, entitlements, admin users, audit logging.005_audit_and_indexes.sql: Performance indexes and operational audit logs.006_stars_and_reconciliation.sql: Telegram Stars and financial reconciliation schema.007_user_personas.sql: User status and persona tracking.008_admin_superprofile_orders.sql: SuperProfile orders tracking and admin audit.009_guest_ticketing_and_mystery_venues.sql: Guest ticketing, tier capacity, mystery venue redaction.010_host_applications.sql: Host onboarding applications and approval queue.011_trust_safety_remediation.sql: Website safety reporting (reports), attendee mutual blocking (user_blocks), moderation lifecycle.2. Environment Variables Required for Production
The following environment variables must be configured in Vercel Production before merging:
DATABASE_URL: Production connection pooler string (Configured)DATABASE_URL_UNPOOLED: Production direct unpooled string (Configured)TELEGRAM_BOT_TOKEN: Canonical bot token for HMAC login verification (Configured)SESSION_SECRET: High-entropy string (≥ 32 bytes) for HMAC session cookie signingCRON_SECRET: High-entropy token (≥ 16 bytes) for authenticated Vercel cron jobsADMIN_BOOTSTRAP_TELEGRAM_ID: Owner's Telegram numeric User ID for initial super-admin accessPUBLIC_SITE_URL: Canonical site URL (https://strangersmeetup-virid.vercel.app)LEGAL_ENTITY_NAME: Registered business entity name (Consumer Protection Rules 2020)GRIEVANCE_OFFICER_NAME: Appointed Grievance Redressal Officer (IT Rules 2021)GRIEVANCE_EMAIL: Official grievance officer contact email3. Rollback Plan
5c6652aproduction deployment.