<story><title>Trianglify.io – Low Poly Pattern Generator</title><url>https://trianglify.io/</url></story><parent_chain><item><author>qrohlf</author><text>One thing that folks may find interesting about this project on a technical level is that it&amp;#x27;s fully stateless including the backend that&amp;#x27;s responsible for interacting with Stripe Checkout, processing payments, and sending emails with receipts and links to re-download patterns.&lt;p&gt;The thing that makes that possible is that I&amp;#x27;m using a seedable PRNG for the pattern generation and have a custom serialization format for all of the possible pattern parameters. This means that any pattern can be represented by a single short string like `w:1440!h:900!x:random!v:0.63!c:0.06!s:9gjk5s!f:sp!i:0.30` and reproduced with 100% accuracy.&lt;p&gt;That means instead of a database, I can just store the entire purchased pattern directly within the Stripe transaction within the `client_id` field using this compressed representation. Then it&amp;#x27;s just a matter of reading it back from the Stripe API when I get the &amp;quot;purchase completed&amp;quot; webhooks in order to build the correct attachments and send the customer their assets via email. This keeps my own service totally stateless &amp;amp; database-free, and also has the very nice property of allowing me to quickly and easily access the pattern by copy-pasting the client-id from the Stripe dashboard if I ever need to grab it for customer service reasons!</text></item></parent_chain><comment><author>josiahpeters</author><text>I know that people are beating you up over the price, but this is great.&lt;p&gt;1. Someone could generate the same asset for themselves using your open source library. Which is great for someone who has time over budget.&lt;p&gt;2. You are providing value in your packaging of that time savings.&lt;p&gt;3. You created a very cheap way to offer this using server less and stateless. Props to you for making something that is financially sustainable for a long time.&lt;p&gt;Number 3 is the most interesting of the above. That’s no easy feat and I applaud you for it.</text></comment>
<story><title>Trianglify.io – Low Poly Pattern Generator</title><url>https://trianglify.io/</url></story><parent_chain><item><author>qrohlf</author><text>One thing that folks may find interesting about this project on a technical level is that it&amp;#x27;s fully stateless including the backend that&amp;#x27;s responsible for interacting with Stripe Checkout, processing payments, and sending emails with receipts and links to re-download patterns.&lt;p&gt;The thing that makes that possible is that I&amp;#x27;m using a seedable PRNG for the pattern generation and have a custom serialization format for all of the possible pattern parameters. This means that any pattern can be represented by a single short string like `w:1440!h:900!x:random!v:0.63!c:0.06!s:9gjk5s!f:sp!i:0.30` and reproduced with 100% accuracy.&lt;p&gt;That means instead of a database, I can just store the entire purchased pattern directly within the Stripe transaction within the `client_id` field using this compressed representation. Then it&amp;#x27;s just a matter of reading it back from the Stripe API when I get the &amp;quot;purchase completed&amp;quot; webhooks in order to build the correct attachments and send the customer their assets via email. This keeps my own service totally stateless &amp;amp; database-free, and also has the very nice property of allowing me to quickly and easily access the pattern by copy-pasting the client-id from the Stripe dashboard if I ever need to grab it for customer service reasons!</text></item></parent_chain><comment><author>mr-karan</author><text>Quite a cool approach. Although only one downside I see here is that you&amp;#x27;re just relying on Stripe to let you access order history? What if they don&amp;#x27;t let you access this data via APIs for data older than a certain time period? Or is that not much of a concern here?</text></comment>