---
tags: v3, working session, notes
---
# Blacksmiths v3 Working Session #1
- Agenda: https://hackmd.io/OwQa8aH_R7mBVjc4IDz6cg
- Goals:
- Identify items to turn into specific tasks
## Initial Tasks
- What do we need to do to begin turning UX specs into stories and specific stories for folks to work on?
- How can we split teams and identify who works on which areas?
## Initial v3 Scope (Reference v3 Scope Doc)
- What are we initially building?
- **POC of Summoning App with features**:
- Hard mode summoning app
- v1 of subgraph, DH Baal contract, Baal summoner contract
- Rage versions of component library and SDK/utilities
- Design: UI Design & UX Specs
- **Simple Hub application**:
- List of DAOs user is in
- (Design will need to take a pass at this)
- Dig into our data SDK to explore and support fetching for 2 main scenarios:
- 1) Scoped to a user
- 2) Scoped to a DAO
- **Core DAO UI**:
- As we move along we can dig deeper into this
### Summon & Hub Design Review
- Review the summon designs
- Review data inputs/outputs
- Identify micro/macro components to put into the component library
- Repeat this process as we go
-
## What can we start with?
### Ops
- Build out GH Actions and deployment targets (Keating)
- Libraries to `npm` and frontend to Skynet
- Domain set up for Skynet deploys: `alpha.summon.daohaus.club`
- GH Actions/Deployment Pipelines:
- Component library
- Subgraph deployment
- Serverless deployment
- Monorepo setup
- Point to internal filepaths and alias
- Packages:
- Subgraph
- Research local Graph deployment
- Local Graph node for development
- UI/Component library
- Baal Contract (down the line)
- How can we simplify the Baal repo and make it more straightforward for folks?
- Can we release Baal as a `npm` package similar to OpenZeppelin?
- Research how to maintain connection to initial Moloch Mystics repo will require research
- Do we want all of this in our Rage repos?
- Local development docs
- Do a session to make sure folks are on the same page
- Set up the `env`
- README for each package at a basic level
- How to get started with the Monorepo?
- Anything going into Rage repo should be willing to deprecate
- Anything built for prod should live in regular monorepo
- Figure out QA
- Common linter/prettier configurations
- Ensure everyone is aligned and using these
- Do a session to ensure that everyone is able to run things locally
- Sync folks usage (can also sync up with `.vscode` setups)
- Component Library notes:
- (add these back, was talking so need to revisit notes!)
### General Thoughts on Haus Libraries
- Give alpha version of AriaKit a test in addition to ReachUI and RadixUI
- Andy having issues with AriaKit alpha -- may be too early, but going to pair with Keating to check this out
- What do we want to call these?
- How will we handle cards that have a lot of unknowns -- how do we communicate this w/o it slowing progress?
## Activities and Questions
- How do we want to transition Rage apps to Sage apps?
- What does this look like?
- How/when do we transition? Are there different teams?
- Rage (alpha) -> beta -> release (v1)
- Milestone -> step back and identify what needs to happen while transitioning?
- Tests, documentation, share learnings, etc.
- What other app boilerplate stories can we write?
- What routes are needed for an app?
- What pages are needed?
- Navigation
- Basic layout
- Can create an `nx generator` that is DAOhaus specific when we identify common layouts
- How can we identify and leverage common patterns and pull these into our libraries?
## How to Split Teams?
- May be awkward at first -- this'll evolve over time
- Patient early on, but worth exploring at an initial grouping
- **Contract/Subgraph**
- Sam
- dekan
- Keating
- **Summon App Rage**
- Jord
- Andy (overlaps with component library)
- Output:
- Playing with initial version of component library
- Data SDK / utils -- pull out utils as they're being used
- Will SDK include interacting with s3, subgraph, contract? Any third party data service? Does this include tx legos?
- How do we want to update the tx legos?
- Read/transform
- Does this also come with a set of utils?
- Encode/action/working with ABIs
- **Component Library**
- Andy (starting on the micro elements of component library)
- Jord (starting on the macro elements)
- Planning to meet in the middle as their work converges
- **Hub Rage App**
- Component library (basic components) - Andy
- More data library work - Keating/Sam?
- **Data**
- Sam
- Keating
- Jord
- Conducting group review as we build this out to identify patterns
## Baal Summon UI Review (Rage)
- (Figma walkthrough with comments)
- Potential confusion on ERC20 name/symbol and how it shows in the app (name of token vs. display name in app)
- UI around Rage Quit:
- List of tokens, which do you want to Rage Quit?
- Proportion of RQ so not all or nothing
- How do we want to handle ignoring spam tokens?
- Data pulled in form:
- Native currency (likely hardcoded)
- Leverages user submitted data earlier in the form -- local state
- Shamans:
- Hide if we publicaly release -- not having available during Summoning
- Tables (macro component) that unifies this
- Need non RegEx way to handle this
- Build table UI easily, but also handling and crunching the data into format needed by Baal contract
- (Not for Rage) but being able to handle CSV value inputs that'll split and generate the table UI
- Visit the docs? -> Loom video of someone summoning?
- What should this be, especially since it's mostly DH folks using this?
- Integration with Poster with the HackMD having an embedded video (IPFS link?)
- Look into service for video hosting
- (Down the road) Poster for Docs
- Poster should be immutable but docs change often, so this may not be the best usecase
- Can these pull in existing content and render it?
- Components:
- Inputs that we're styling (and multiple states)
- Input, Textarea, Select, Checkbox, Radio, Tooltip
- Can also optionally include functionality for integration with forms (this has pro/cons)
- Input, focused, demonstrations for different states for Radio and other components
- Buttons
- Button states
- Primary, secondary (text button)
- Title and Text
- Separation of semantic and presentational
- Accordion
- Dropdown/multi-select
- Table
- Global Connect Button with multiple states
- Are we using Quiver to handle wallet state?
- Used in the Yeeter for wallet connection and for one of the transactions
- Quiver can be used in the Summon Rage App
- Do we have a list of all the input states for validation?
- Validation on blur, change, submit, helper text, etc.
## Hub App Design (Rage)
- Worthwhile exploring early on for the component and data fetching practices
- Can have same stories as building out Rage apps
- Are we doing a shareable nav?
- Can take in a nav object and populate items
- Naming components:
- Thinking about how we want to name macros with the designers to create a shared design language
- Will theming be included in v3?
- Light and dark mode, but not sure beyond this
- Limit to a set amount of things that can change and then we can support a theme object (down the road)
- MetaUI may have custom theming
- Could this be moved to a boost?
- Do we enable user created themes?
- Identify design tokens to leave the door open for this
- Should our data library hit a lambda that provides what is needed when it's hit? OR should it work on a schedule where it hits services directly
- Centralizing around our own endpoint may be necessary but we should aim to stay away from this where possible
- Design will need to take a pass at the data being used in this since it'll be difficult to grab
- When we get to doing this, these conversations will be helpful and inform the data fetching structure
- Start by trying to hit the services and then reach toward lambdas if/when this becomes an issue
- Do we want to do a click and reveal style UX so we don't grab all this data at once
- How would we sort it?
- Security -> UX -> Decentralization
- Decentralizing our state is critical
- If our getters/setters are semi-centralized at first this could be helpful in other areas
- Look at use case -> can we use decentralized tech? if so, use it, if not, use a lambda that anyone can read the data from
## Outputs
- Create a backlog with these items
- Begin identifying priorities and owners
## Next Steps
- [ ] Outline initial tasks to get folks working more intentionally on v3
- [ ] Create initial cards from our outline and notes
- [ ] Identify teams (Rage and Sage, for example)
- [ ] Identify general data models (starting on Hub) and data fetching
- [ ] Design Ops Processes (Storybook, Component Library, Figma)
- [ ] Define design -> developer handoff processes
- [ ] Identify our core design tokens that will be composed
## Reference
- [v2 data catalog](https://hackmd.io/o7cVYOO4SxiZ03afDDufqA)
- [redux wrapper of an sdk](https://github.com/superfluid-finance/protocol-monorepo/tree/dev/packages/sdk-redux)