First off: I also asked this question on pm.stackexchange.com, but was not really sure if it belongs there. I know it is rather technical and rather basic.
If you know a place this would fit in better let me know :-)
I am setting up a Print-On-Demand shop project and just want to ask if my way of handling all the transactions is okay, what would you improve, what would you do different.
Techstack:
- Hosting: Netlify
- Frontend: Gatsby + React
- Customizing Print in the Client: Paper.js
- Checkout: Snipcart
- Printing: Printful API
- Backend/OrderLogistics/Database: Express.js + MongoDB + Netlify Lambda Functions
So the general process is:
- User visits website and edits a design to his liking. The editing options are rather limited, the custom design in displayed via Paper.js
- User clicks "Checkout Now"-Button
- Clientside generates SVG from the Paper.js canvas and the svg + all customization parameters are sent to backend
- Backend stores everything in DB with a unique id
- Unique id is sent back to client
- Snipcart client process is started
- User enters shipping + payment data and confirms purchase
- Payment is processed by Snipcart, unique id + shipping info is sent to Snipcart via API
- Snipcart calls backend webhook when the payment is completed transmitting unique it + shipping info
- Backend looks up design in database based on unique id and builds product in Printful API
- Printful creates order
- I manually doublecheck snipcart backend + printful order, look if everything is as expected and if so confirm the order
- Product is shipped by Printful
I know it is hard to say much about the process without seeing the actual implementation, but just from the basic steps is there anything I should do completely different?
Thank you in advance :-)