A web3 online store deployed on the Celo blockchain, featuring a loyalty program that attracts and retains customers.
MiniStore offers a user-friendly online shopping experience, store management, and loyalty management. It has an admin dashboard which provides comprehensive store management, where the admin can add products, see and withdraw the revenue the store has made, and launch loyalty programs. For the loyalty feature, customers are rewarded for various actions such as placing orders, engaging with the store brand on their socials, connecting their socials/creating an account, and through referrals. Rewards include coupons, discounts, free shipping, and many more.
- Solidity
- Hardhat
- JavaScript & TypeScript
- React
- Next.js
- TypeScript
- Tailwind CSS
- Shadcn/ui
- Viem & Wagmi: Libraries for smart contract interaction
- Pinata: IPFS product images management
To set up MiniStore, follow these steps:
- Clone the repository:
git clone https://github.com/johnnjuki/ministore.git
- Install dependencies:
npm install
in bothpackages/hardhat
andpackages/react-app
- In the hardhat directory, run
npx hardhat run scripts/deploy.ts --network alfajores
to deploy to Celo testnet and--network celo
to deploy to Celo mainnet. - Set up the environment variables: Create a
.env
file in the root hardhat and react-app directories and refer to the.env.example
files for the required variables. - Start the development server in react-app directory:
npm run dev
To use MiniStore, you can check the demo or follow these steps:
- Visit the admin dashboard: Navigate to
http://localhost:3000/admin
. - Manage products: Add products from the admin dashboard.
- Place an order on the store.
- View and withdraw the revenue generated by the store in the admin dashboard.
- Launch loyalty programs: Create and manage loyalty programs to reward customers for various actions.
The most significant addition to our roadmap is transforming MiniStore into a comprehensive e-commerce builder app on MiniPay. This will empower MiniPay users to establish their own online stores seamlessly, leveraging the robust features and functionalities of MiniStore.
Adding more ways MiniPay users can reward their most loyal customers. One way already implemented, but working on embedding it to the MiniStore app, is tracking the most active customer and distributing rewards. This implementation uses Olas and SubQuery, and you can find the SubQuery indexer here.