Try   HackMD

DEPRECATED! DEPRECATED!

Please see https://github.com/Carbon-Farm-Network/Requirements-Doc

Decide what to do about location

  • How does Raphael's map work now?
  • Quick solution: use the current hack of long/lat string in hREA
  • Not so quick, upgrade VF location: finish issue discussion Lynn/Jill, get into VF, and/or just into hREA, and/or separately into holochain

4/10 Done: we'll do the quick hack.

Decide what to do about agent and agent relationships / roles

  • Should / can this be done as a separate Holochain app, perhaps with some other funding also contributed, and run mostly as a separate project?
  • Should it be integrated with Profiles or whatever else exists now? How would all of that work?
  • What about authorization? What is the current state of holochain object capabilities, and how would that best fit into all of this?
  • Quick role solution: Agent's role in relationship to the network (farmer, mill, designer, etc.) can be hacked into hREA Agent (I think that might be all we need for now)
  • Or put the VF model into hREA

4/10 Done: Unless we discover a requirement we don't know about yet, we'll do the quick hack. There might be something about permissions that will push us into a more robust implementation, don't know yet.

Get the base architecture working

  • Discuss: "We"? NH components? What else?
  • Get Raphael's map working with hREA and whatever else is decided - evaluate

Network configuration

  • Can we make use of parts of REA Playspace for this?
  • Agents and roles (Agents are in Playspace)
  • Resource specifications (need soon but not right away, basically have already in Playspace)
  • Process specifications (don't need soon, but basically have already in Playspace)
  • Units, what are the current thoughts about how to handle this in general? (don't need right away though)

Add features to the map

  • Determine this with Laura/Evan (4/10 they liked the mockups below, and haven't yet suggested improvements to them)
  • Might include role selection, various search, agent info popup/pane > we might need to understand this better before we think we can use the current agent location hack
  • Might need adding some of the following first

What are the adjacent possible features?

  • Determine this with Laura/Evan
  • Question: It seems like if we hack in location and/or agent relationships/roles, we could have extra money to play with. That means there could be a trade-off around having a deliverable with more to see, which could attract more funding vs. laying better groundwork around agent and location. 4/10 Laura/Evan agree we should minimize backend work, and focus on frontend that is shiny, but more importantly gives people good ideas of what is possible.
  • Idea: offers, integrated into the map popups (would need Resource Specifications for that)
  • Idea: certifications of agents, also have to add to hREA (generic facet structure?), integrated into map popups
  • Idea: see how close the visual flow pane of the Playspace is to being able to create plan flows in a way that would start to work for NYTL, even if just as a demo; and if that makes sense to Laura/Evan
  • Idea: Add simple contextual(?) messaging between the agents

Existing UI thoughts (real and mockups)

Raphael's map:

Old mockups, just food for thought, Laura/Evan haven't seen these afaik:

============ to be moved later

The map plus general UI/UX decisions

Discussion needed. Brainstorming:

Starting with the map, which will be the default page. Display all nodes which have a location.

When something is clicked on the map, where does the info appear? A pane on the right? A popup? Both (just a brief rollover on the map)?

Should there be a "permanent" pane on the right? Starting maybe with a list of agents by role?

Or something even more dashboardy?

Then, for other features (right now just configuration), what would be the preferred setup? Tabs for sections? More tabs vs less and sub-choices? Hamburger menu? Note there will be a lot of features eventually.

Agents

Question: What have we got now for relating Agents with the holochain pubkey ("holochain agent")? And do we have a way for more than one holochain agent to have permissions for one organization? Or even for one holochain agent to have permissions for one organization? (Check the doc.)

hREA

We should be OK with what is there now. They said that all nodes are organizations, so we can hack Organization.classifiedAs for role in the network if no objections. It can be just a string (or is that validated for URLs?)

UI

Agent List

Create a list of agents, can be just names.

Agent CRUD

Add agent popup/modal or separate pane (?) with:
- Logo (Agent.image)
- Name (Agent.name)
- Display information (Agent.note, will include formatted contact info, will end of lines work?)
- Role (use Organization.classifiedAs)
- Location (Agent.primaryLocation, for now just text: lat, long - specify the exact format expected)
- later when we have facets: facets/facet values for the agent

Sample from REA Playspace, just informational, or maybe there is some code that could be re-used.


Add to the map

Add Role as a filter for the Agents on the map. Also add facet/facet values as filters. (? double check all of this)

Add Agent display for when an agent is clicked. Include: image, name, contact info (in notes), facets with facet values designated for them. Leave room for adding offers later.

Facets

Faceted classification will be used for both Agents and ResourceSpecifications. This will be all user defined. Approximate examples:

  • Agents: facet: Carbon Beneficial Certified, facet values: Certified, In progress, Not Certified.
  • Resource Specifications: facet: Color, facet values: White, Black, Gray, Ivory.

hREA

This needs to be added to hREA, noting that ResourceSpecification and Agent exist. (Discussion welcome to improve this model!)

Facet.categorizes is there to designate "Agent" or "ResourceSpecification". If you would rather have separate sets of Facets/FacetValues for each instead, I'll change it. Maybe the current modularization would indicate that?

We'll need to decide how this fits into the zome/DNA scheme, as well as the graphql scheme. I don't see putting it into VF until we try it out here, if that is OK.

UI

Configuration for the network

This is just the Facets and FacetValues within each Facet. This is done mostly just at the beginning of the network, so we don't need anything fancy. We could even consider just loading CFN data in to save time, using graphiql. That would make sense to me.

Add FacetValue choices

Agent: Add to the Agent CRUD form a way to pick zero or one FacetValue for each Facet, store the data.

ResourceSpecification: Include it when we get to that, which will be needed for offers.

Add to the map

Both Agent and ResourceSpecification facet values will be useful filters, once offers are done. Start with just Agent. Let's get some direction from the users on this.

ResourceSpecifications

hREA

Should be all there. We'll need to load in some units (there won't be very many).

UI

Resource Specification List

Create a list of resource specs, can be just names.

Resource Specification CRUD

Add agent popup/modal or separate pane (?) with:
- Name (ResourceSpecification.name)
- Image (ResourceSpecification.image)
- Default Unit of Resource (ResourceSpecification.defaultUnitOfResource)
- Default Unit of Effort (ResourceSpecification.defaultUnitOfEffort)
- Description (ResourceSpecification.note)
- later when we have facets: facets/facet values for the ResourceSpecification

(I don't think we need ResourceSpecification.resourceClassifiedAs.)

Sample from REA Playspace, just informational, or maybe there is some code that could be re-used.


Offers

For now, this will be pretty much offers from the farmers, but eventually could include all roles. When possible, they will want a page where the farmers (and other eventually) can enter their own agent information, and their own offers to the network.

hREA

This includes Proposal, ProposedIntent, Intent (one Intent for what is offered, one for the price). I think it is all there already?

As noted above, we'll have to load in a few Units.

UI

Offer CRUD

On the screen:

Proposal.hasBeginning (date available, default to today)

(main Intent, ProposedIntent.reciprocal=false)
Intent.resourceConformsTo (ResourceSpecification.name, plus all the FacetValues for the ResourceSpecification filter by TBD, set up a facet)
Intent.resourceQuantity (Measure.hasNumericalValue + Measure.hasUnit)
Intent.availableQuantity (Measure.hasNumericalValue + Measure.hasUnit)
Intent.note
Intent.image

(reciprocal Intent, ProposedIntent.reciprocal=true)
Intent.resourceQuantity (Measure.hasNumericalValue)
Intent.resourceConformsTo (ResourceSpecification.name, dropdown filtered by TBD, set up a facetValue for currencies)

Fields saved:

Proposal.hasBeginning (screen, default date created)
Proposal.hasEnd (screen, if no longer available checked, save current date)
Proposal.inScopeOf (the network agent)
Proposal.unitBased = true
Proposal.created (current date when created)

(main Intent)
Intent.resourceQuantity (screen, unit="one")
Intent.availableQuantity (screen)
Intent.resourceConformsTo (screen)
Intent.image (screen)
Intent.inScopeOf (the network agent)
Intent.finished (false until no longer available is checked, then true)
Intent.note (screen description)
Intent.action (always "transfer"??? might also be "deliverService"; maybe even "work", others???)
Intent.provider (the offering agent)
ProposedIntent.publishedIn (the proposal)
ProposedIntent.publishes (the Intent)
ProposedIntent.reciprocal = false

(reciprocal Intent, the "price")
Intent.resourceQuantity (screen numeric value, unit = "one")
Intent.resourceConformsTo (screen)
Intent.inScopeOf (the network agent)
Intent.finished (false until no longer available is checked, then true)
Intent.action (always "transfer")
Intent.receiver (the offering agent)
ProposedIntent.publishedIn (the proposal)
ProposedIntent.publishes (the Intent)
ProposedIntent.reciprocal = true