Latest commit

History

40 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Decentralized Chama Logo

Decentralized Chama (DChama)

Digitizing Trust. Automating Prosperity.

Next.jsTailwind CSSSupabaseSolidityEthereumKRNL

OverviewKey FeaturesTech StackGetting StartedArchitecture


Overview

Decentralized Chama (DChama) is a modern financial platform that brings traditional Rotating Savings and Credit Associations (ROSCAs) onto the blockchain. By leveraging smart contracts and real-time data synchronization, DChama automates the "Merry-Go-Round" cycle—ensuring transparency, security, and trustless execution for all members.

DChama solves the classic problems of informal groups:

  • Trust: Funds are held in a non-custodial smart contract vault.
  • Transparency: Every contribution and payout is recorded on-chain.
  • Automation: KRNL orchestration ensures payouts happen strictly according to schedule.

How It Works

DChama simplifies the traditional Chama experience into a digital, automated flow:

  1. Connect Wallet: Users connect their digital wallet (like MetaMask) to the app. This wallet acts as their identity and bank account.
  2. Create or Join: A user can create a new Chama group (setting the contribution amount and cycle) or join an existing one using a Group ID.
  3. Contribute: Members contribute funds (ETH) directly to the smart contract vault. These funds are locked and safe.
  4. Rotate & Receive: Based on the predetermined schedule, the system automatically enables the next member in line to receive the pooled funds.
  5. Track: Everything is visible on the dashboard—who paid, who owes, and whose turn it is next.

Current Network

DChama is currently deployed on the Sepolia Testnet for development and testing purposes.

  • Network: Sepolia Testnet (Ethereum)
  • Currency: ETH (test tokens)
  • Chain ID: 11155111
  • Get Test ETH: Sepolia Faucet

Note: This is a testnet deployment. Never use real mainnet funds with this application.

Deployed Contracts

The following smart contracts are currently deployed on Sepolia Testnet:

You can view all transactions, contract code, and events on Sepolia Etherscan using the links above.

Key Features

  • 🏦 Smart Vaults: Funds are secured in the ChamaCore contract via the ChamaFactory pattern, not a personal bank account.
  • 🔄 Automated Payouts with KRNL: The ChamaKernel uses the KRNL Protocol to orchestrate rotating payouts. It imposes checks (like solvency and time verification) off-chain before authorizing the on-chain release of funds, ensuring the rotation is tamper-proof.
  • 📊 Real-Time Dashboard: A responsive UI powered by Supabase for instant feedback, synchronized with on-chain data.
  • 📈 Live Contribution Charts: Visual trends showing your group's contribution history with real blockchain data.
  • 👛 Wallet Integration: Seamless connection with MetaMask (and compatible wallets) for ETH transactions.
  • 🔌 Disconnect Wallet: Easy wallet management with dropdown controls.
  • 📱 Mobile First: Fully responsive design optimized for on-the-go management.
  • 🛡️ Dual-Write Architecture: Immediate UI updates coupled with immutable blockchain verification.

Tech Stack

Frontend

Backend & Data

  • Database: Supabase (PostgreSQL)
  • Authentication: Supabase Auth (Email/Password)
  • Indexing: Custom "Dual Write" logic (Frontend → Chain → DB)

Blockchain

  • Contracts: Solidity (compiled with foundry)
  • Network: Sepolia Testnet (Ethereum)
  • Orchestration: KRNL (Kernel) Protocol
  • Interaction: Ethers.js v6
  • Pattern: Factory Pattern (ChamaFactory creates ChamaCore instances)

Getting Started

Prerequisites

  • Node.js 18+
  • npm / pnpm
  • MetaMask installed with Sepolia testnet configured
  • Sepolia test ETH from a faucet

Installation

  1. Clone the repository

    git clone https://github.com/eugene-gabriel/decentralized-chama.git
    cd decentralized-chama
  2. Install dependencies

    npm install
    # or
    pnpm install
  3. Environment Setup Create a .env file in the root directory:

    NEXT_PUBLIC_SUPABASE_URL=your_supabase_urlNEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_keyNEXT_PUBLIC_CHAMA_CONTRACT_ADDRESS=your_factory_contract_addressNEXT_PUBLIC_KRNL_KERNEL_ADDRESS=your_kernel_contract_addressNEXT_PUBLIC_NETWORK=SEPOLIA
  4. Run Development Server

    npm run dev

    Open http://localhost:3000 to view the app.

  5. Connect MetaMask

    • Switch to Sepolia testnet in MetaMask
    • Get test ETH from Sepolia Faucet
    • Connect your wallet to the app

Architecture

1. Smart Contracts

The core logic uses a Factory Pattern:

  • ChamaFactory.sol: Creates and manages multiple Chama groups, emits GroupCreated events with sequential IDs.
  • ChamaCore.sol: The Vault. Stores funds, manages member registry, and tracks rounds for each group.
  • ChamaKernel.sol: The Brain. Validates off-chain logic (via KRNL) and authorizes ChamaCore to release funds.

2. Data Flow

To ensure a snappy UX without waiting for block confirmations for every read:

  1. Read: The UI fetches displayed data (Dashboard stats, Member lists, Contribution history) primarily from Supabase.
  2. Write: Critical actions (Create Group, Join Group, Contribute, Payout) are executed on the Blockchain.
  3. Sync: Successful on-chain transactions trigger updates to Supabase, keeping the two states in sync.

3. Recent Improvements

  • Real-Time Data Integration: All pages now display live blockchain and Supabase data
  • Dynamic Currency Handling: Automatically displays ETH for Sepolia
  • Interactive Dialogs: Functional "Make Contribution" and "Add Member" buttons
  • Contribution History Charts: Visual trends from real transaction data
  • Wallet Management: Disconnect wallet via dropdown menu

License

This project is licensed under the MIT License.

About

DChama is a decentralized financial platform that digitizes traditional Kenyan informal savings groups (Chamas) by using blockchain smart contracts to automate contributions, secure rotating payouts, and provide immutable, transparent record-keeping for all members.

Topics

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

40 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Decentralized Chama Logo

Decentralized Chama (DChama)

Digitizing Trust. Automating Prosperity.

Next.jsTailwind CSSSupabaseSolidityEthereumKRNL

OverviewKey FeaturesTech StackGetting StartedArchitecture


Overview

Decentralized Chama (DChama) is a modern financial platform that brings traditional Rotating Savings and Credit Associations (ROSCAs) onto the blockchain. By leveraging smart contracts and real-time data synchronization, DChama automates the "Merry-Go-Round" cycle—ensuring transparency, security, and trustless execution for all members.

DChama solves the classic problems of informal groups:

  • Trust: Funds are held in a non-custodial smart contract vault.
  • Transparency: Every contribution and payout is recorded on-chain.
  • Automation: KRNL orchestration ensures payouts happen strictly according to schedule.

How It Works

DChama simplifies the traditional Chama experience into a digital, automated flow:

  1. Connect Wallet: Users connect their digital wallet (like MetaMask) to the app. This wallet acts as their identity and bank account.
  2. Create or Join: A user can create a new Chama group (setting the contribution amount and cycle) or join an existing one using a Group ID.
  3. Contribute: Members contribute funds (ETH) directly to the smart contract vault. These funds are locked and safe.
  4. Rotate & Receive: Based on the predetermined schedule, the system automatically enables the next member in line to receive the pooled funds.
  5. Track: Everything is visible on the dashboard—who paid, who owes, and whose turn it is next.

Current Network

DChama is currently deployed on the Sepolia Testnet for development and testing purposes.

  • Network: Sepolia Testnet (Ethereum)
  • Currency: ETH (test tokens)
  • Chain ID: 11155111
  • Get Test ETH: Sepolia Faucet

Note: This is a testnet deployment. Never use real mainnet funds with this application.

Deployed Contracts

The following smart contracts are currently deployed on Sepolia Testnet:

You can view all transactions, contract code, and events on Sepolia Etherscan using the links above.

Key Features

  • 🏦 Smart Vaults: Funds are secured in the ChamaCore contract via the ChamaFactory pattern, not a personal bank account.
  • 🔄 Automated Payouts with KRNL: The ChamaKernel uses the KRNL Protocol to orchestrate rotating payouts. It imposes checks (like solvency and time verification) off-chain before authorizing the on-chain release of funds, ensuring the rotation is tamper-proof.
  • 📊 Real-Time Dashboard: A responsive UI powered by Supabase for instant feedback, synchronized with on-chain data.
  • 📈 Live Contribution Charts: Visual trends showing your group's contribution history with real blockchain data.
  • 👛 Wallet Integration: Seamless connection with MetaMask (and compatible wallets) for ETH transactions.
  • 🔌 Disconnect Wallet: Easy wallet management with dropdown controls.
  • 📱 Mobile First: Fully responsive design optimized for on-the-go management.
  • 🛡️ Dual-Write Architecture: Immediate UI updates coupled with immutable blockchain verification.

Tech Stack

Frontend

Backend & Data

  • Database: Supabase (PostgreSQL)
  • Authentication: Supabase Auth (Email/Password)
  • Indexing: Custom "Dual Write" logic (Frontend → Chain → DB)

Blockchain

  • Contracts: Solidity (compiled with foundry)
  • Network: Sepolia Testnet (Ethereum)
  • Orchestration: KRNL (Kernel) Protocol
  • Interaction: Ethers.js v6
  • Pattern: Factory Pattern (ChamaFactory creates ChamaCore instances)

Getting Started

Prerequisites

  • Node.js 18+
  • npm / pnpm
  • MetaMask installed with Sepolia testnet configured
  • Sepolia test ETH from a faucet

Installation

  1. Clone the repository

    git clone https://github.com/eugene-gabriel/decentralized-chama.git
    cd decentralized-chama
  2. Install dependencies

    npm install
    # or
    pnpm install
  3. Environment Setup Create a .env file in the root directory:

    NEXT_PUBLIC_SUPABASE_URL=your_supabase_urlNEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_keyNEXT_PUBLIC_CHAMA_CONTRACT_ADDRESS=your_factory_contract_addressNEXT_PUBLIC_KRNL_KERNEL_ADDRESS=your_kernel_contract_addressNEXT_PUBLIC_NETWORK=SEPOLIA
  4. Run Development Server

    npm run dev

    Open http://localhost:3000 to view the app.

  5. Connect MetaMask

    • Switch to Sepolia testnet in MetaMask
    • Get test ETH from Sepolia Faucet
    • Connect your wallet to the app

Architecture

1. Smart Contracts

The core logic uses a Factory Pattern:

  • ChamaFactory.sol: Creates and manages multiple Chama groups, emits GroupCreated events with sequential IDs.
  • ChamaCore.sol: The Vault. Stores funds, manages member registry, and tracks rounds for each group.
  • ChamaKernel.sol: The Brain. Validates off-chain logic (via KRNL) and authorizes ChamaCore to release funds.

2. Data Flow

To ensure a snappy UX without waiting for block confirmations for every read:

  1. Read: The UI fetches displayed data (Dashboard stats, Member lists, Contribution history) primarily from Supabase.
  2. Write: Critical actions (Create Group, Join Group, Contribute, Payout) are executed on the Blockchain.
  3. Sync: Successful on-chain transactions trigger updates to Supabase, keeping the two states in sync.

3. Recent Improvements

  • Real-Time Data Integration: All pages now display live blockchain and Supabase data
  • Dynamic Currency Handling: Automatically displays ETH for Sepolia
  • Interactive Dialogs: Functional "Make Contribution" and "Add Member" buttons
  • Contribution History Charts: Visual trends from real transaction data
  • Wallet Management: Disconnect wallet via dropdown menu

License

This project is licensed under the MIT License.

About

DChama is a decentralized financial platform that digitizes traditional Kenyan informal savings groups (Chamas) by using blockchain smart contracts to automate contributions, secure rotating payouts, and provide immutable, transparent record-keeping for all members.

Topics

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

40 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Decentralized Chama Logo

Decentralized Chama (DChama)

Digitizing Trust. Automating Prosperity.

Next.jsTailwind CSSSupabaseSolidityEthereumKRNL

OverviewKey FeaturesTech StackGetting StartedArchitecture


Overview

Decentralized Chama (DChama) is a modern financial platform that brings traditional Rotating Savings and Credit Associations (ROSCAs) onto the blockchain. By leveraging smart contracts and real-time data synchronization, DChama automates the "Merry-Go-Round" cycle—ensuring transparency, security, and trustless execution for all members.

DChama solves the classic problems of informal groups:

  • Trust: Funds are held in a non-custodial smart contract vault.
  • Transparency: Every contribution and payout is recorded on-chain.
  • Automation: KRNL orchestration ensures payouts happen strictly according to schedule.

How It Works

DChama simplifies the traditional Chama experience into a digital, automated flow:

  1. Connect Wallet: Users connect their digital wallet (like MetaMask) to the app. This wallet acts as their identity and bank account.
  2. Create or Join: A user can create a new Chama group (setting the contribution amount and cycle) or join an existing one using a Group ID.
  3. Contribute: Members contribute funds (ETH) directly to the smart contract vault. These funds are locked and safe.
  4. Rotate & Receive: Based on the predetermined schedule, the system automatically enables the next member in line to receive the pooled funds.
  5. Track: Everything is visible on the dashboard—who paid, who owes, and whose turn it is next.

Current Network

DChama is currently deployed on the Sepolia Testnet for development and testing purposes.

  • Network: Sepolia Testnet (Ethereum)
  • Currency: ETH (test tokens)
  • Chain ID: 11155111
  • Get Test ETH: Sepolia Faucet

Note: This is a testnet deployment. Never use real mainnet funds with this application.

Deployed Contracts

The following smart contracts are currently deployed on Sepolia Testnet:

You can view all transactions, contract code, and events on Sepolia Etherscan using the links above.

Key Features

  • 🏦 Smart Vaults: Funds are secured in the ChamaCore contract via the ChamaFactory pattern, not a personal bank account.
  • 🔄 Automated Payouts with KRNL: The ChamaKernel uses the KRNL Protocol to orchestrate rotating payouts. It imposes checks (like solvency and time verification) off-chain before authorizing the on-chain release of funds, ensuring the rotation is tamper-proof.
  • 📊 Real-Time Dashboard: A responsive UI powered by Supabase for instant feedback, synchronized with on-chain data.
  • 📈 Live Contribution Charts: Visual trends showing your group's contribution history with real blockchain data.
  • 👛 Wallet Integration: Seamless connection with MetaMask (and compatible wallets) for ETH transactions.
  • 🔌 Disconnect Wallet: Easy wallet management with dropdown controls.
  • 📱 Mobile First: Fully responsive design optimized for on-the-go management.
  • 🛡️ Dual-Write Architecture: Immediate UI updates coupled with immutable blockchain verification.

Tech Stack

Frontend

Backend & Data

  • Database: Supabase (PostgreSQL)
  • Authentication: Supabase Auth (Email/Password)
  • Indexing: Custom "Dual Write" logic (Frontend → Chain → DB)

Blockchain

  • Contracts: Solidity (compiled with foundry)
  • Network: Sepolia Testnet (Ethereum)
  • Orchestration: KRNL (Kernel) Protocol
  • Interaction: Ethers.js v6
  • Pattern: Factory Pattern (ChamaFactory creates ChamaCore instances)

Getting Started

Prerequisites

  • Node.js 18+
  • npm / pnpm
  • MetaMask installed with Sepolia testnet configured
  • Sepolia test ETH from a faucet

Installation

  1. Clone the repository

    git clone https://github.com/eugene-gabriel/decentralized-chama.git
    cd decentralized-chama
  2. Install dependencies

    npm install
    # or
    pnpm install
  3. Environment Setup Create a .env file in the root directory:

    NEXT_PUBLIC_SUPABASE_URL=your_supabase_urlNEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_keyNEXT_PUBLIC_CHAMA_CONTRACT_ADDRESS=your_factory_contract_addressNEXT_PUBLIC_KRNL_KERNEL_ADDRESS=your_kernel_contract_addressNEXT_PUBLIC_NETWORK=SEPOLIA
  4. Run Development Server

    npm run dev

    Open http://localhost:3000 to view the app.

  5. Connect MetaMask

    • Switch to Sepolia testnet in MetaMask
    • Get test ETH from Sepolia Faucet
    • Connect your wallet to the app

Architecture

1. Smart Contracts

The core logic uses a Factory Pattern:

  • ChamaFactory.sol: Creates and manages multiple Chama groups, emits GroupCreated events with sequential IDs.
  • ChamaCore.sol: The Vault. Stores funds, manages member registry, and tracks rounds for each group.
  • ChamaKernel.sol: The Brain. Validates off-chain logic (via KRNL) and authorizes ChamaCore to release funds.

2. Data Flow

To ensure a snappy UX without waiting for block confirmations for every read:

  1. Read: The UI fetches displayed data (Dashboard stats, Member lists, Contribution history) primarily from Supabase.
  2. Write: Critical actions (Create Group, Join Group, Contribute, Payout) are executed on the Blockchain.
  3. Sync: Successful on-chain transactions trigger updates to Supabase, keeping the two states in sync.

3. Recent Improvements

  • Real-Time Data Integration: All pages now display live blockchain and Supabase data
  • Dynamic Currency Handling: Automatically displays ETH for Sepolia
  • Interactive Dialogs: Functional "Make Contribution" and "Add Member" buttons
  • Contribution History Charts: Visual trends from real transaction data
  • Wallet Management: Disconnect wallet via dropdown menu

License

This project is licensed under the MIT License.

About

DChama is a decentralized financial platform that digitizes traditional Kenyan informal savings groups (Chamas) by using blockchain smart contracts to automate contributions, secure rotating payouts, and provide immutable, transparent record-keeping for all members.

Topics

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

40 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Decentralized Chama Logo

Decentralized Chama (DChama)

Digitizing Trust. Automating Prosperity.

Next.jsTailwind CSSSupabaseSolidityEthereumKRNL

OverviewKey FeaturesTech StackGetting StartedArchitecture


Overview

Decentralized Chama (DChama) is a modern financial platform that brings traditional Rotating Savings and Credit Associations (ROSCAs) onto the blockchain. By leveraging smart contracts and real-time data synchronization, DChama automates the "Merry-Go-Round" cycle—ensuring transparency, security, and trustless execution for all members.

DChama solves the classic problems of informal groups:

  • Trust: Funds are held in a non-custodial smart contract vault.
  • Transparency: Every contribution and payout is recorded on-chain.
  • Automation: KRNL orchestration ensures payouts happen strictly according to schedule.

How It Works

DChama simplifies the traditional Chama experience into a digital, automated flow:

  1. Connect Wallet: Users connect their digital wallet (like MetaMask) to the app. This wallet acts as their identity and bank account.
  2. Create or Join: A user can create a new Chama group (setting the contribution amount and cycle) or join an existing one using a Group ID.
  3. Contribute: Members contribute funds (ETH) directly to the smart contract vault. These funds are locked and safe.
  4. Rotate & Receive: Based on the predetermined schedule, the system automatically enables the next member in line to receive the pooled funds.
  5. Track: Everything is visible on the dashboard—who paid, who owes, and whose turn it is next.

Current Network

DChama is currently deployed on the Sepolia Testnet for development and testing purposes.

  • Network: Sepolia Testnet (Ethereum)
  • Currency: ETH (test tokens)
  • Chain ID: 11155111
  • Get Test ETH: Sepolia Faucet

Note: This is a testnet deployment. Never use real mainnet funds with this application.

Deployed Contracts

The following smart contracts are currently deployed on Sepolia Testnet:

You can view all transactions, contract code, and events on Sepolia Etherscan using the links above.

Key Features

  • 🏦 Smart Vaults: Funds are secured in the ChamaCore contract via the ChamaFactory pattern, not a personal bank account.
  • 🔄 Automated Payouts with KRNL: The ChamaKernel uses the KRNL Protocol to orchestrate rotating payouts. It imposes checks (like solvency and time verification) off-chain before authorizing the on-chain release of funds, ensuring the rotation is tamper-proof.
  • 📊 Real-Time Dashboard: A responsive UI powered by Supabase for instant feedback, synchronized with on-chain data.
  • 📈 Live Contribution Charts: Visual trends showing your group's contribution history with real blockchain data.
  • 👛 Wallet Integration: Seamless connection with MetaMask (and compatible wallets) for ETH transactions.
  • 🔌 Disconnect Wallet: Easy wallet management with dropdown controls.
  • 📱 Mobile First: Fully responsive design optimized for on-the-go management.
  • 🛡️ Dual-Write Architecture: Immediate UI updates coupled with immutable blockchain verification.

Tech Stack

Frontend

Backend & Data

  • Database: Supabase (PostgreSQL)
  • Authentication: Supabase Auth (Email/Password)
  • Indexing: Custom "Dual Write" logic (Frontend → Chain → DB)

Blockchain

  • Contracts: Solidity (compiled with foundry)
  • Network: Sepolia Testnet (Ethereum)
  • Orchestration: KRNL (Kernel) Protocol
  • Interaction: Ethers.js v6
  • Pattern: Factory Pattern (ChamaFactory creates ChamaCore instances)

Getting Started

Prerequisites

  • Node.js 18+
  • npm / pnpm
  • MetaMask installed with Sepolia testnet configured
  • Sepolia test ETH from a faucet

Installation

  1. Clone the repository

    git clone https://github.com/eugene-gabriel/decentralized-chama.git
    cd decentralized-chama
  2. Install dependencies

    npm install
    # or
    pnpm install
  3. Environment Setup Create a .env file in the root directory:

    NEXT_PUBLIC_SUPABASE_URL=your_supabase_urlNEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_keyNEXT_PUBLIC_CHAMA_CONTRACT_ADDRESS=your_factory_contract_addressNEXT_PUBLIC_KRNL_KERNEL_ADDRESS=your_kernel_contract_addressNEXT_PUBLIC_NETWORK=SEPOLIA
  4. Run Development Server

    npm run dev

    Open http://localhost:3000 to view the app.

  5. Connect MetaMask

    • Switch to Sepolia testnet in MetaMask
    • Get test ETH from Sepolia Faucet
    • Connect your wallet to the app

Architecture

1. Smart Contracts

The core logic uses a Factory Pattern:

  • ChamaFactory.sol: Creates and manages multiple Chama groups, emits GroupCreated events with sequential IDs.
  • ChamaCore.sol: The Vault. Stores funds, manages member registry, and tracks rounds for each group.
  • ChamaKernel.sol: The Brain. Validates off-chain logic (via KRNL) and authorizes ChamaCore to release funds.

2. Data Flow

To ensure a snappy UX without waiting for block confirmations for every read:

  1. Read: The UI fetches displayed data (Dashboard stats, Member lists, Contribution history) primarily from Supabase.
  2. Write: Critical actions (Create Group, Join Group, Contribute, Payout) are executed on the Blockchain.
  3. Sync: Successful on-chain transactions trigger updates to Supabase, keeping the two states in sync.

3. Recent Improvements

  • Real-Time Data Integration: All pages now display live blockchain and Supabase data
  • Dynamic Currency Handling: Automatically displays ETH for Sepolia
  • Interactive Dialogs: Functional "Make Contribution" and "Add Member" buttons
  • Contribution History Charts: Visual trends from real transaction data
  • Wallet Management: Disconnect wallet via dropdown menu

License

This project is licensed under the MIT License.

About

DChama is a decentralized financial platform that digitizes traditional Kenyan informal savings groups (Chamas) by using blockchain smart contracts to automate contributions, secure rotating payouts, and provide immutable, transparent record-keeping for all members.

Topics

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

40 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Decentralized Chama Logo

Decentralized Chama (DChama)

Digitizing Trust. Automating Prosperity.

Next.jsTailwind CSSSupabaseSolidityEthereumKRNL

OverviewKey FeaturesTech StackGetting StartedArchitecture


Overview

Decentralized Chama (DChama) is a modern financial platform that brings traditional Rotating Savings and Credit Associations (ROSCAs) onto the blockchain. By leveraging smart contracts and real-time data synchronization, DChama automates the "Merry-Go-Round" cycle—ensuring transparency, security, and trustless execution for all members.

DChama solves the classic problems of informal groups:

  • Trust: Funds are held in a non-custodial smart contract vault.
  • Transparency: Every contribution and payout is recorded on-chain.
  • Automation: KRNL orchestration ensures payouts happen strictly according to schedule.

How It Works

DChama simplifies the traditional Chama experience into a digital, automated flow:

  1. Connect Wallet: Users connect their digital wallet (like MetaMask) to the app. This wallet acts as their identity and bank account.
  2. Create or Join: A user can create a new Chama group (setting the contribution amount and cycle) or join an existing one using a Group ID.
  3. Contribute: Members contribute funds (ETH) directly to the smart contract vault. These funds are locked and safe.
  4. Rotate & Receive: Based on the predetermined schedule, the system automatically enables the next member in line to receive the pooled funds.
  5. Track: Everything is visible on the dashboard—who paid, who owes, and whose turn it is next.

Current Network

DChama is currently deployed on the Sepolia Testnet for development and testing purposes.

  • Network: Sepolia Testnet (Ethereum)
  • Currency: ETH (test tokens)
  • Chain ID: 11155111
  • Get Test ETH: Sepolia Faucet

Note: This is a testnet deployment. Never use real mainnet funds with this application.

Deployed Contracts

The following smart contracts are currently deployed on Sepolia Testnet:

You can view all transactions, contract code, and events on Sepolia Etherscan using the links above.

Key Features

  • 🏦 Smart Vaults: Funds are secured in the ChamaCore contract via the ChamaFactory pattern, not a personal bank account.
  • 🔄 Automated Payouts with KRNL: The ChamaKernel uses the KRNL Protocol to orchestrate rotating payouts. It imposes checks (like solvency and time verification) off-chain before authorizing the on-chain release of funds, ensuring the rotation is tamper-proof.
  • 📊 Real-Time Dashboard: A responsive UI powered by Supabase for instant feedback, synchronized with on-chain data.
  • 📈 Live Contribution Charts: Visual trends showing your group's contribution history with real blockchain data.
  • 👛 Wallet Integration: Seamless connection with MetaMask (and compatible wallets) for ETH transactions.
  • 🔌 Disconnect Wallet: Easy wallet management with dropdown controls.
  • 📱 Mobile First: Fully responsive design optimized for on-the-go management.
  • 🛡️ Dual-Write Architecture: Immediate UI updates coupled with immutable blockchain verification.

Tech Stack

Frontend

Backend & Data

  • Database: Supabase (PostgreSQL)
  • Authentication: Supabase Auth (Email/Password)
  • Indexing: Custom "Dual Write" logic (Frontend → Chain → DB)

Blockchain

  • Contracts: Solidity (compiled with foundry)
  • Network: Sepolia Testnet (Ethereum)
  • Orchestration: KRNL (Kernel) Protocol
  • Interaction: Ethers.js v6
  • Pattern: Factory Pattern (ChamaFactory creates ChamaCore instances)

Getting Started

Prerequisites

  • Node.js 18+
  • npm / pnpm
  • MetaMask installed with Sepolia testnet configured
  • Sepolia test ETH from a faucet

Installation

  1. Clone the repository

    git clone https://github.com/eugene-gabriel/decentralized-chama.git
    cd decentralized-chama
  2. Install dependencies

    npm install
    # or
    pnpm install
  3. Environment Setup Create a .env file in the root directory:

    NEXT_PUBLIC_SUPABASE_URL=your_supabase_urlNEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_keyNEXT_PUBLIC_CHAMA_CONTRACT_ADDRESS=your_factory_contract_addressNEXT_PUBLIC_KRNL_KERNEL_ADDRESS=your_kernel_contract_addressNEXT_PUBLIC_NETWORK=SEPOLIA
  4. Run Development Server

    npm run dev

    Open http://localhost:3000 to view the app.

  5. Connect MetaMask

    • Switch to Sepolia testnet in MetaMask
    • Get test ETH from Sepolia Faucet
    • Connect your wallet to the app

Architecture

1. Smart Contracts

The core logic uses a Factory Pattern:

  • ChamaFactory.sol: Creates and manages multiple Chama groups, emits GroupCreated events with sequential IDs.
  • ChamaCore.sol: The Vault. Stores funds, manages member registry, and tracks rounds for each group.
  • ChamaKernel.sol: The Brain. Validates off-chain logic (via KRNL) and authorizes ChamaCore to release funds.

2. Data Flow

To ensure a snappy UX without waiting for block confirmations for every read:

  1. Read: The UI fetches displayed data (Dashboard stats, Member lists, Contribution history) primarily from Supabase.
  2. Write: Critical actions (Create Group, Join Group, Contribute, Payout) are executed on the Blockchain.
  3. Sync: Successful on-chain transactions trigger updates to Supabase, keeping the two states in sync.

3. Recent Improvements

  • Real-Time Data Integration: All pages now display live blockchain and Supabase data
  • Dynamic Currency Handling: Automatically displays ETH for Sepolia
  • Interactive Dialogs: Functional "Make Contribution" and "Add Member" buttons
  • Contribution History Charts: Visual trends from real transaction data
  • Wallet Management: Disconnect wallet via dropdown menu

License

This project is licensed under the MIT License.

About

DChama is a decentralized financial platform that digitizes traditional Kenyan informal savings groups (Chamas) by using blockchain smart contracts to automate contributions, secure rotating payouts, and provide immutable, transparent record-keeping for all members.

Topics

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

40 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Decentralized Chama Logo

Decentralized Chama (DChama)

Digitizing Trust. Automating Prosperity.

Next.jsTailwind CSSSupabaseSolidityEthereumKRNL

OverviewKey FeaturesTech StackGetting StartedArchitecture


Overview

Decentralized Chama (DChama) is a modern financial platform that brings traditional Rotating Savings and Credit Associations (ROSCAs) onto the blockchain. By leveraging smart contracts and real-time data synchronization, DChama automates the "Merry-Go-Round" cycle—ensuring transparency, security, and trustless execution for all members.

DChama solves the classic problems of informal groups:

  • Trust: Funds are held in a non-custodial smart contract vault.
  • Transparency: Every contribution and payout is recorded on-chain.
  • Automation: KRNL orchestration ensures payouts happen strictly according to schedule.

How It Works

DChama simplifies the traditional Chama experience into a digital, automated flow:

  1. Connect Wallet: Users connect their digital wallet (like MetaMask) to the app. This wallet acts as their identity and bank account.
  2. Create or Join: A user can create a new Chama group (setting the contribution amount and cycle) or join an existing one using a Group ID.
  3. Contribute: Members contribute funds (ETH) directly to the smart contract vault. These funds are locked and safe.
  4. Rotate & Receive: Based on the predetermined schedule, the system automatically enables the next member in line to receive the pooled funds.
  5. Track: Everything is visible on the dashboard—who paid, who owes, and whose turn it is next.

Current Network

DChama is currently deployed on the Sepolia Testnet for development and testing purposes.

  • Network: Sepolia Testnet (Ethereum)
  • Currency: ETH (test tokens)
  • Chain ID: 11155111
  • Get Test ETH: Sepolia Faucet

Note: This is a testnet deployment. Never use real mainnet funds with this application.

Deployed Contracts

The following smart contracts are currently deployed on Sepolia Testnet:

You can view all transactions, contract code, and events on Sepolia Etherscan using the links above.

Key Features

  • 🏦 Smart Vaults: Funds are secured in the ChamaCore contract via the ChamaFactory pattern, not a personal bank account.
  • 🔄 Automated Payouts with KRNL: The ChamaKernel uses the KRNL Protocol to orchestrate rotating payouts. It imposes checks (like solvency and time verification) off-chain before authorizing the on-chain release of funds, ensuring the rotation is tamper-proof.
  • 📊 Real-Time Dashboard: A responsive UI powered by Supabase for instant feedback, synchronized with on-chain data.
  • 📈 Live Contribution Charts: Visual trends showing your group's contribution history with real blockchain data.
  • 👛 Wallet Integration: Seamless connection with MetaMask (and compatible wallets) for ETH transactions.
  • 🔌 Disconnect Wallet: Easy wallet management with dropdown controls.
  • 📱 Mobile First: Fully responsive design optimized for on-the-go management.
  • 🛡️ Dual-Write Architecture: Immediate UI updates coupled with immutable blockchain verification.

Tech Stack

Frontend

Backend & Data

  • Database: Supabase (PostgreSQL)
  • Authentication: Supabase Auth (Email/Password)
  • Indexing: Custom "Dual Write" logic (Frontend → Chain → DB)

Blockchain

  • Contracts: Solidity (compiled with foundry)
  • Network: Sepolia Testnet (Ethereum)
  • Orchestration: KRNL (Kernel) Protocol
  • Interaction: Ethers.js v6
  • Pattern: Factory Pattern (ChamaFactory creates ChamaCore instances)

Getting Started

Prerequisites

  • Node.js 18+
  • npm / pnpm
  • MetaMask installed with Sepolia testnet configured
  • Sepolia test ETH from a faucet

Installation

  1. Clone the repository

    git clone https://github.com/eugene-gabriel/decentralized-chama.git
    cd decentralized-chama
  2. Install dependencies

    npm install
    # or
    pnpm install
  3. Environment Setup Create a .env file in the root directory:

    NEXT_PUBLIC_SUPABASE_URL=your_supabase_urlNEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_keyNEXT_PUBLIC_CHAMA_CONTRACT_ADDRESS=your_factory_contract_addressNEXT_PUBLIC_KRNL_KERNEL_ADDRESS=your_kernel_contract_addressNEXT_PUBLIC_NETWORK=SEPOLIA
  4. Run Development Server

    npm run dev

    Open http://localhost:3000 to view the app.

  5. Connect MetaMask

    • Switch to Sepolia testnet in MetaMask
    • Get test ETH from Sepolia Faucet
    • Connect your wallet to the app

Architecture

1. Smart Contracts

The core logic uses a Factory Pattern:

  • ChamaFactory.sol: Creates and manages multiple Chama groups, emits GroupCreated events with sequential IDs.
  • ChamaCore.sol: The Vault. Stores funds, manages member registry, and tracks rounds for each group.
  • ChamaKernel.sol: The Brain. Validates off-chain logic (via KRNL) and authorizes ChamaCore to release funds.

2. Data Flow

To ensure a snappy UX without waiting for block confirmations for every read:

  1. Read: The UI fetches displayed data (Dashboard stats, Member lists, Contribution history) primarily from Supabase.
  2. Write: Critical actions (Create Group, Join Group, Contribute, Payout) are executed on the Blockchain.
  3. Sync: Successful on-chain transactions trigger updates to Supabase, keeping the two states in sync.

3. Recent Improvements

  • Real-Time Data Integration: All pages now display live blockchain and Supabase data
  • Dynamic Currency Handling: Automatically displays ETH for Sepolia
  • Interactive Dialogs: Functional "Make Contribution" and "Add Member" buttons
  • Contribution History Charts: Visual trends from real transaction data
  • Wallet Management: Disconnect wallet via dropdown menu

License

This project is licensed under the MIT License.

About

DChama is a decentralized financial platform that digitizes traditional Kenyan informal savings groups (Chamas) by using blockchain smart contracts to automate contributions, secure rotating payouts, and provide immutable, transparent record-keeping for all members.

Topics

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

40 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Decentralized Chama Logo

Decentralized Chama (DChama)

Digitizing Trust. Automating Prosperity.

Next.jsTailwind CSSSupabaseSolidityEthereumKRNL

OverviewKey FeaturesTech StackGetting StartedArchitecture


Overview

Decentralized Chama (DChama) is a modern financial platform that brings traditional Rotating Savings and Credit Associations (ROSCAs) onto the blockchain. By leveraging smart contracts and real-time data synchronization, DChama automates the "Merry-Go-Round" cycle—ensuring transparency, security, and trustless execution for all members.

DChama solves the classic problems of informal groups:

  • Trust: Funds are held in a non-custodial smart contract vault.
  • Transparency: Every contribution and payout is recorded on-chain.
  • Automation: KRNL orchestration ensures payouts happen strictly according to schedule.

How It Works

DChama simplifies the traditional Chama experience into a digital, automated flow:

  1. Connect Wallet: Users connect their digital wallet (like MetaMask) to the app. This wallet acts as their identity and bank account.
  2. Create or Join: A user can create a new Chama group (setting the contribution amount and cycle) or join an existing one using a Group ID.
  3. Contribute: Members contribute funds (ETH) directly to the smart contract vault. These funds are locked and safe.
  4. Rotate & Receive: Based on the predetermined schedule, the system automatically enables the next member in line to receive the pooled funds.
  5. Track: Everything is visible on the dashboard—who paid, who owes, and whose turn it is next.

Current Network

DChama is currently deployed on the Sepolia Testnet for development and testing purposes.

  • Network: Sepolia Testnet (Ethereum)
  • Currency: ETH (test tokens)
  • Chain ID: 11155111
  • Get Test ETH: Sepolia Faucet

Note: This is a testnet deployment. Never use real mainnet funds with this application.

Deployed Contracts

The following smart contracts are currently deployed on Sepolia Testnet:

You can view all transactions, contract code, and events on Sepolia Etherscan using the links above.

Key Features

  • 🏦 Smart Vaults: Funds are secured in the ChamaCore contract via the ChamaFactory pattern, not a personal bank account.
  • 🔄 Automated Payouts with KRNL: The ChamaKernel uses the KRNL Protocol to orchestrate rotating payouts. It imposes checks (like solvency and time verification) off-chain before authorizing the on-chain release of funds, ensuring the rotation is tamper-proof.
  • 📊 Real-Time Dashboard: A responsive UI powered by Supabase for instant feedback, synchronized with on-chain data.
  • 📈 Live Contribution Charts: Visual trends showing your group's contribution history with real blockchain data.
  • 👛 Wallet Integration: Seamless connection with MetaMask (and compatible wallets) for ETH transactions.
  • 🔌 Disconnect Wallet: Easy wallet management with dropdown controls.
  • 📱 Mobile First: Fully responsive design optimized for on-the-go management.
  • 🛡️ Dual-Write Architecture: Immediate UI updates coupled with immutable blockchain verification.

Tech Stack

Frontend

Backend & Data

  • Database: Supabase (PostgreSQL)
  • Authentication: Supabase Auth (Email/Password)
  • Indexing: Custom "Dual Write" logic (Frontend → Chain → DB)

Blockchain

  • Contracts: Solidity (compiled with foundry)
  • Network: Sepolia Testnet (Ethereum)
  • Orchestration: KRNL (Kernel) Protocol
  • Interaction: Ethers.js v6
  • Pattern: Factory Pattern (ChamaFactory creates ChamaCore instances)

Getting Started

Prerequisites

  • Node.js 18+
  • npm / pnpm
  • MetaMask installed with Sepolia testnet configured
  • Sepolia test ETH from a faucet

Installation

  1. Clone the repository

    git clone https://github.com/eugene-gabriel/decentralized-chama.git
    cd decentralized-chama
  2. Install dependencies

    npm install
    # or
    pnpm install
  3. Environment Setup Create a .env file in the root directory:

    NEXT_PUBLIC_SUPABASE_URL=your_supabase_urlNEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_keyNEXT_PUBLIC_CHAMA_CONTRACT_ADDRESS=your_factory_contract_addressNEXT_PUBLIC_KRNL_KERNEL_ADDRESS=your_kernel_contract_addressNEXT_PUBLIC_NETWORK=SEPOLIA
  4. Run Development Server

    npm run dev

    Open http://localhost:3000 to view the app.

  5. Connect MetaMask

    • Switch to Sepolia testnet in MetaMask
    • Get test ETH from Sepolia Faucet
    • Connect your wallet to the app

Architecture

1. Smart Contracts

The core logic uses a Factory Pattern:

  • ChamaFactory.sol: Creates and manages multiple Chama groups, emits GroupCreated events with sequential IDs.
  • ChamaCore.sol: The Vault. Stores funds, manages member registry, and tracks rounds for each group.
  • ChamaKernel.sol: The Brain. Validates off-chain logic (via KRNL) and authorizes ChamaCore to release funds.

2. Data Flow

To ensure a snappy UX without waiting for block confirmations for every read:

  1. Read: The UI fetches displayed data (Dashboard stats, Member lists, Contribution history) primarily from Supabase.
  2. Write: Critical actions (Create Group, Join Group, Contribute, Payout) are executed on the Blockchain.
  3. Sync: Successful on-chain transactions trigger updates to Supabase, keeping the two states in sync.

3. Recent Improvements

  • Real-Time Data Integration: All pages now display live blockchain and Supabase data
  • Dynamic Currency Handling: Automatically displays ETH for Sepolia
  • Interactive Dialogs: Functional "Make Contribution" and "Add Member" buttons
  • Contribution History Charts: Visual trends from real transaction data
  • Wallet Management: Disconnect wallet via dropdown menu

License

This project is licensed under the MIT License.

About

DChama is a decentralized financial platform that digitizes traditional Kenyan informal savings groups (Chamas) by using blockchain smart contracts to automate contributions, secure rotating payouts, and provide immutable, transparent record-keeping for all members.

Topics

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

40 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Decentralized Chama Logo

Decentralized Chama (DChama)

Digitizing Trust. Automating Prosperity.

Next.jsTailwind CSSSupabaseSolidityEthereumKRNL

OverviewKey FeaturesTech StackGetting StartedArchitecture


Overview

Decentralized Chama (DChama) is a modern financial platform that brings traditional Rotating Savings and Credit Associations (ROSCAs) onto the blockchain. By leveraging smart contracts and real-time data synchronization, DChama automates the "Merry-Go-Round" cycle—ensuring transparency, security, and trustless execution for all members.

DChama solves the classic problems of informal groups:

  • Trust: Funds are held in a non-custodial smart contract vault.
  • Transparency: Every contribution and payout is recorded on-chain.
  • Automation: KRNL orchestration ensures payouts happen strictly according to schedule.

How It Works

DChama simplifies the traditional Chama experience into a digital, automated flow:

  1. Connect Wallet: Users connect their digital wallet (like MetaMask) to the app. This wallet acts as their identity and bank account.
  2. Create or Join: A user can create a new Chama group (setting the contribution amount and cycle) or join an existing one using a Group ID.
  3. Contribute: Members contribute funds (ETH) directly to the smart contract vault. These funds are locked and safe.
  4. Rotate & Receive: Based on the predetermined schedule, the system automatically enables the next member in line to receive the pooled funds.
  5. Track: Everything is visible on the dashboard—who paid, who owes, and whose turn it is next.

Current Network

DChama is currently deployed on the Sepolia Testnet for development and testing purposes.

  • Network: Sepolia Testnet (Ethereum)
  • Currency: ETH (test tokens)
  • Chain ID: 11155111
  • Get Test ETH: Sepolia Faucet

Note: This is a testnet deployment. Never use real mainnet funds with this application.

Deployed Contracts

The following smart contracts are currently deployed on Sepolia Testnet:

You can view all transactions, contract code, and events on Sepolia Etherscan using the links above.

Key Features

  • 🏦 Smart Vaults: Funds are secured in the ChamaCore contract via the ChamaFactory pattern, not a personal bank account.
  • 🔄 Automated Payouts with KRNL: The ChamaKernel uses the KRNL Protocol to orchestrate rotating payouts. It imposes checks (like solvency and time verification) off-chain before authorizing the on-chain release of funds, ensuring the rotation is tamper-proof.
  • 📊 Real-Time Dashboard: A responsive UI powered by Supabase for instant feedback, synchronized with on-chain data.
  • 📈 Live Contribution Charts: Visual trends showing your group's contribution history with real blockchain data.
  • 👛 Wallet Integration: Seamless connection with MetaMask (and compatible wallets) for ETH transactions.
  • 🔌 Disconnect Wallet: Easy wallet management with dropdown controls.
  • 📱 Mobile First: Fully responsive design optimized for on-the-go management.
  • 🛡️ Dual-Write Architecture: Immediate UI updates coupled with immutable blockchain verification.

Tech Stack

Frontend

Backend & Data

  • Database: Supabase (PostgreSQL)
  • Authentication: Supabase Auth (Email/Password)
  • Indexing: Custom "Dual Write" logic (Frontend → Chain → DB)

Blockchain

  • Contracts: Solidity (compiled with foundry)
  • Network: Sepolia Testnet (Ethereum)
  • Orchestration: KRNL (Kernel) Protocol
  • Interaction: Ethers.js v6
  • Pattern: Factory Pattern (ChamaFactory creates ChamaCore instances)

Getting Started

Prerequisites

  • Node.js 18+
  • npm / pnpm
  • MetaMask installed with Sepolia testnet configured
  • Sepolia test ETH from a faucet

Installation

  1. Clone the repository

    git clone https://github.com/eugene-gabriel/decentralized-chama.git
    cd decentralized-chama
  2. Install dependencies

    npm install
    # or
    pnpm install
  3. Environment Setup Create a .env file in the root directory:

    NEXT_PUBLIC_SUPABASE_URL=your_supabase_urlNEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_keyNEXT_PUBLIC_CHAMA_CONTRACT_ADDRESS=your_factory_contract_addressNEXT_PUBLIC_KRNL_KERNEL_ADDRESS=your_kernel_contract_addressNEXT_PUBLIC_NETWORK=SEPOLIA
  4. Run Development Server

    npm run dev

    Open http://localhost:3000 to view the app.

  5. Connect MetaMask

    • Switch to Sepolia testnet in MetaMask
    • Get test ETH from Sepolia Faucet
    • Connect your wallet to the app

Architecture

1. Smart Contracts

The core logic uses a Factory Pattern:

  • ChamaFactory.sol: Creates and manages multiple Chama groups, emits GroupCreated events with sequential IDs.
  • ChamaCore.sol: The Vault. Stores funds, manages member registry, and tracks rounds for each group.
  • ChamaKernel.sol: The Brain. Validates off-chain logic (via KRNL) and authorizes ChamaCore to release funds.

2. Data Flow

To ensure a snappy UX without waiting for block confirmations for every read:

  1. Read: The UI fetches displayed data (Dashboard stats, Member lists, Contribution history) primarily from Supabase.
  2. Write: Critical actions (Create Group, Join Group, Contribute, Payout) are executed on the Blockchain.
  3. Sync: Successful on-chain transactions trigger updates to Supabase, keeping the two states in sync.

3. Recent Improvements

  • Real-Time Data Integration: All pages now display live blockchain and Supabase data
  • Dynamic Currency Handling: Automatically displays ETH for Sepolia
  • Interactive Dialogs: Functional "Make Contribution" and "Add Member" buttons
  • Contribution History Charts: Visual trends from real transaction data
  • Wallet Management: Disconnect wallet via dropdown menu

License

This project is licensed under the MIT License.

About

DChama is a decentralized financial platform that digitizes traditional Kenyan informal savings groups (Chamas) by using blockchain smart contracts to automate contributions, secure rotating payouts, and provide immutable, transparent record-keeping for all members.

Topics

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages