Demo to subscription save state #32

Open
opened 2026-01-08 02:02:35 +01:00 by myrmidex · 0 comments
myrmidex commented 2026-01-08 02:02:35 +01:00 (Migrated from codeberg.org)

When a demo user subscribes to SaaS, allow them to import their demo data into their new paid account.

Flow:

  1. Demo: user selects what to export (users, dishes, scheduled-user-dishes)
  2. Demo: POST JSON payload to saas.app/register/demo
  3. SaaS: store payload in session, show registration form
  4. User completes registration and payment
  5. SaaS: on successful payment, validate/sanitize JSON, import into account

Demo side:

  • Export selection UI (checkboxes for users/dishes/schedules)
  • Serialize selected data as JSON
  • POST form to SaaS /register/demo endpoint

SaaS side:

  • New route: POST /register/demo
  • Store payload in session
  • After payment success: validate JSON structure, sanitize all fields, import data
  • Handle import errors gracefully (partial import OK, log failures)

Notes:

  • No encryption/signing needed - treat payload as untrusted user input
  • Import only happens after successful payment
  • Standard input validation on all imported fields
When a demo user subscribes to SaaS, allow them to import their demo data into their new paid account. Flow: 1. Demo: user selects what to export (users, dishes, scheduled-user-dishes) 2. Demo: POST JSON payload to saas.app/register/demo 3. SaaS: store payload in session, show registration form 4. User completes registration and payment 5. SaaS: on successful payment, validate/sanitize JSON, import into account Demo side: - Export selection UI (checkboxes for users/dishes/schedules) - Serialize selected data as JSON - POST form to SaaS /register/demo endpoint SaaS side: - New route: POST /register/demo - Store payload in session - After payment success: validate JSON structure, sanitize all fields, import data - Handle import errors gracefully (partial import OK, log failures) Notes: - No encryption/signing needed - treat payload as untrusted user input - Import only happens after successful payment - Standard input validation on all imported fields
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: dish-planner/app#32
No description provided.