popshop* is a platform that enables anyone to create onchain shopping experiences using incentive strategies. These are represented as extensible contracts and attachable to products. This allows open experimentation with different models and keeps the platform flexible.
Why Onchain Shopping
Customizable strategy types
Interesting strategies implemented
popshop* was inspired by the idea of pop-up shops, like the ones at night markets or bazaars. I wanted it to be fun, creative, and highly customizable. Instead of implementing strategies in a hard-coded/restrictive manner, I focused on extensibility, creating building blocks and interfaces for shop owners to design their own strategies.
One challenge was balancing UX and composability for permission management. I wanted strategies to be flexible, composable and modular smart contracts, but also allow admin teams to manage shop updates and strategy configurations in the popshop* dashbord, like extending a time-based discount or increasing discounts for certain buyers.
I decided to associate strategies deployed via the UI to individual shops. This allows us to reuse the shop admin permission model for strategy updates and simplify UX. We can deploy and manage strategies via the UI, but they can't be reused in other shops. For example, a band with a discount strategy for their music NFT holders might need a new merch shop for each concert. Using the popshop UI, they must recreate the strategy for each shop. This approach applies only to strategies launched through the app but makes the popshop management dashboard UX cleaner. I kept the interfaces flexible so you can still deploy your own strategies outside of popshop* and attach them anywhere :>
Another challenge was order and product data management. Typically, we'd use an indexer and query events to track user purchases and product status changes. Since shops are individual contracts deployed via a factory and registered in a registry, the addresses of these sub-contracts may not be known upfront, and many contracts can be created over time. We need a dynamic approach to indexing, such as data source templates. To speed up delivery and reduce infra/backend indexing implementations, I managed more state than necessary in the contract. This is not ideal and limits UI capabilities but makes it less centralized.
Tracks Applied (4)
COMMERCE with Shopify
Technologies used
Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.
Discussion