Growing up, I watched my family and community participate in informal savings circles known locally as Jam'iyya. It was a beautiful system based on trust: a group of people contributing a fixed amount monthly, with one person taking the lump sum each month to fund a wedding, a business, or an emergency.
However, the traditional system had flaws. It relied on manual record-keeping in physical notebooks, was limited to people who lived nearby, and placed a huge burden on a single administrator to hold large sums of cash.
Baraka Circle was born from a desire to digitize this "Social Safety Net." I wanted to make it transparent, secure, and accessible to the digital generation without compromising on the core values of community, trust, and interest-free cooperation.
How I Built It I architected Baraka Circle as a Web2.5 application, bridging the usability of traditional web apps with the transparency of the blockchain.
The Stack Frontend: Built with SvelteKit and Tailwind CSS. I used shadcn-svelte to create a clean, "white-first" aesthetic that feels professional and calm, crucial for a financial app.
Backend & Persistence: Firebase (Firestore & Auth) handles user identity, circle metadata, and real-time activity feeds.
Blockchain Layer: Sepolia Testnet using Ethers.js. Unlike traditional apps that just log numbers, Baraka Circle executes real value transfers on-chain.
Core Logic: I implemented a robust rotation algorithm in TypeScript to ensure that payouts are distributed fairly. The system automatically calculates who owes whom, guaranteeing that by the end of the cycle, every member has contributed and received the exact same amount—strictly zero interest.
Challenges I Faced
- The "Web2 vs. Web3" State Sync One of the hardest technical challenges was synchronizing the Blockchain State (what happens on Ethereum) with the Application State (what is stored in Firestore).
The Problem: A user might send ETH via MetaMask, but close their browser before our database knows about it.
The Solution: I implemented an "Optimistic UI" approach combined with transaction receipt monitoring. The app listens for the transaction hash immediately, logs a "pending" state to the database, and then updates it to "confirmed" once the blockchain processes it.
- Handling Logic "Edge Cases" A circle can have up to 20 members. Ensuring that the rotation logic generated a perfect schedule—where no two people are paid on the same day and no one is skipped—was tricky. I wrote extensive tests to guarantee that every generated schedule is valid and that every member gets exactly one turn per cycle.
What I Learned
Ethical Engineering: Building a product with strict constraints (No Interest, No Admin Fees) forced me to think creatively about value. The value isn't in generating yield; it's in providing liquidity and access to capital when people need it most.
Trust Signals: I learned that in Fintech, design is a feature. The UI had to look polished to reassure users that their funds were safe.
Built With
- chainlink
- ethers.js
- firebase
- javascript
- metamask
- solidity
- svelte
- tailwind
- typescript
- vite
Log in or sign up for Devpost to join the conversation.