Separate registration for external signups #33

Closed
opened 2026-01-08 02:06:48 +01:00 by myrmidex · 1 comment
myrmidex commented 2026-01-08 02:06:48 +01:00 (Migrated from codeberg.org)

Replace the current two-step flow (register → subscribe) with a single combined form for new subscribers.

Route: /subscribe (or /subscribe/demo when coming from demo with import data)

Form fields:

  • Email
  • Password
  • Confirm password
  • Plan selection (if multiple plans)
  • Stripe Payment Element

Single submit button: "Subscribe & Create Account"

On submit:

  1. Validate email/password
  2. Create user account
  3. Process Stripe payment
  4. On success: activate subscription, import demo data if present, redirect to app
  5. On payment failure: account exists but inactive, show error, allow retry

Edge cases:

  • Email exists → show login link
  • Payment fails → account created but unsubscribed, allow retry or send recovery email
  • Session expires with demo data → lose import, can still subscribe normally
  • Cleanup incomplete signups after 24h (optional)

Existing flows:

  • Keep /register for free tier/trial if applicable
  • /login unchanged
  • Remove standalone subscription page (merge into this)

Demo variant:
When POST arrives from demo with JSON payload, store in session and show same form. Import data after successful payment.

Replace the current two-step flow (register → subscribe) with a single combined form for new subscribers. Route: /subscribe (or /subscribe/demo when coming from demo with import data) Form fields: - Email - Password - Confirm password - Plan selection (if multiple plans) - Stripe Payment Element Single submit button: "Subscribe & Create Account" On submit: 1. Validate email/password 2. Create user account 3. Process Stripe payment 4. On success: activate subscription, import demo data if present, redirect to app 5. On payment failure: account exists but inactive, show error, allow retry Edge cases: - Email exists → show login link - Payment fails → account created but unsubscribed, allow retry or send recovery email - Session expires with demo data → lose import, can still subscribe normally - Cleanup incomplete signups after 24h (optional) Existing flows: - Keep /register for free tier/trial if applicable - /login unchanged - Remove standalone subscription page (merge into this) Demo variant: When POST arrives from demo with JSON payload, store in session and show same form. Import data after successful payment.
Owner

Superseded by the FOSS pivot. Closing — see #37 (retire SaaS mode + subscription billing) and #38 (retire demo mode).

Superseded by the FOSS pivot. Closing — see #37 (retire SaaS mode + subscription billing) and #38 (retire demo mode).
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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: lvl0/dishplanner#33
No description provided.