# Citizen App
> What happens when a thing breaks or no longer functions? A growing DIY community is predisposed to fix it themselves with the gumption to overcome any malfunctions rather than remain powerless when confronted by a breakdown, pointing to the political possibilities of a renewed spirit of self-reliance animated by social, collective, processes of creative DIY problem solving.
>
> https://ephemerajournal.org/contribution/repairing-community-ut-califas-and-convivial-tools-commons
For neighborhoods and local communities.
A digital tool for coordination and funding of projects, initiatives, bounties etc.
### Proposals
Create a proposal describing a request for change or a new initiative.
Can optionally request funds from the community (crowdfund).
##### Examples
- Create a community garden
- Build a new sauna
- Repair outdoor deck
### Bounty / Task
Create a task for a job to be done and attach a bounty that gets distributed when done. Bounties can be funded by anyone to increase the reward of solving it.
Only approved / trusted participants are eligible for the bounty as to not create incentives to create more of the problems that the bounties reward (cobra effect).
##### Examples
- Clean up graffiti in neighborhood
- Trim trees
- Showel snow
### Problem Statement
There is a growing need for more transparent, inclusive, and efficient civic governance systems. Traditional methods of civic engagement are outdated and fail to leverage the potential of emerging technologies to enhance participation and decision-making.
A decentralized civic engagement platform that combines blockchain technology, AI, and user-friendly interfaces to revolutionize how citizens interact with local governance.
Mobile-first design. Authentication is done with Passkeys for simple sign-in.
Citizens can create proposals for finding alignment on issues and initiatives. The community can vote on a configured set of options. Accounts can hold NFTs, Attestations, or ERC20s that determine their eligibility or proposals to vote on.
When creating a proposal it's written onchain as a Governance poll. The metadata and voting config can be updated up until startsAt has been reached.
Proposals can easily be shared via QR code or URLs:
- Scan QR
- Choose options
- Vote (sign with passkey)
## Architecture Sketching
### Layout
A layout wraps the app. Some actions are only rendered for authenticated user
- Top navbar
- Left
- Logo
- View Proposals
- Right
- Create Proposal
- Wallet (shows a Sign In button or wallet icon based on auth status)
### Create Proposal
Proposal form:
- Title
- Description
- Starts at
- Ends at
- Actions
- ERC20 transfer amount from -> to
- ERC721 mint to new citizen
- Voting options
- Vote eligibility
- Select options
- ERC721
- ERC20
- Attestation
- Amount input (amount of selected token balance)
#### User Flow
- Proposer sign in with passkey
- Click Create Proposal button
- Fill out form
- Click Create button
- User is redirected to View Proposal page
### QR Code
QR codes can be created and scanned.
- Create Proposal
- View Proposal
### Model
#### Proposal
The proposal is itself a contract and created when `Governance.propose` is called.
Being a contract, it can receive tokens and transfer
```ts
type Proposal = {
id: string;
startsAt: Date;
endsAt: Date | null;
metadata: {
title: string;
description: string;
location: number[]; // lat, lng
tags: string[];
};
votingToken: Address; // Voting token
fundingToken: Address; // Funding token
// When votes are cast, should it transfer the tokens or just check balance?
votingType: "balanceOf" | "transfer";
votingOptions: {
index: uint4; // order to be displayed in UI
type: uint4; // ERC721 | ERC20 | EAS
text: string;
}[];
// Contracts to call after proposal is tallied
actions: { contract: Address, data: Hex }[];
}
```
### Proposals
The citizens can search and filter created proposals.
Metadata can be searched for title, descrition, location, and tags.
Propsals can be searched adnd filtered by start & end times, and metadata (title, description, location).
- Navigates to Proposals page
### View Proposal
- Voter sign in with passkey
- Can see the metadata and voting configuration (starts & ends at)
- Status badge (draft, voting, succeeded, rejected)
- Voting options
- If more than two options voter allocates voice credits (quadratic voting)
### Fund Proposal
People can fund proposals by transfering to Proposal contract. For simplicity, this can be done directly to the contract addresses, for example via Coinbase.
### Create Pool
Pools can be created and funded with tokens.
Proposals can be configured to transfer funds from Pools to addresses (projects, initiatives, or the proposal itself).
Anyone can fund these pools (individuals, companies, organizations, governments, etc).
### Use-cases
#### Grants
Create a proposal with the approved projects to vote for and citizens vote quadratically.
Highest scoring projects receive a share of the Matching Pool (proposal funds).
- Voting token: USDC
- Voting type: transfer
---
Let's imagine a Network State, Popup Village, Network, Protocol, etc. And let's call it a DAO for simplicity.
This DAO has members signaled by an ERC721 (other DAOs might have different pre-conditions eg ERC20 amount > x, an EAS Attestation, etc.). I would guess there might be different roles in some DAOs also (who can create proposals, who can vote etc).
Each Proposal can be funded with tokens that are distributed after the voting. The proposal author might create a proposal to retrofund 10 projects and want the community to vote for them quadratically. This makes the proposal fund effectively being the matching pool.
Other proposals might be about seeking funding for a residency, or vote on the location.