Back to Projects

Web3 Goal Accountability dApp

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

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

Overview

Akuntabel (akʊnˈtabəl) is a web3 goal accountability application built on Ethereum. Users can create personal goals, set stakes, invite judges, and track progress through milestones. The app uses blockchain to keep goal-setting transparent and records immutable.

Features

  • Goal Creation: Create new goals with descriptions, stakes, and invite judges for approval.
  • Milestone Tracking: Break goals into milestones and mark them as achieved.
  • Judge Approval: Once all milestones are completed, judges can approve the goal.
  • Funds Release: Upon goal completion and approval, staked funds are automatically released to the user.
  • Community Accountability: Judges help hold users accountable for achieving their goals.
  • Ethereum Integration: Interaction with Ethereum blockchain for transactions and smart contracts.
  • Responsive UI: Interface that adapts to different screen sizes.
  • Wallet Connection: Wallet connection using RainbowKit.

Tech Stack

  • React & Next.js: For the frontend, with server-side rendering.
  • TypeScript: For type safety.
  • Solidity: For smart contracts that manage goals, stakes, and approvals on Ethereum.
  • Hardhat: For compiling, deploying, and testing smart contracts.
  • Tailwind CSS & DaisyUI: For styling.
  • RainbowKit: For wallet connection.
  • Wagmi & Viem: For Ethereum interactions and frontend state management.

Smart Contract Architecture

The Akuntabel smart contract has these main components:

  • Goal Struct: Stores goal details including user, description, stake, judges, milestones, and approval status.
  • Milestone Tracking: Allows users to mark milestones as achieved and tracks overall goal completion.
  • Judge Approval System: Manages the process of judges approving completed goals.
  • Funds Management: Handles staking of funds and their release upon goal completion and approval.

Frontend Architecture

The frontend is structured around Next.js pages and React components:

  • Home Dashboard: Shows user's goals and provides quick access to create new goals.
  • Goal Creation Form: Input for goal details, stakes, and inviting judges.
  • Goal Details Page: Shows information about a specific goal, including milestones and approval status.
  • Milestone Tracking: Mark milestones as completed and track overall progress.

Lessons Learned

  • Web3 UX Design: Building a usable interface for blockchain interactions was harder than expected — wallet connection flows, transaction confirmations, and error states all need careful handling.
  • Smart Contract Security: Handling user funds on-chain requires careful attention to access control and edge cases.
  • State Management in Web3: Keeping frontend state in sync with on-chain state took extra work, especially around transaction confirmations.

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