nav.brand
docs.title/DAO Governance

DAO Governance

Proposals, voting and a timelock treasury — on chain

docs.viewTemplate

docs.h.overview

A governance portal on the audited OpenZeppelin Governor stack: create proposals, delegate and vote with your token, watch quorum and tallies, and run a timelock-controlled treasury. An optional fixed-price token sale can seed the treasury.

DAO Governance gives your community a real portal: a list of proposals with their state, quorum progress and for/against/abstain tallies, a one-click vote (after delegating), your live voting power, the treasury balance, and a form to create a signal proposal — all read from on-chain governance events.

It's built on the OpenZeppelin Governor stack: an ERC20Votes governance token, a TimelockController that holds the treasury and executes passed proposals after a delay, and a Governor with configurable voting delay, period, quorum and proposal threshold. The multi-step wizard deploys the timelock and governor and wires the roles correctly (proposer/executor granted, deployer admin renounced).

An optional GovSale contract lets you sell an allocation of governance tokens at a fixed price, sending the proceeds straight to the treasury — a simple way to bootstrap funds and distribute votes.

docs.h.included

  • Next.js app (App Router, TypeScript, Tailwind)
  • GovToken + TimelockController + MyGovernor (+ optional GovSale) — Hardhat
  • Multi-step deploy wizard that wires the timelock & governor roles
  • Dockerfile + docker-compose
  • README + .env workflow

docs.h.contracts

  • GovToken.sol — ERC-20 governance token with on-chain voting power and gasless approvals; holders delegate (to themselves or a delegate) to activate their votes (OpenZeppelin ERC20Votes + ERC20Permit).
  • TimelockController — OpenZeppelin timelock that holds the DAO treasury and executes passed proposals after a configurable delay.
  • MyGovernor.sol — OpenZeppelin Governor (settings + simple counting + token votes + quorum fraction + timelock control): proposals are created, voted on, queued through the timelock and executed.
  • GovSale.sol — an optional fixed-price sale of an allocation of gov tokens; the native-coin proceeds go straight to the treasury (OpenZeppelin Ownable).

docs.h.stack

docs.stackLine

docs.chainsLine

docs.h.quickstart

docs.quickstartP

unzip dao-governance.zip && cd dao-governance
npm install
npm run dev

docs.quickstartUrl

docs.h.configure

docs.configureP

  1. docs.wizard.1
  2. docs.wizard.2
  3. docs.wizard.3
  4. docs.wizard.4
  5. docs.wizard.5
Tip · docs.configureTip

docs.configureP2

docs.h.customize

docs.h.branding

docs.brandingP

docs.brandingP2

docs.h.languages

docs.languagesP

docs.h.editing

docs.editingP

docs.h.configRef

docs.configRefP

  • docs.configRef.1
  • docs.configRef.2
Tip · docs.configRefTip

docs.h.deployContracts

docs.deployContractsP

# compile + copy artifacts the app/wizard use
npm run compile

# deploy to the network in your .env (RPC_URL + DEPLOYER_PRIVATE_KEY)
npm run deploy

docs.deployContractsP2

docs.h.deployApp

docs.h.vercel

  1. docs.vercel.1
  2. docs.vercel.2
  3. docs.vercel.3

docs.h.docker

docs.dockerP

# build + run; with no .env it opens the setup wizard
docker compose up --build

# once you have a .env, pass it in:
docker run --env-file .env -p 3005:3000 dao-governance

docs.dockerP2

docs.h.vps

docs.vpsP

npm install
npm run build
npm run start   # serves the production build

docs.h.checklist

  • docs.checklist.1
  • docs.checklist.2
  • docs.checklist.3
  • docs.checklist.4
  • docs.checklist.5

docs.h.support

docs.supportP