Re-structuring the citizen app and making room for more sub-apps

This is what the current citizen app contains:

Screen Shot 2022-08-22 at 1 38 19 PM

In other words, token functionality plus passport issuance and visualization.

We will also add the ability to enter and view agreements in the Nation3 jurisdiction, and a separate frontend for jurors to perform their duties in Nation3 Court.

We might also want to add a token-gated section of the app where citizens can change their profile picture, alias, add contact info and even answer questions about themselves that other citizens might be interested in. They could also view others citizens’ profiles, their $veNATION stake, their passport number, etc.
(Just pinged Stani to see if we can just build this on Lens)

With all this info, I’d propose the following structure for the Citizen app:

  • Lock tokens and Liquidity rewards remain unchanged. Claim airdrop gets removed (we will need a governance proposal to stop past airdrops).
  • Profile: That would replace the Welcome, citizen item in the navbar. It would build on the current sub-app, with new functionality to add more meta-data about the citizen’s profile.
  • Directory: This would be a directory of all citizens, with the ability to browse profiles.
  • Governance: This would be what’s on the governance portal now, allowing citizens to follow proposals at a glance and create new ones.
  • Agreements: This would allow citizens to create and enter agreements in the Nation3 jurisdiction.

In terms of technical structure, we could use the same navbar, same design, but different domains. By doing this we can separate sub-apps in different repos, which greatly simplifies development by making it harder to end up with a massive monolith full of technical debt. It would also allow for more agile teams to fully own different pieces of infrastructure.

The downside: citizens would have to connect their account two or three times, because each subdomain would require connecting their Web3 wallet again. But this would only be needed once.

With this logic:

  • Lock tokens and Liquidity rewards would live under token.nation3.org
  • Profile, Directory would live under citizen.nation3.org
  • Governance would live under gov.nation3.org
  • Agreements would live under agreements.nation3.org

By keeping a consistent design and the same navbar, citizens would get all the upside of using a same app (or so they would think) while we as developers get the upside of compartmentalization bringing more agile development. Would welcome thoughts!

2 Likes

Multiple connections are annoying, but it’s a small UX trade-off for cleaner code and more agile teams.

Integrating with lens is a very good idea. It’s right on mission and should not be too difficult. There API is very intuitive and web2 like (in a good way). The only caveat is minting new handles is not open to the public but they do have allowances for specific communities. But I’m sure you can pull some strings :wink:

1 Like

I mostly agree with your proposal of re-structuring the app sections.
Not sure about the codebase split yet, I don’t see enough resources / workflows difference between the sub-apps to justify the split right now.

Instead of performing do a massive refactor upfront, I propose doing it in phases so we can understand better what works best. First, refactor the current nation3/app codebase to visually reorg the sections as you proposed, including also new sections for the nation3/gov-app and nation3/court interfaces in the navbar. With that setup in place, we can evaluate what it’s worth to split to independent sub-apps and how; common monorepo for multiple sub-apps or individual repos for each.

1 Like