Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/lbc 347 new member signup flow #471

Merged
merged 4 commits into from
Nov 24, 2023

Conversation

janbaykara
Copy link
Member

This PR adds a new step-by-step signup flow.

Copy link

linear bot commented Nov 24, 2023

LBC-347 New member signup flow

https://whimsical.com/new-member-signup-flow-77Q4nktuf9aXHcDDh8FYp8

Current modles:

  • MembershipPlanPage (Solidarity, All Books, Selected Books, Community)
    • deliveries_per_year
    • MembershipPlanPrice(s)
      • price
      • interval
      • free_shipping_zones
      • products (n/a, Classic, Contemporary)
    • Upsell (from product to product)

New models:

  • MembershipPlanPage
    • title

    • rich text

    • USPs

    • deliveries_per_year

    • display_in_quiz_flow = False

    • syllabi

      (ManyToManyParentalKey -> Syllabus)

    • prices

      (ManyToManyParentalKey -> MembershipPlanPrice)

  • SyllabusPage
    • title
    • rich text
    • book variants (for book display)
    • stripe product ID
  • MembershipPlanPrice
    • title
    • rich text
    • USPs
    • price
    • interval
    • free_shipping_zones

New view system:

JS or Python? If JS, use Alpine to:

  • Query JSON object of plans, syllabuses, prices
  • Simple transition is state machine, then could optionally add in some animation later

If Python (probably simpler):

  • CreateMembershipView (alias) ->
  • SelectDeliveriesView
    • List of MembershipPlanPage.filter(display_in_quiz_flow=True)
  • SelectSyllabusView
    • TEST: (if only one syllabus, send straight on to shipping)
  • SelectShippingView
    • Cannibalise ShippingForProductView to just get the country
  • SelectPaymentPlanView
    • Requires delivery plan + shipping country
  • SelectDonationView
  • — SignUpView (if not signed up) —
  • StripeCheckoutView
    • Requires payment plan + shipping country + donation config
  • WelcomeView

How to persist data across the signup flow?

SESSION_ENGINE="django.contrib.sessions.backends.signed_cookies"

and

request.session.get("signup_flow__[VARIABLE_NAME]", False)

Tasks

  • Add models and fields
  • Create views
  • Create URL endpoints
  • Create template stubs
  • Fill templates with something readable
  • Add donation line item
  • Configure stripe checkout

Signup flow

  • Progress bar
  • Fix shipping on Stripe

Deliveries

  • Display UK p&p up front
  • Fill out the prices
  • Add a 'this will cancel your current sub' notice
  • Display benefits

Syllabus

  • For a single syllabus
    • Change title from "Pick" to "Here is your syllabus"
    • Auto-select the only one
  • Display the books?
  • syllabus_page.html

Screenshot 2023-11-23 at 10.39.57.png

Shipping

  • Light explainer text
  • Remove "Shipping country" label from field

Billing

  • £Full Price (inc shipping on new line)
  • Annual price should include (£X/month paid annually) plus shipping plus total price
  • Display benefits
  • Display discount calculation versus monthly

Donation

  • Add explainer text
  • Add a 'continue without donation' option

@janbaykara janbaykara merged commit f33b3c2 into main Nov 24, 2023
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant