Create flow UX updates

This commit is contained in:
adilallo
2026-04-11 00:22:02 -06:00
parent ec5afd1464
commit a5c6b8971f
33 changed files with 1010 additions and 931 deletions
+73
View File
@@ -0,0 +1,73 @@
{
"fallbackTitle": "Mutual Aid Mondays",
"fallbackDescription": "Mutual Aid Monday is a grassroots community in Denver, founded in November 2020 by Kelsang Virya, dedicated to supporting neighbors experiencing homelessness.",
"toastTitle": "This is what folks see when you share your CommunityRule",
"toastDescription": "Your group can use this document as an operating manual.",
"fallbackDocumentSections": [
{
"categoryName": "Values",
"entries": [
{
"title": "Solidarity Forever",
"body": "Food Not Bombs is not a charity. It is a project of solidarity. Charity is vertical. It moves from those who have to those who have not and maintains the hierarchy between them. Solidarity is horizontal. It moves between equals who recognize that our liberation is bound together. We do not help the poor. We share resources among community members because access to food is a human right rather than a privilege of wealth."
},
{
"title": "Shared Leadership",
"body": "We operate without bosses or managers. This does not mean we are disorganized. It means we are self-organized. Authority in this chapter is temporary and task-specific rather than permanent or personal. We believe the people doing the work should make the decisions about that work. By distributing responsibility we prevent burnout and ensure the movement survives beyond any single leader."
},
{
"title": "Organizing Offline",
"body": "We use digital tools to coordinate but we build power in the physical world. An algorithm cannot cook a meal and a group chat cannot look someone in the eye. We prioritize face-to-face connection and resist the pull of digital metrics."
},
{
"title": "Circular Food Systems",
"body": "We intervene in the ecological crisis by addressing food waste and food recovery. We redirect surplus food to where it is needed and model a circular economy at the scale of our communities."
}
]
},
{
"categoryName": "Communication",
"entries": [
{
"title": "Signal",
"body": "We use Signal for sensitive coordination. Encrypted messaging helps protect our members and our plans from surveillance."
}
]
},
{
"categoryName": "Membership",
"entries": [
{
"title": "Open Admission",
"body": "Anyone who shares our values and is willing to contribute is welcome. We do not require applications or approval processes for general participation."
}
]
},
{
"categoryName": "Decision-making",
"entries": [
{
"title": "Lazy Consensus",
"body": "We use lazy consensus for most decisions: proposals move forward unless someone raises a blocking concern. This keeps us moving without requiring everyone to approve every detail."
},
{
"title": "Modified Consensus",
"body": "For larger or more consequential decisions we use modified consensus, with clear timelines and a fallback to a supermajority vote if needed."
}
]
},
{
"categoryName": "Conflict management",
"entries": [
{
"title": "Code of Conduct",
"body": "We have a code of conduct that sets expectations for behavior and outlines how we address harm."
},
{
"title": "Restorative Justice",
"body": "When conflict arises we prioritize restoration and learning over punishment. We use facilitated circles and other restorative practices where appropriate."
}
]
}
]
}
@@ -0,0 +1,6 @@
{
"title": "Do other stakeholders need to be involved in creating your community?",
"description": "Adding people at this step will invite them to see your proposed CommunityRule and make their own proposals.",
"addStakeholder": "Add stakeholder",
"draftToastTitle": "Congratulations! You've drafted your CommunityRule!"
}
+28
View File
@@ -0,0 +1,28 @@
{
"title": "Review your CommunityRule",
"description": "Here's what other people will see. Make sure everything looks good before you finalize everything. Once the rule is finalized, you must use one of your decision-making mechanisms to edit it again.",
"ruleCardTitleFallback": "Your community",
"ruleCardDescriptionFallback": "Add a short description of your community on earlier steps when that field is available. For now, this card shows your community name.",
"categories": [
{
"name": "Values",
"chips": ["Consciousness", "Ecology", "Abundance", "Art", "Decisiveness"]
},
{
"name": "Communication",
"chips": ["Signal"]
},
{
"name": "Membership",
"chips": ["Open Admission"]
},
{
"name": "Decision-making",
"chips": ["Lazy Consensus", "Modified Consensus"]
},
{
"name": "Conflict management",
"chips": ["Code of Conduct", "Restorative Justice"]
}
]
}
+5
View File
@@ -0,0 +1,5 @@
{
"next": "Next",
"finalizeCommunityRule": "Finalize CommunityRule",
"confirmStakeholders": "Confirm Stakeholders"
}
+18
View File
@@ -0,0 +1,18 @@
{
"title": "How CommunityRule helps groups like yours",
"description": "This flow will give you recommendations to improve your community and help you put together a proposal for your group to consider. Alternatively, there is a workshop that your group can use to go through the process it together.",
"steps": {
"0": {
"title": "Tell us about your organization",
"description": "Start by providing your group's name, description, and profile image."
},
"1": {
"title": "Define your group's CommunityRule.",
"description": "Outline decision-making processes, conflict resolution methods, and membership practices. Get recommendations."
},
"2": {
"title": "Share and evolve over time",
"description": "Review and refine your community framework before putting it into action and adapting it over time."
}
}
}
+11
View File
@@ -0,0 +1,11 @@
{
"header": {
"title": "Your community is added - congrats!",
"description": "In the next section, we'll go through membership, decision-making, conflict resolution, and community values and create a custom operating manual for your organization based on the specifics you just shared."
},
"ruleCard": {
"title": "Mutual Aid Mondays",
"description": "Mutual Aid Monday is a grassroots community in Denver, founded in November 2020 by Kelsang Virya, dedicated to supporting neighbors experiencing homelessness.",
"logoAlt": "Mutual Aid Mondays"
}
}
+115
View File
@@ -0,0 +1,115 @@
{
"sidebar": {
"title": "How should conflicts be resolved?",
"descriptionBefore": "You can also combine or ",
"descriptionLink": "add",
"descriptionAfter": " new approaches to the list"
},
"messageBox": {
"title": "Consider defining approaches to steward key resources:",
"items": [
{ "id": "amend", "label": "Amend your CommunityRule" },
{ "id": "finances", "label": "Steward finances" },
{ "id": "project", "label": "Project level decisions" },
{ "id": "discipline", "label": "Discipline and member termination" }
]
},
"cardStack": {
"toggleSeeAll": "See all decision approaches",
"toggleShowLess": "Show less",
"emptyTitle": "",
"emptyDescription": ""
},
"cards": [
{
"id": "mediation",
"label": "Mediation",
"supportText": "Collaborative work to reach a resolution that all parties can agree upon.",
"recommended": true
},
{
"id": "facilitation",
"label": "Facilitated dialogue",
"supportText": "Structured sessions where parties collaboratively resolve disputes.",
"recommended": true
},
{
"id": "invite-only",
"label": "Invite-only",
"supportText": "Private discussions with selected participants.",
"recommended": true
},
{
"id": "arbitration",
"label": "Arbitration",
"supportText": "Arbitrators are chosen specifically for a particular case.",
"recommended": true
},
{
"id": "direct-dialogue",
"label": "Direct dialogue",
"supportText": "Encouraging direct, respectful dialogue between those involved.",
"recommended": true
},
{
"id": "label-1",
"label": "Label",
"supportText": "",
"recommended": false
},
{
"id": "label-2",
"label": "Label",
"supportText": "",
"recommended": false
},
{
"id": "label-3",
"label": "Label",
"supportText": "",
"recommended": false
},
{
"id": "label-4",
"label": "Label",
"supportText": "",
"recommended": false
},
{
"id": "label-5",
"label": "Label",
"supportText": "",
"recommended": false
},
{
"id": "label-6",
"label": "Label",
"supportText": "",
"recommended": false
},
{
"id": "label-7",
"label": "Label",
"supportText": "",
"recommended": false
},
{
"id": "label-8",
"label": "Label",
"supportText": "",
"recommended": false
},
{
"id": "label-9",
"label": "Label",
"supportText": "",
"recommended": false
},
{
"id": "label-10",
"label": "Label",
"supportText": "",
"recommended": false
}
]
}
+31
View File
@@ -0,0 +1,31 @@
{
"header": {
"title": "What is your community called?",
"description": "This will be the name of your community"
},
"multiSelect": {
"label": "Label",
"addButtonText": "Add organization type"
},
"communitySizes": [
{ "label": "1 member" },
{ "label": "2-10 members" },
{ "label": "10-24 members" },
{ "label": "24-64 members" },
{ "label": "64-128 members" },
{ "label": "125-1000 members" },
{ "label": "1000+ members" }
],
"organizationTypes": [
{ "label": "Non-profit" },
{ "label": "For-profit" },
{ "label": "Community" },
{ "label": "Educational" }
],
"governanceStyles": [
{ "label": "Democratic" },
{ "label": "Consensus" },
{ "label": "Hierarchical" },
{ "label": "Flat" }
]
}
+6
View File
@@ -0,0 +1,6 @@
{
"title": "What is your community called?",
"description": "This will be the name of your community",
"placeholder": "Enter your community name",
"characterCountTemplate": "{current}/{max}"
}
+6
View File
@@ -1,6 +1,12 @@
{
"saveAndExit": "Save & Exit",
"exit": "Exit",
"share": "Share",
"export": "Export",
"edit": "Edit",
"shareAriaLabel": "Share",
"exportAriaLabel": "Export",
"editAriaLabel": "Edit",
"leaveConfirmLoss": "Leave create flow? Your progress will be lost.",
"draftSaveBannerTitle": "Couldn't save draft",
"postLoginSaveFailedWithReason": "Could not save your draft to your account. Your progress is still stored on this device.\n\n{reason}"
+4
View File
@@ -0,0 +1,4 @@
{
"title": "How should conflicts be resolved?",
"description": "Upload supporting materials or examples that help describe how your community handles conflict."
}
+20
View File
@@ -19,6 +19,16 @@ import profile from "./pages/profile.json";
import navigation from "./navigation.json";
import metadata from "./metadata.json";
import communication from "./create/communication.json";
import createInformational from "./create/informational.json";
import createText from "./create/text.json";
import createSelect from "./create/select.json";
import createUpload from "./create/upload.json";
import createReview from "./create/review.json";
import createConfirmStakeholders from "./create/confirmStakeholders.json";
import createFinalReview from "./create/finalReview.json";
import createCompleted from "./create/completed.json";
import createRightRail from "./create/rightRail.json";
import createFooter from "./create/footer.json";
import createTopNav from "./create/topNav.json";
import createDraftHydration from "./create/draftHydration.json";
import createPublish from "./create/publish.json";
@@ -47,6 +57,16 @@ export default {
},
create: {
communication,
informational: createInformational,
text: createText,
select: createSelect,
upload: createUpload,
review: createReview,
confirmStakeholders: createConfirmStakeholders,
finalReview: createFinalReview,
completed: createCompleted,
rightRail: createRightRail,
footer: createFooter,
topNav: createTopNav,
draftHydration: createDraftHydration,
publish: createPublish,