Skip to content
Back to Projects

Web3 Goal Accountability dApp

A decentralized application for creating, tracking, and achieving personal goals with community accountability on Ethereum.

2 min read
Next.js
Ethereum
TypeScript
Tailwind CSS
DaisyUI
RainbowKit
Wagmi
Viem
Web3

Role

Solo builder for Akuntabel, a goal accountability app on Ethereum. Owned the Next.js / TypeScript frontend, wallet connection UX, and Solidity contracts for staking, milestones, and judge approval.

What I built

  • Goal creation with stakes, descriptions, and invited judges
  • Milestone tracking and completion flows
  • Judge approval path before funds release
  • Wallet connect via RainbowKit with Wagmi / Viem for chain reads/writes
  • Responsive UI for dashboard, goal detail, and creation forms
  • Deployed contracts on Sepolia with a public demo

Tech Stack

  • App: React, Next.js, TypeScript, Tailwind CSS, DaisyUI
  • Web3: RainbowKit, Wagmi, Viem
  • Contracts: Solidity, Hardhat
  • Network: Ethereum Sepolia

Context

Archive piece for self-directed product work: typed React/Next UI, hard state synchronization (chain vs client), and UX for irreversible actions. Featured builds live on SimplyVest, FlowStep, and KlikHoreca.

Smart Contract Architecture

  • Goal struct: user, description, stake, judges, milestones, approval state
  • Milestone tracking: mark achieved; roll up completion
  • Judge approval: gates release after milestones complete
  • Funds management: stake on create; release on approved completion

Frontend Architecture

  • Home dashboard for active goals and create entry points
  • Goal creation form for stakes, judges, and milestones
  • Goal detail for progress, approvals, and transaction feedback
  • Explicit pending / confirmed / failed transaction states

Lessons Learned

  • Wallet connection, confirmations, and failure copy are the core product work for irreversible money flows.
  • Access control and edge cases matter immediately when UI moves user funds.
  • Keeping React state honest with on-chain confirmation timing is most of the frontend complexity.

Screenshots

/projects/akuntabel/akuntabel-1.png
/projects/akuntabel/akuntabel-2.png
/projects/akuntabel/akuntabel-3.png
/projects/akuntabel/akuntabel-4.png
/projects/akuntabel/akuntabel-5.png