<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Waichari</title>
    <description>The latest articles on DEV Community by Waichari (@waicharikim).</description>
    <link>https://dev.to/waicharikim</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F952300%2Fc677ea25-67f1-481d-a6d0-afcd3eaa7bd2.jpeg</url>
      <title>DEV Community: Waichari</title>
      <link>https://dev.to/waicharikim</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/waicharikim"/>
    <language>en</language>
    <item>
      <title>What if your neighbourhood was a DAO?</title>
      <dc:creator>Waichari</dc:creator>
      <pubDate>Mon, 02 Mar 2026 08:03:49 +0000</pubDate>
      <link>https://dev.to/waicharikim/what-if-your-neighbourhood-was-a-dao-j09</link>
      <guid>https://dev.to/waicharikim/what-if-your-neighbourhood-was-a-dao-j09</guid>
      <description>&lt;p&gt;This is a submission for the DEV Weekend Challenge: Community&lt;/p&gt;

&lt;h2&gt;
  
  
  The Community
&lt;/h2&gt;

&lt;p&gt;Every community has the same unsolved problem: how do you pool resources, make collective decisions, and hold outcomes accountable — without a middleman taking a cut or a government that never shows up?&lt;br&gt;
UjamaaDAO was built for that. The name comes from Ujamaa (Swahili for familyhood), the cooperative economics philosophy that says communities thrive when resources, labor, and governance belong to the people themselves.&lt;br&gt;
The first real-world context is Kenyan wards — the smallest units of Kenya's devolved government, where informal economies are massive, trust in institutions is low, and M-Pesa already proves communities will adopt digital financial tools when they're built right. But the platform is designed for any organized community: a village, a diaspora group, a housing cooperative, a trade guild, an open-source project's contributor base.&lt;br&gt;
And because a community sovereignty platform should practice what it preaches — the codebase is fully open source (MIT licensed). Community-owned software, for community-owned governance.&lt;/p&gt;

&lt;p&gt;What I Built&lt;br&gt;
UjamaaDAO is a neighborhood sovereignty platform — cooperative governance, community project funding, and a skills/goods marketplace, all in one.&lt;br&gt;
Three interlocking layers:&lt;br&gt;
🏛️ Governance — Communities vote on proposals, fund shared projects, and track real outcomes. On-chain governance records, off-chain UX. No one needs to know what a blockchain is to participate.&lt;br&gt;
💰 Economy — Two community tokens: PR (Participation) tokens earned by contributing (soulbound — non-transferable, non-cashable, a reputation layer), and UT (Utility) tokens that power internal transactions. Real money flows via M-Pesa to platform accounts — always auditable, never peer-to-peer.&lt;br&gt;
🛒 Marketplace — Members list skills and goods for discovery. Not a checkout flow — a trust layer. The community already knows each other; the marketplace makes that visible and searchable.&lt;br&gt;
Current state (honest):&lt;br&gt;
WhatStatusBackend API — 12 modules, 80-model Prisma schema✅ Running173 tests — auth, user, economy✅ Green, CI passingFrontend — Next.js 15, 15 routes, Chai palette design system✅ ActiveMagic-link auth + Privy embedded wallets✅ Working end-to-endFull Docker dev stack (make dev)✅ One commandM-Pesa integration🔶 Stubbed — Daraja API nextSmart contracts🔶 Foundry scaffold ready — Solidity next&lt;br&gt;
It's not finished. But the foundation is real, tested, and running.&lt;/p&gt;

&lt;p&gt;Demo&lt;/p&gt;

&lt;p&gt;Running locally via Docker. One command starts the full stack — API, worker, PostgreSQL, Redis, frontend, and MailHog for dev email.&lt;/p&gt;

&lt;p&gt;The landing page — where community members enter their email to get started:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw2plyjwnlhqpxybsq496.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw2plyjwnlhqpxybsq496.png" alt=" " width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkxclo4vv31l1zs68w74r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkxclo4vv31l1zs68w74r.png" alt=" " width="800" height="391"&gt;&lt;/a&gt;&lt;br&gt;
To run it yourself:&lt;br&gt;
bashgit clone &lt;a href="https://github.com/waicharikim/UJAMAA_DAO.git" rel="noopener noreferrer"&gt;https://github.com/waicharikim/UJAMAA_DAO.git&lt;/a&gt;&lt;br&gt;
cd UJAMAA_DAO/backend&lt;br&gt;
make dev         # starts all 7 services&lt;br&gt;
make db-migrate  # first run only&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
Visit `http://localhost:3000` → register → check `http://localhost:8025` for your magic link.

---

## Code

**[github.com/waicharikim/UJAMAA_DAO](https://github.com/waicharikim/UJAMAA_DAO)** — MIT licensed, fully open source.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;UJAMAA_DAO/&lt;br&gt;
├── backend/            # Node.js 22 + Express + Prisma&lt;br&gt;
│   ├── src/modules/    # 12 feature modules (auth, user, economy, community…)&lt;br&gt;
│   ├── prisma/         # 80-model schema, migrations applied&lt;br&gt;
│   └── tests/          # 173 tests — auth (104), user (35), economy (34)&lt;br&gt;
│&lt;br&gt;
├── frontend/           # Next.js 15 (App Router)&lt;br&gt;
│   ├── app/            # 15 routes&lt;br&gt;
│   ├── components/     # Chai palette design system&lt;br&gt;
│   └── lib/api.ts      # Typed HTTP client&lt;br&gt;
│&lt;br&gt;
├── contracts/          # Foundry scaffold — Base Sepolia → Mainnet&lt;br&gt;
└── docker/             # Full Compose dev stack (7 services)&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


Three design decisions worth highlighting:

**Blockchain is invisible.** No seed phrases, no wallet addresses, no gas warnings. Privy handles embedded wallets silently on Base L2. On-chain means governance records and tokens. Everything the user touches is off-chain.

**Auth without passwords.** Magic links only. Built for users who may have low digital literacy — and who definitely shouldn't have to manage a crypto wallet manually.

**M-Pesa as the money layer.** Not because it's exotic — because it's what Kenyan communities already use and trust. The platform meets people where they are.

---

## How I Built It

| Layer | Technology |
|---|---|
| Runtime | Node.js 22, TypeScript (strict) |
| Framework | Express |
| Database | PostgreSQL 15 + Prisma ORM (80 models) |
| Queue | BullMQ + Redis |
| Testing | Vitest + Supertest — 173 tests |
| Auth | Email magic links (JWT), Africa's Talking SMS |
| Frontend | Next.js 15, TanStack Query v5, Tailwind v3, shadcn/ui |
| Wallet | Privy embedded wallets on Base L2 |
| Contracts | Foundry — Base Sepolia → Base Mainnet |
| Payments | M-Pesa / Daraja API (in progress) |
| Infra | Docker Compose + Traefik |
| CI | GitHub Actions |

The hardest part wasn't the tech stack — it was the design constraints. Every decision had to answer one question: *would this work for someone in a Kenyan ward with a mid-range Android, patchy data, and no interest in learning what a blockchain is?*

That question ruled out passwords → magic links. Ruled out visible wallets → Privy embedded. Ruled out card payments → M-Pesa. Ruled out web3-native UX patterns entirely.

The result is a platform that uses blockchain infrastructure under the hood — and feels like a community app on the surface. That's the whole point.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
