[ ] When a user the Get Started action button in the pricing table we'll re-direct them to the registration route. We can use a URL param such as ?subscription-type=premium to make an API call to the server after they accept Terms and Conditions and click on "Continue". The server will create a checkout session using the user's email
The user can enter their payment info
When they have successfully paid they'll get re-directed to the main page of the app portion of the webapp
cancel brings them back to the subscription manage route. A note cancelled or abandoned sessions later.
[ ] free trial signup will be similar except
request will be made to server to create a customer with a free subscription
user gets re-direct to the authenticated portion of the app
@ChengCalvin I believe the best way to make sure that we can fetch stripe information for the authenticated user is to do the following
have a route that has a /signup/create?subscription-type=["free-trial" | "premium" ] "team" in a future iteration
for free-trial we can reach out to the server to create a customer account, when you get a 200 from the server re-direct them to /app, the homepage for our application. /app will have a stripe profile context, you'll have to fetch the user's most recent subscription in order to
queries for the user's payments on file, with Stripe, and such can be done in the appropriate subroute
for premium you can use the flow above and when the user is re-directed to /app you query for their subscription as well. If the user's form of payment failed, for whatever reason, or they have cancelled, we can reuse the banner to show: "Your form of payment was rejected by Stripe", "You have access until DD-MM-YYYY"
I think this is a good way to make sure that you get valid data when you reach out to Stripe from the client. We can still wrap the entire application with an AuthProvider for firebase to do stuff like hide the menu and show a "Go to dashboard" button when the user is authenticated and they are looking at the landing pages.
1) If the user signs up for a free account, you can redirect them to the portion of the app where we expect them to have Stripe profile and queries to Stripe will return data.
2) If the user signs up for premium they'll be re-directed to a checkout UI hosted by Stripe. On success they'll be redirected them to the portion of the app where we expect them to have Stripe profile and queries to Stripe will return data.
3) If the user goes to the checkout session and abandons, goes back to our app this is when they don't have an account with stripe because of the abandoned session. In this case the context that takes care of stripe subscription can reach out to our server and we'll create a free trial for users that abandon checkout.
Definition of Done
Describe what it takes for this task to be considered as done. Be as specific as possible. Anyone should be able to pick up this task and know exactly what to do.
Definition of Ready
[ ] When a user the
Get Started
action button in the pricing table we'll re-direct them to the registration route. We can use a URL param such as?subscription-type=premium
to make an API call to the server after they acceptTerms and Conditions
and click on "Continue". The server will create a checkout session using the user's email[ ] free trial signup will be similar except
look at signin/signup
@ChengCalvin I believe the best way to make sure that we can fetch stripe information for the authenticated user is to do the following
/signup/create?subscription-type=["free-trial" | "premium" ]
"team" in a future iteration200
from the server re-direct them to/app
, the homepage for our application./app
will have a stripe profile context, you'll have to fetch the user's most recent subscription in order topremium
you can use the flow above and when the user is re-directed to/app
you query for their subscription as well. If the user's form of payment failed, for whatever reason, or they have cancelled, we can reuse the banner to show: "Your form of payment was rejected by Stripe", "You have access until DD-MM-YYYY"I think this is a good way to make sure that you get valid data when you reach out to Stripe from the client. We can still wrap the entire application with an AuthProvider for firebase to do stuff like hide the menu and show a "Go to dashboard" button when the user is authenticated and they are looking at the landing pages. 1) If the user signs up for a free account, you can redirect them to the portion of the app where we expect them to have Stripe profile and queries to Stripe will return data. 2) If the user signs up for premium they'll be re-directed to a checkout UI hosted by Stripe. On success they'll be redirected them to the portion of the app where we expect them to have Stripe profile and queries to Stripe will return data. 3) If the user goes to the checkout session and abandons, goes back to our app this is when they don't have an account with stripe because of the abandoned session. In this case the context that takes care of stripe subscription can reach out to our server and we'll create a free trial for users that abandon checkout.
Definition of Done
Describe what it takes for this task to be considered as done. Be as specific as possible. Anyone should be able to pick up this task and know exactly what to do.
Additional Notes
Add any relevant details here.