[Accounting] [Webshop] - Implement webshop #1141

Open
opened 2025-03-12 08:34:23 +01:00 by muppeth · 5 comments
Owner

Create procedures and automations to deploy and maintain the webshop:

  • Create procedure for updating code base
  • Create procedure to backup db and code base
  • Create Ansible role to deploy or configure wordpress (or at least db and nginx as the MVP)
  • Setup all needed plugins
  • Configure Webshop
    • Prepare and setup products flow (merch)
    • Prepare and setup subscriptions flow (storage)
  • Configure Donation page
    • Allow one time donations
    • Allow annual (monthly / yearly) donations
    • Add reward collection
Create procedures and automations to deploy and maintain the webshop: - [ ] Create procedure for updating code base - [ ] Create procedure to backup db and code base - [ ] Create Ansible role to deploy or configure wordpress (or at least db and nginx as the MVP) - [ ] Setup all needed plugins - [x] Configure Webshop - [x] Prepare and setup products flow (merch) - [x] Prepare and setup subscriptions flow (storage) - [x] Configure Donation page - [x] Allow one time donations - [x] Allow annual (monthly / yearly) donations - [ ] Add reward collection
muppeth added the
administration
finances
labels 2025-03-12 08:35:24 +01:00
muppeth added the
🦾 4
sysadmin
labels 2025-03-14 14:02:45 +01:00
muppeth added this to the Currently working on milestone 2025-03-14 14:02:57 +01:00
muppeth self-assigned this 2025-03-14 14:03:03 +01:00
Owner

@muppeth I've checked wordpress, I see that you've already managed to add Configure Donation page as listed on the first post of this ticket. Is there something that is not working as it should?

@muppeth I've checked wordpress, I see that you've already managed to add `Configure Donation page` as listed on the first post of this ticket. Is there something that is not working as it should?
Author
Owner

Yeah currently I am working (finalizing) checkout page stuff. basically the idea is to hook it up to keycloak which I already did. But wordpress is junk and even though to login to wordpress you could be auto redirected to keycloak, woocommerce has its own login page (even though uses the same accounts so should just use the same page), and doesn't recognize keycloak. So I did some php snippet code to do the redirect. However, this should only redirect to login page as in require login only when user buys a subscription (for example storage) as it needs to be an existing user and also this will enable us to auto process storage requests without manual admin intervention. But, when buying merch or donating (one time donation), this should not be required as we want non-disroot folk to buy stuff or donate without connecting donation to an account.
And so I am currently working on filter to redirect to keycloak login when user buys subscription (or anything that requires to login with disroot account) and when not just provide required fields. So this is still pending work but I almost got it right, just needed to focus on other tasks and wanted to give myself few days away from that shitshow.

Yeah currently I am working (finalizing) checkout page stuff. basically the idea is to hook it up to keycloak which I already did. But wordpress is junk and even though to login to wordpress you could be auto redirected to keycloak, woocommerce has its own login page (even though uses the same accounts so should just use the same page), and doesn't recognize keycloak. So I did some php snippet code to do the redirect. However, this should only redirect to login page as in require login only when user buys a subscription (for example storage) as it needs to be an existing user and also this will enable us to auto process storage requests without manual admin intervention. But, when buying merch or donating (one time donation), this should not be required as we want non-disroot folk to buy stuff or donate without connecting donation to an account. And so I am currently working on filter to redirect to keycloak login when user buys subscription (or anything that requires to login with disroot account) and when not just provide required fields. So this is still pending work but I almost got it right, just needed to focus on other tasks and wanted to give myself few days away from that shitshow.
Author
Owner

Ok. I think it works now. The current flow is:
If user selects merch or one time donation, there is no need to create account as user is treated as guest on checkout. Since its goods that require shipping shipping related fields are required.

If user selects subscription (eg. storage), he is redirected to login page that will point to keycloak requiring user to authenticate prior the checkout. In that way we serve subscription only to existing users. No address information is required apart from the needed by the payment processor (email, and name).

Will do some cleanup and move on with the work. I need to adjust the checklist on top.

Ok. I think it works now. The current flow is: If user selects merch or one time donation, there is no need to create account as user is treated as guest on checkout. Since its goods that require shipping shipping related fields are required. If user selects subscription (eg. storage), he is redirected to login page that will point to keycloak requiring user to authenticate prior the checkout. In that way we serve subscription only to existing users. No address information is required apart from the needed by the payment processor (email, and name). Will do some cleanup and move on with the work. I need to adjust the checklist on top.
Author
Owner

One thing to still look into is possibility to remove a frebie. Currently freebie (stickers) is added when user donates over certain amount ( I think for testing I set it to 50euro). However this should be optional and user should be able to remove it.

I also wonder how to treat custom request. It's kinda a freebie for donation but I was wondering if we should create a separate product out of it. I would still have donation slider but would apply etc. (it would still be donation), but we could put custom fields in checkout (like domain name for example). Also we could decide to give domain linking for reoccurring donations and not single donation. @Disroot/Owners any opinions on this?

One thing to still look into is possibility to remove a frebie. Currently freebie (stickers) is added when user donates over certain amount ( I think for testing I set it to 50euro). However this should be optional and user should be able to remove it. I also wonder how to treat custom request. It's kinda a freebie for donation but I was wondering if we should create a separate product out of it. I would still have donation slider but would apply etc. (it would still be donation), but we could put custom fields in checkout (like domain name for example). Also we could decide to give domain linking for reoccurring donations and not single donation. @Disroot/Owners any opinions on this?
Owner

Once it is made possible to make t optional, I think stickers should be an opt-in and not an opt-out, so like a checkbox that appear after certain amount is donated, or optional fields for address in case someone wants stickers.

As for custom domain, we decided a while ago to move from recurring donations to any type of donation, since setting it up is a one time process and it doesn't take significant resources. So what would be the reason to change back?

Once it is made possible to make t optional, I think stickers should be an opt-in and not an opt-out, so like a checkbox that appear after certain amount is donated, or optional fields for address in case someone wants stickers. As for custom domain, we decided a while ago to move from recurring donations to any type of donation, since setting it up is a one time process and it doesn't take significant resources. So what would be the reason to change back?
Sign in to join this conversation.
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference: Disroot/Disroot-Project#1141
No description provided.