Separate registration for external signups #33

Open
opened 2026-01-08 02:06:48 +01:00 by myrmidex · 0 comments
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.
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#33
No description provided.