Skip to content

MosslandOpenDevs/Agora

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 

Repository files navigation

Agora — Mossland Public Decision System

Agora is Mossland DAO's official public decision layer — the place where Mossland Coin (MOC) holders discuss, propose, and vote (gasless) on the decisions that shape Mossland. Votes are gasless, EIP-712 signed, and weighted by each voter's MOC voting power at a fixed snapshot block; unless a proposal explicitly says otherwise, Mossland DAO treats an Agora result as its binding decision of record. Agora is not an on-chain transaction-voting app — it is a verifiable off-chain voting and decision-record system, upholding the values of openness, collaboration, and innovation at the heart of the community.

🔗 Live app: agora.moss.land

What Agora is / is not

  • Is — Mossland DAO's official public decision system: verifiable, gasless, off-chain (Snapshot-style) signed voting, weighted by MOC voting power at a fixed snapshot block, and independently re-verifiable by anyone.
  • Is — the DAO's binding decision layer and system of record: unless a proposal states otherwise, the DAO treats an Agora result as its binding decision.
  • Is not — an on-chain transaction-voting app. Voters never submit an Ethereum transaction to vote; they sign a message off-chain, and there is no gas.
  • Is not — a DAO treasury or token contract. Agora records decisions; it does not custody funds or move tokens on your behalf.

Purpose

Agora is the democratic heart of Mossland DAO: a platform for members to propose, discuss, and vote on key decisions — fund allocation, project direction, community initiatives, and more. Every voice in the community is heard, and every MOC holder has the power to shape the future of Mossland. Voting is off-chain and gasless, but the outcome is authoritative: it is the DAO's binding decision of record.

Where Agora sits — the Mossland governance stack

Mossland runs a three-layer governance stack, and Agora is the binding decision layer — the layer that produces Mossland DAO's decisions of record:

Layer What it does
Passport Wallet verification, eligibility, and the participation ledger — signature-only, gas-free.
Agora (this project) Formal, MOC-weighted proposals + gasless off-chain voting. Results are the DAO's binding decisions of record.
Algora Experimental 24/7 AI deliberation that feeds recommendations into Agora's human vote — "AI recommends, humans decide."
flowchart LR
    P["🛂 Passport<br/>eligibility &<br/>participation ledger"]
    A["🏛️ Agora<br/>proposals &<br/>gasless off-chain voting<br/><b>(binding decision of record)</b>"]
    AL["🤖 Algora<br/>24/7 AI<br/>deliberation"]
    P -- "verifies voters" --> A
    AL -- "recommends" --> A
    A -- "signed participation events" --> P
Loading

Agora emits cryptographically signed participation events to Passport and hosts the AI proposal-brief pipeline — together the Governance Pack (see below).

MAIT is not a separate app — it is Agora's internal AI layer (AI proposal drafting, summaries, and governance briefs). The AI brief pipeline was absorbed from the sunset DAO-MAIT service, and mait.moss.land redirects to Agora.

Key features

  • 🗳️ Gasless voting — cast For / Against / Abstain with a single wallet signature (EIP-712) — no transaction, no gas. Votes are weighted by each voter's delegated MOC voting power at the proposal's fixed snapshot block (Snapshot-style) — with a raw-balance fallback for holders who've never delegated — and are independently re-verifiable by anyone.
  • 📝 Proposals — create rich-text proposals (off-chain, no gas), browse, and follow a transparent lifecycle: In Review → Approved → Voting → Closed.
  • 💬 Forum — topics with categories, comments, likes, reports, and view counts for open community discussion.
  • 🔐 Wallet login (SIWE) — one-click connect and a single SIWE (EIP-4361) signature; no passwords, no gas, no chain switching. Sessions ride on a secure HttpOnly cookie.
  • ✨ AI proposal drafting — generate proposal and topic drafts with an AI assistant (MAIT, Agora's internal AI layer) while writing.
  • 🧠 AI governance briefs — neutral, extractive summaries of proposals generated by Claude Opus 4.8 (with a Claude Sonnet → Gemini fallback), bound to the proposal's content hash so a brief always matches what it summarizes.
  • 👤 Profiles — MOC balance, voting history with explorer links, authored proposals/topics, and a selectable pixel-art character PFP.

How voting works — gasless & verifiable

Voting is off-chain and gasless, in the style of Snapshot — voters never submit an on-chain transaction, yet Mossland DAO treats the tallied result as its binding decision of record:

  1. When an admin approves a proposal, the backend locks its snapshot block to the current Ethereum-mainnet block.
  2. A voter signs an EIP-712 vote (proposalId, choice, snapshotBlock) with one wallet prompt — no transaction, no gas.
  3. The backend verifies the signature and derives the vote's weight from the voter's delegated MOC voting power at the snapshot block — MOC.getPastVotes(voter, snapshotBlock) on the ERC20Votes token, falling back to MOC.balanceOf(voter) for a holder who has never delegated — so weight can't be forged or bought after the fact.
  4. Each vote stores its signature and snapshot block, so anyone can independently re-verify it by recovering the signer and recomputing that on-chain voting power at that block.

Unless a proposal explicitly states otherwise, Mossland DAO treats the closed result as its binding decision of record — even though no on-chain transaction was cast to vote.

The governance token is MOC, an Ethereum-mainnet ERC-20 (ERC20Votes + Permit, CertiK-audited); the legacy Luniverse MOC was retired ahead of the mainnet migration. The earlier on-chain voting contract is no longer used for new votes — it is retained only to close pre-migration on-chain proposals, which still link out to their original transactions on a block explorer.

Governance Pack — participation proofs to Passport

Because Agora is Mossland DAO's official decision layer, the events it emits to Passport are governance-activity proofs — a record of what a member actually did in governance, not a mere "connected to Agora" badge. After a member consents, Agora signs each participation event with Ed25519 and delivers it through a durable outbox. Passport records only post-consent activity, and raw comment text is never stored — only a content hash + URL.

The emitted events are distinct governance actions of differing weight, strongest signal first:

Event Meaning Signal
Proposal approved / MIP accepted A proposal cleared governance Very strong
agora_proposal_created Member authored a proposal Strong
agora_vote_cast Member cast a vote Strong
agora_comment_created Member commented (hash + URL only) Medium
agora_connected Member connected / consented Weak — a one-time ceremony, not an activity

Passport and Agora are joined only by wallet address + signatures — the two services do not merge accounts or data. The Governance Pack also includes the AI brief pipeline (see AI governance briefs above).

Architecture & tech

A React single-page app on a static edge, a Node.js API, and Ethereum for MOC token-weighting behind gasless, verifiable off-chain voting.

Area Stack
Frontend React 18 SPA · Vite · TypeScript · MUI · ethers v6 · hosted on AWS S3 + CloudFront
Backend Node.js 24 · Express · MongoDB (Atlas) · ethers · containerized on AWS
Web3 Ethereum mainnet · MOC ERC-20 (ERC20Votes + Permit) · gasless EIP-712 off-chain voting; vote weight read on-chain from delegated MOC voting power (ERC20Votes) at a snapshot block, with a raw-balance fallback
Auth SIWE (EIP-4361) wallet login · single-use nonce · HttpOnly-cookie sessions · no passwords
AI (MAIT) Anthropic Claude (governance briefs) · Google Gemini (proposal drafting) — Agora's internal AI layer
Governance Pack Ed25519-signed participation events to Passport (durable outbox) · AI brief pipeline
Abuse / analytics Google reCAPTCHA v3 (server-verified on votes) · Google Analytics

Repositories

Agora is built across the repositories below. The application source is kept private for security; the sections describe each component. If you'd like to contribute or collaborate, reach out at contact@moss.land for access.

Repository Role
Agora_frontend The MOC-holder-facing governance dApp — forum, proposals, gasless voting, profiles, and a role-gated in-app admin area. Deployed at agora.moss.land.
Agora_backend The API service — auth, proposals, voting, forums, AI briefs, and the Passport (Governance Pack) integration.
Agora_frontend_dashboard (deprecated · retired) The former standalone admin console — now superseded by the in-app admin area in the main frontend.

ℹ️ Admin tools have been consolidated into the main Agora frontend as a role-gated, in-app admin area. The former standalone admin console has been retired, and its Agora_frontend_dashboard repo is deprecated and no longer maintained (superseded by the in-app admin area) — there is no separate admin app or domain.

We welcome contributors with expertise in front-end and back-end development, Web3 integration, or UI/UX design. Join us to shape the future of Mossland DAO!

Documentation & related links


📜 Development history & milestone log (2024–2025)

Agora began development in January 2024. The log below records the original milestone scoping and weekly progress that led to the live product.

Milestone #1 (2024/1/16 – 2024/2/15)

For Milestone #1, the focus was a comprehensive Product Requirement Document (PRD) covering:

  1. Membership and Access Rights Management.
  2. A DAO-based governance system implemented through Agora, including a robust Proposal and Voting System.
  3. Considering integration with existing voting mechanisms in the Mossland Metaverse.
  4. Forum-style communication channels within the DAO.

Expected deliverables

  • A detailed user flow of the product, mapping out the interaction pathways for different user types.
  • A fully designed high-fidelity (HiFi) design of the product interface, presented in Figma. This design encompasses all UI elements for a seamless, intuitive experience.

Research & development strategy:

  • Engage in ideation sessions to brainstorm and refine concepts, ensuring solutions are innovative and user-centric.
  • Conduct product dogfooding to internally test and iterate, gaining firsthand experience of the functionality and UI.
  • Perform desk research to gather references and insights, analyzing existing solutions and best practices in similar domains.

Week 1 (1/16–1/23)

  • Project kick off w/ mean — handover of the tasks to be done; shared Milestone #1 scope.
  • Mossland Metaverse desk research
  • Read me 초안 작성하기 (draft README)

Week 2 (1/23–1/31)

  • 모스랜드에게 요청할 정보 정리해서 콜 요청하기 (compile info to request from Mossland, request a call)
  • 기획서 초안 작성 (draft planning doc) — PRD Draft (in progress)
  • 레퍼런스 리서치 (reference research)

Week 3 (1/31–2/6)

  • 유저 플로우별 상세 기획 (detailed planning per user flow)
  • 프로덕트 룩앤필/네이밍/로고 (product look & feel / naming / logo)
  • 디자인 — lofi 작업 시작 (start lofi design): 메인화면/유저 플로우, 디자인 컨셉
  • DAO 운영 관련 정책 update (DAO operations policy update)

Week 4 (2/7–2/16)

0207 추가 코멘트: 어드민 화면 요구사항 바탕으로 기능 명세 필요 → 디자인 플로우에 반영 예정. 현 lofi 기준 자잘한 수정사항 업데이트 진행 중. 웹앱 기준으로 디자인을 진행했으며, 모바일 화면 반응형 대응은 phase 2에서 project showcase 등 추가 화면 포함해 함께 대응 예정.

  • 어드민 스펙 update
  • lofi 수정사항 반영
  • Hifi 작업
  • 어드민 명세 추가 / 어드민 화면 업데이트
  • 1차 피드백 반영
  • 디자인 색 테마 변경 요청 대응
  • 어드민 topic 숨김(삭제) 처리 케이스 대응
  • 버튼 컴포넌트 디자인 변경 및 상태값 따라 분류

Milestone #2 (2024/03/12 –, target release: 5.31)

Expected deliverables

  • Milestone #1 product requirements, English version

  • User onboarding guide content

  • Milestone #1 developed product and admin

  • Dev staffing: 1 FS dev full-time commit basis, 2MM+ PM follow-up

Week 1

  • Milestone #1 requirements delivered in English
  • Dev environment and base setup
  • Front-end work started

Week 2 (3/18–3/26)

  • Finalized front-end UI of the Agora admin dashboard; resolved outstanding UI/functionality questions
  • Deployed internal dev environment for admin dashboard QA
  • Shared admin dashboard code with the Mossland team via GitHub
  • Set up services for the Agora backend (email accounts, MongoDB, Luniverse blockchain node)

Week 3 (3/26–)

  • Admin dashboard front-end UI ready for initial review
  • Started back-end Web2 integration for the admin dashboard (CRUD endpoints for users, proposals, forums)
  • Started setup for the user-facing front-end — Demo
  • Loaded updated code to Mossland GitHub for admin UI and backend
  • Added admin's missing screens and policy complements

Week 4 (4/2–4/8)

  • Admin QA
  • Added front-end authentication on the admin UI (Metamask login gated to admins)
  • Started user-facing Agora UI + back-end Web2 integration
  • Started authentication / user-profile syncing on the user-facing Agora

Week 5 (4/8–4/15)

  • Added wallet signature on admin UI login (stronger auth)
  • Reported-topics empty-list button debugging
  • Rendering proposal votes
  • Rendering user activity
  • Login failure (unauthorised) → alert message
  • Require wallet signature when logging in
  • Table column search / sort

Week 6 (4/15–4/22)

  • UI styling + backend integration for the user-facing Agora
  • Added authentication handling for the user-facing Agora
  • Began Web3 integration (voting; which data is written to chain)
  • Integrated Mossland API calls for treasury data / user balances by wallet address
  • Second-round QA for the admin UI
  • Updated requirement docs with Figma comments

Week 7 (4/23–4/30)

  • Finalized UI styling for the user-facing Agora
  • Backend endpoint integration into the user-facing Agora
  • Web3 integration for voting and proposal creation on chain
  • Fixed minor QA tickets for the admin UI
  • UI mockup for proposal end-date extension in Figma

Week 8 (5/1–5/8)

  • QA on the user front-end
  • Decided detailed voting logic
  • User-guide content planning before design
  • Finalized UID / policy docs for submission
  • Finalized the user-facing Agora codebase
  • Web3 integration for voting and proposal creation on chain
  • Web3 registration flow accounting for existing Mossland users
  • Finalized authentication and permissions on all backend endpoints
  • Admin QA and front-end QA

Week 9 (5/8–5/15)

  • Front-end for admin and user-facing Agora complete
  • Web3 integration for voting and proposal creation on chain
  • Fetch user's MOC balance
  • Visualize voting results + passed metric
  • Admin QA and front-end QA

Week 10 (5/16–)

Complete:

  • Web3 integration for new proposals, voting, and close-voting complete
  • Fetch user's MOC balance — via a temporary 3rd-party API at the time
  • Voting-result UI complete
  • JWT authentication added to all endpoints requiring user login

In progress:

  • Passed-proposals metric
  • Final proposal result (fetch from contract once endDate is met)

To-do:

  • Handover code to Mossland; deployment to the production environment + necessary ENV variables from Mossland side
  • Transition the user's MOC balance API once it is ready from Mossland
  • Admin QA
  • Front-end QA

Since this log, Agora shipped to production at agora.moss.land, migrated to gasless off-chain (EIP-712) voting with on-chain MOC snapshot weighting, adopted SIWE (EIP-4361) login with HttpOnly-cookie sessions, added AI proposal drafting and AI governance briefs, and integrated with Passport via the Governance Pack.

QA & planning references: QA list · Milestone list

About

Agora is a decentralized governance framework by Mossland DAO, aimed at enabling decision-making within the community. It supports proposal submissions, discussions, and voting to ensure transparency and collaboration. The framework's development includes membership management, a proposal and voting system, and integration possibilities

Resources

Stars

2 stars

Watchers

5 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors