# Nerman.js - A Nouns SDK


---

## TLDR

---

26 ETH to continue development of [Nerman.js - Nouns SDK](https://github.com/JoeCars/Nerman.js) and the Nounish event feed discord bot.

![Nerman](https://i.imgur.com/bZhHfhr.png)

---

## PROP V2 CHANGE LOG & NOTES

---

*In response to feedback from the previous proposal ([319](https://nouns.wtf/vote/319)), we have reduced our scope and ask. This is now for only 3 months and covers 1 full time dev + Joel Cares (part time strategy & dev).*

*The primary work in this proposal is in continued development of Nerman.js, a Nouns SDK to help developers building in the Nouniverse. Actual discord bot development is a smaller part of the workload.*

*We have also added much more specific features to each section in support of the general vision communicated before. Lesson learned - Nouns DAO does in fact prefer to see the long proposals with comprehensive details.*

---

## INTRO

---

Nerman was funded by Nouns DAO through [Prop 77](https://nouns.wtf/vote/77). Our team has been hard at work programming Nerman's various bots and libraries since then. Check out [nerman.wtf](https://nerman.wtf) for a summary of the project and links to the various code repositories.

In this proposal we focus our efforts on two things:

1. **Nerman.js ([GitHub](https://github.com/JoeCars/Nerman.js), [NPM](https://www.npmjs.com/package/nerman))**
2. **Nounish Feeds - Discord Bot ([GitHub](https://github.com/JoeCars/Nerman))**.



---

## NERMAN.JS - A NOUNS SDK

---

Nerman.js provides simple type-safe access to Nouns DAO contract events, as well as custom events such as Noun O'Clock. The user provides a JSON-RPC url and connects directly to an Ethereum node without any further 3rd party hosted services.

You can install Nerman.js with [NPM](https://www.npmjs.com/package/nerman)

**DEMO - NOUN O'CLOCK**

``` typescript
import * as nerman from "nerman";
const Nouns = new nerman.Nouns( JSON_RPC_API_URL );
Nouns.on("AuctionEnd", (data : nerman.EventData.AuctionEnd) => {
    // It's Noun O'Clock, do stuff here!!
});
```

For more code examples see the ReadMe in [GitHub](https://github.com/JoeCars/Nerman.js). Nerman.js currently supports listening to Nouns DAO events such as auction creation, auction bids, proposal creation, dao votes, Noun creation, Noun transfer, delegation changes, and more. We also launched support for [Nouns Nymz](https://nouns.nymz.xyz/) and have a live feed posting in a Nouns community Discord.

**NEW FEATURES - EVENTS**

Nerman.js will provide and maintain access to events across the Nouniverse. For each event we will have:

 - properly typed listener functions
 - trigger functions and sample data for testing
 - unit tests with sample and live data
 - clear documentation on Nerman.wtf
 - easy config option in Nerman Discord bot for anyone to add customized event feeds to Discord

Nouns DAO Events
 - All DAO Contract Events completed as described above
 - Events that require further calculations, like Prop Voting Start, Prop Voting Complete (failed, or succeeded and ready to queue), Prop Ready to Execute
 - Helpers to better parse data + format posts (ie better prop transaction summaries)
 - Updates to v3 contract if it occurs within time period
   
Prop House Events
 - When instantiating the Prop House object the user will specify a community address and get events specific to that House
 - RoundCreated, ProposingStarts, NewProposal, VotingStarts, NewVote, RoundComplete

Federation Governance Pool
 - General tool for listening to Federation governance pool events, instantiated with the specific pool address
 - We will cover the basics (bid, cast vote, execute) and explore other useful events from the contract

NounsNymz
 - New Post (already completed, live in NCD)

**NEW FEATURES - INDEXING**

Nerman.js will index on-chain Nouns data. This indexed data allows Nerman to offer more complicated and instant analysis of the data, including reporting behavior of voters, bidders, vote participation rates, etc.

 - Pre-indexed Nouns data included with library
 - Library can continue indexing to keep data up to date
 - Or - go trustless - start from scratch and index everything yourself
 - All basic DAO data will be available through function calls
 - We will implement further functions that offer simple analysis, such as getting voter participation rates or a list of proposals sorted by transaction size.

**NEW FEATURES - DOCUMENTATION**

[Nerman.wtf](https://nerman.wtf) will be a canonical source of knowledge about the Nouniverse, above and beyond technical documentation of Nerman.js. Our resources will be a useful starting point for anyone developing in Nouns.

- SEO research and optimization to target terms people are actually searching for
- Canon documentation of Nounish contracts on Ethereum and their associated ABIs
- Map of different off-chain and in development Nouns projects with links to websites

---

## DISCORD BOT - NOUNISH FEEDS

---

Nerman offers customizable Nounish event feeds for Discord channels, displaying formatted embeds with the main Nouns DAO contract events from Nerman.js. Users can configure which events to display in a channel with a simple command.

![](https://hackmd.io/_uploads/HyX8b1U_3.jpg)

**CURRENT NOUNISH FEEDS**

- **Agora Discord**
  Auction and DAO Proposal events in #gov-updates channel
- **A Nouns Community Discord**
  Auction and Proposal events in #general channel
  Nouns Nymz posts in #nouns-nymz
- **Nouncil**
  Auctions, Proposals, Token Transfers in Feeds Section
  Proposal votes and status changes posted in appropriate Prop threads in #nouncil-votes


**NEW FEATURES**

We will add all Nerman.js events as we create them, allowing easy Discord notifications from Nouns DAO, Prop House, Federation, etc.

 - All above events easily configured by any Discord admin.
 - Add support for arguments in event registration commands so we can use general tools (ie Prop House, Federation Goverance Pools) to create event listeners for any specific community.
 - Simple subscriptions to commonly grouped events (Auction, Goverance, transfer + delegation changes)
 - Improved formatting + data on embeds.
 - Continued work setting up and optimizing event feeds in Discords, including NCD, Agora, Nouncil, as well as general consulting to support feeds in communities.
 - Experimental feed ideas, like a 0 vote weight feed as an informal on-chain chat.
 - Discord forum integrations for Nouns DAO proposals where a thread is automatically created for each prop and DAO votes and prop status changes are posted in the appropriate threads.

---

## BONUS POINTS

---

We intend to complete as much of the above scope as possible within 3 months. If we move ahead of schedule we will spend the remaining time working on the features below:

**Contract events from Nounish DAOs**
A generic NounishDAO object that takes a contract address as the argument, verifies the events that it supports, and offers instant access to supported events from any Nounish DAO (Lil Nouns, Gnars, Builder DAO, etc).

**Snapshot Events**
A Snapshot object that allows you to specify a community on Snapshot and listen to its events, such as new Proposals and votes, and to get results when the vote is complete. This will assist with automations for communities that use Snapshot to coordinate Nouns votes, like [SharkDAO](https://snapshot.org/#/sharkdao.eth) and [League of Lils](https://snapshot.org/#/leagueoflils.eth).

**Discord forum integration for NounsNymz**
We can pipe NounsNymz into an automated Discord forum where each new top level comment is its own thread, and sub-comments are included in that thread. This presents the conversations better than a simple new comment feed and allows for non-nouner discord users to engage in the discussion as well. We can also support NounsNymz hashtags so prop specific comments can be piped into a Nouns DAO proposal forum.

**Prop House - Token Specific Feeds**
Specify a token (ie Nouns DAO) and get notifications from all houses that use that token to vote. We could create a #nouns-prop-house channel that posts any new round Nouners can vote on along with their deadlines.

**Image Helpers**
A variety of helper functions for interacting with Nouns on-chain image data, rendering it and converting it between file formats, resizing, generating images from seeds, getting image data for addresses for profile images, etc.

---

## TERMS

---

- funding for the team to continue developing Nerman up to Oct 31, 2023. 
- all code will be open source and released under a permissive license (such as MIT).

---

## TRANSACTION

---

**Total Budget: 26 Ξ**
1 full time dev + Joel Cares (part time)

**Transaction**
26 ETH streamed to 0x09b68020Fb9691C2c20687631EDCF16fdFCba277

Outcome: EXECUTED