diff --git a/.config/dictionaries/project.dic b/.config/dictionaries/project.dic index b53f64ed7ed..f1b9a1c93f7 100644 --- a/.config/dictionaries/project.dic +++ b/.config/dictionaries/project.dic @@ -51,12 +51,14 @@ chrono ciphertext ciphertexts CIPs +CNFT COCOAPODS codegen codepoints collabs commitlog concatcp +coproposers coti coverallsapp CQLSH @@ -109,6 +111,7 @@ gethostname Gitbook gmtime gradlew +Hackathons headful headlessui HIDPI diff --git a/docs/src/architecture/08_concepts/document_templates/proposal/F14-Generic-Steven/0ce8ab38-9258-4fbc-a62e-7faa6e58318f.schema.json b/docs/src/architecture/08_concepts/document_templates/proposal/F14-Generic-Steven/0ce8ab38-9258-4fbc-a62e-7faa6e58318f.schema.json new file mode 100644 index 00000000000..831508f8194 --- /dev/null +++ b/docs/src/architecture/08_concepts/document_templates/proposal/F14-Generic-Steven/0ce8ab38-9258-4fbc-a62e-7faa6e58318f.schema.json @@ -0,0 +1,274 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Catalyst Fund 14 Base Proposal Template", + "description": "A structured template for creating Fund 14 proposals", + "definitions": { + "singleLineTextEntry": { + "type": "string", + "contentMediaType": "text/plain", + "pattern": "^.*$" + }, + "multiLineTextEntry": { + "type": "string", + "contentMediaType": "text/plain", + "pattern": "^[\\S\\s]$" + }, + "dropDownSingleSelect": { + "type": "string", + "contentMediaType": "text/plain", + "pattern": "^.*$", + "format": "dropDownSingleSelect" + }, + "tokenValueCardanoADA": { + "type": "integer", + "format": "token:cardano:ada" + }, + "durationInMonths": { + "type": "integer", + "format": "datetime:duration:months" + }, + "agreementConfirmation": { + "type": "boolean", + "format": "checkbox", + "default": false, + "const": true + }, + "yesNoChoice": { + "type": "boolean", + "format": "yes/no", + "default": false + }, + "uri": { + "type": "string", + "format": "uri", + "contentMediaType": "text/plain", + "maxLength": 1024 + }, + "uriList": { + "type": "array", + "format": "uriList", + "uniqueItems": true, + "default": [], + "items": { + "$ref": "#/definitions/uri" + } + } + }, + "type": "object", + "properties": { + "$schema": { + "type": "string", + "format": "path", + "const": "./0ce8ab38-9258-4fbc-a62e-7faa6e58318f.schema.json", + "readOnly": true + }, + "general": { + "type": "object", + "properties": { + "title": { + "$ref": "#/definitions/singleLineTextEntry", + "title": "Proposal title", + "description": "

Please note we suggest you use no more than 60 characters for your proposal title so that it can be easily viewed in the voting app.


The title should clearly express what the proposal is about. Voters can see the title in the voting app, even without opening the proposal, so a clear, unambiguous, and concise title is very important.

", + "maxLength": 80, + "minLength": 0 + }, + "applicant": { + "$ref": "#/definitions/singleLineTextEntry", + "title": "Name and surname of main applicant", + "description": "

Please provide the name and surname of the main applicant. The main applicant is considered as the individual responsible for the project and the person authorized to act on behalf of other applicants (where applicable).

", + "maxLength": 80, + "minLength": 0 + }, + "applicant_type": { + "$ref": "#/definitions/dropDownSingleSelect", + "title": "Are you delivering this project as an individual or as an entity (whether formally incorporated or not)", + "description": "

Please select from one of the following:

", + "enum": [ + "Individual", + "Entity (Incorporated)", + "Entity (Not Incorporated)" + ], + "default": "Individual" + }, + "co-proposers": { + "$ref": "#/definitions/multiLineTextEntry", + "title": "Co-proposers and additional applicants", + "description": "

List any persons who are submitting the proposal jointly with the main applicant. Make sure you have confirmed approval/awareness with these individuals / accounts before adding them. If there is more than one proposer, identify the lead person who is authorized to act on behalf of other co-proposers.


IMPORTANT - A maximum of 6 (six) proposals can be led or co-proposed by the same applicant or enterprise. Please, reference Fund13 rules for added detail.

", + "maxLength": 1024, + "minLength": 0 + }, + "requested_funds": { + "$ref": "#/definitions/tokenValueCardanoADA", + "title": "Requested funds in ada", + "description": "

There is a minimum and a maximum amount of funding that can be requested in a single Catalyst proposal. These are outlined below per each category:


Minimum Funding Amount per proposal:


Maximum Funding Amount per proposal:

", + "minimum": 1, + "maximum": 18446744073709551615 + }, + "duration": { + "$ref": "#/definitions/durationInMonths", + "title": "Please specify how many months you expect your project to last (from 2-12 months)", + "description": "

Minimum 2 months - Maximum 12 months.


The scope of your funding request and this project is expected to produce the deliverables you specify in the proposal within 2-12 months.


If you believe your project will take longer than 12 months, consider reducing the project’s scope so that it becomes achievable within 12 months.


If your project completes earlier than scheduled so long as you have submitted your PoAs and Project Close-out report and video then your project can be closed out.

", + "minimum": 2, + "maximum": 12 + }, + "translated": { + "$ref": "#/definitions/yesNoChoice", + "title": "Please indicate if your proposal has been auto-translated into English from another language", + "description": "

YES/NO - Tick YES so readers are reminded that your proposal has been translated, and that they should be tolerant of any language imperfections.


You can either link a document with your proposal in its original language OR provide your response in your native language after the English language in each question if you wish.


Tick NO if your proposal has not been auto-translated into English from another language.

" + }, + "problem": { + "$ref": "#/definitions/multiLineTextEntry", + "title": "What is the problem you want to solve? (200-character limit including spaces)", + "description": "

Ensure you present a well-defined problem. What is the core issue that you hope to fix? Remember: the reader might not recognize the problem unless you state it clearly.


This answer will be displayed on the Catalyst voting app, so voters will see it even if they don't open your proposal to read it in detail.

", + "maxLength": 200, + "minLength": 1 + }, + "solution": { + "$ref": "#/definitions/multiLineTextEntry", + "title": "Summarize your solution to the problem (200-character limit including spaces)", + "description": "

Focus on what you are going to do, or make, or change, to solve the problem. So not 'There should be a way to....' but 'We will make a...'


Clearly state how the solution addresses the specific problem you have identified - connect the 'why' and the 'how'.


This answer will be displayed on the Catalyst voting app, so voters will see it even if they do not open your proposal and read it in detail.

", + "maxLength": 200, + "minLength": 1 + }, + "links": { + "$ref": "#/definitions/uriList", + "title": "Website / GitHub repository, White paper, Marketing or any other relevant link", + "description": "

Here, provide links to yours or your partner organization’s website, repository, or marketing. Alternatively, provide links to any whitepaper or other publication relevant to your proposal.


Note however that this is extra information that voters and Community Reviewers might choose not to read. You should not fail to include any of the questions in this form because you feel the answers can be found elsewhere.


If any links are specified make sure these are added in good order (first link must be present before specifying second). Also ensure all links include ‘https’. Without these steps, the form will not be submittable and show errors.

", + "minItems": 0, + "maxItems": 3 + }, + "dependencies": { + "$ref": "#/definitions/multiLineTextEntry", + "title": "If you have any dependencies then, please describe what the dependency is and why you believe it is essential for your project’s delivery. If NO, please write “No dependencies.”", + "description": "

Here you should list any dependencies and prerequisites for your project’s success. These are usually external factors (such as third-party suppliers, external resources, third-party software, etc.) that may cause a delay, since a project has less control over them. In case of third party software, indicate whether you have the necessary licenses and permission to use such software.

", + "maxLength": 1024, + "minLength": 0 + }, + "open_source": { + "$ref": "#/definitions/yesNoChoice", + "title": "Will your project’s output/s be fully open source?", + "description": "

Open source refers to something people can modify and share because its design is publicly accessible. 


Open source software is software with source code that anyone can inspect, modify, and enhance. Conversely, only the original authors of proprietary software can legally copy, inspect, and alter that software.

" + }, + "license_info": { + "$ref": "#/definitions/multiLineTextEntry", + "title": "[GENERAL] Please provide here more information on the open source status of your project outputs", + "description": "

If you answered YES to the above question:


If declaring the project is open source in the application form, the project should be open source-available throughout the entire lifecycle of the project with a declared open-source repository.


Please indicate here the type of license you intend to use for open source and provide any further information you feel is relevant to the open source status of your project outputs. 


If only certain elements of your code will be open source please clarify which elements will be open source here. 


If you answered NO to the above question, please give further details as to why your projects outputs will not be open source.

", + "maxLength": 1024, + "minLength": 0 + } + }, + "required": [ + "title", + "applicant", + "applicant_type", + "requested_funds", + "duration", + "translated", + "problem", + "solution", + "open_source", + "license_info" + ] + }, + "metadata": { + "title": "Horizons", + "description": "

Please choose the most relevant category group and tag related to the outcomes of your proposal. Can select only one group and one tag.

", + "format": "nested-tag-selector", + "oneOf": [ + { + "type": "object", + "properties": { + "group": { + "type": "string", + "const": "Governance" + }, + "tag": { + "type": "string", + "enum": [ + "Governance", + "DAO" + ] + } + } + }, + { + "type": "object", + "properties": { + "group": { + "type": "string", + "const": "Education" + }, + "tag": { + "type": "string", + "enum": [ + "Education", + "Learn to Earn", + "Training", + "Translation" + ] + } + } + }, + { + "group": { + "type": "string", + "const": "Community & Outreach" + }, + "tag": { + "type": "string", + "enum": [ + "Connected Community", + "Community", + "Community Outreach", + "Social Media" + ] + } + }, + { + "group": { + "type": "string", + "const": "Development & Tools" + }, + "tag": { + "type": "string", + "enum": [ + "Developer Tools", + "L2", + "Infrastructure", + "Analytics", + "AI", + "Research", + "UTXO", + "P2P" + ] + } + } + ] + }, + "agreements": { + "type": "object", + "properties": { + "fund_rules": { + "$ref": "#/definitions/agreementConfirmation", + "title": "Fund Rules:", + "description": "

By submitting a proposal to Project Catalyst Fund13, I confirm that I have read and agree to be bound by the Fund Rules.

" + }, + "terms_and_conditions": { + "$ref": "#/definitions/agreementConfirmation", + "title": "Terms and Conditions:", + "description": "

By submitting a proposal to Project Catalyst Fund13, I confirm that I have read and agree to be bound by the Project Catalyst Terms and Conditions.

" + }, + "privacy_policy": { + "$ref": "#/definitions/agreementConfirmation", + "title": "Privacy Policy: ", + "description": "

I acknowledge and agree that any data I share in connection with my participation in Project Catalyst Fund13 will be collected, stored, used and processed in accordance with the Catalyst FC’s Privacy Policy.

" + } + }, + "required": [ + "fund_rules", + "terms_and_conditions", + "privacy_policy" + ] + } + } +} \ No newline at end of file diff --git a/docs/src/architecture/08_concepts/document_templates/proposal/F14-Generic-Steven/proposal.F14.example.json b/docs/src/architecture/08_concepts/document_templates/proposal/F14-Generic-Steven/proposal.F14.example.json new file mode 100644 index 00000000000..13813ee0f09 --- /dev/null +++ b/docs/src/architecture/08_concepts/document_templates/proposal/F14-Generic-Steven/proposal.F14.example.json @@ -0,0 +1,21 @@ +{ + "$schema": "./0ce8ab38-9258-4fbc-a62e-7faa6e58318f.schema.json", + "general": { + "title": "Single line plain text .....", + "links": [ + "http://notauri", + "ftp://some_old_site", + "cardano://some-block" + ], + "applicant_type": "Individual", + }, + "metadata": { + "group": "Education", + "tag": "Learn to Earn" + }, + "agreements": { + "fund_rules": true, + "terms_and_conditions": true, + "privacy_policy": true + } +} \ No newline at end of file diff --git a/docs/src/architecture/08_concepts/document_templates/proposal/F14-Generic/0ce8ab38-9258-4fbc-a62e-7faa6e58318f.schema.json b/docs/src/architecture/08_concepts/document_templates/proposal/F14-Generic/0ce8ab38-9258-4fbc-a62e-7faa6e58318f.schema.json new file mode 100644 index 00000000000..afa71e375b5 --- /dev/null +++ b/docs/src/architecture/08_concepts/document_templates/proposal/F14-Generic/0ce8ab38-9258-4fbc-a62e-7faa6e58318f.schema.json @@ -0,0 +1,1021 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://cardano.org/schemas/catalyst/f14/proposal", + "title": "F14 Submission Form", + "description": "Schema for the F14 Catalyst Proposal Submission Form", + "definitions": { + "schemaReferenceNonUI": { + "$comment": "NOT UI: used to identify the kind of template document used.", + "type": "string", + "format": "path", + "readOnly": true + }, + "segment": { + "$comment": "UI - Logical Document Section Break.", + "type": "object", + "additionalProperties": false, + "x-note": "Major sections of the proposal. Each segment contains sections of information grouped together." + }, + "section": { + "$comment": "UI - Logical Document Sub-Section Break.", + "type": "object", + "additionalProperties": false, + "x-note": "Subsections containing specific details about the proposal." + }, + "singleLineTextEntry": { + "$comment": "UI - Single Line text entry without any markup or rich text capability.", + "type": "string", + "contentMediaType": "text/plain", + "pattern": "^.*$", + "x-note": "Enter a single line of text. No formatting, line breaks, or special characters are allowed." + }, + "singleLineHttpsURLEntry": { + "$comment": "UI - Single Line text entry for HTTPS Urls.", + "type": "string", + "format": "uri", + "pattern": "^https:.*", + "x-note": "Enter a valid HTTPS URL. Must start with 'https://' and be a complete, working web address." + }, + "multiLineTextEntry": { + "$comment": "UI - Multiline text entry without any markup or rich text capability.", + "type": "string", + "contentMediaType": "text/plain", + "pattern": "^[\\S\\s]*$", + "x-note": "Enter multiple lines of plain text. You can use line breaks but no special formatting." + + }, + "multiLineTextEntryMarkdown": { + "$comment": "UI - Multiline text entry with Markdown content.", + "type": "string", + "contentMediaType": "text/markdown", + "pattern": "^[\\S\\s]*$", + "x-note": "Use Markdown formatting for rich text. Available formatting:\n- Headers: # for h1, ## for h2, etc.\n- Lists: * or - for bullets, 1. for numbered\n- Emphasis: *italic* or **bold**\n- Links: [text](url)\n- Code: `inline` or ```block```" + }, + "dropDownSingleSelect": { + "$comment": "UI - Drop Down Selection of a single entry from the defined enum.", + "type": "string", + "contentMediaType": "text/plain", + "pattern": "^.*$", + "format": "dropDownSingleSelect", + "x-note": "Select one option from the dropdown menu. Only one choice is allowed." + }, + "multiSelect": { + "$comment": "UI - Multiselect from the given items.", + "type": "array", + "uniqueItems": true, + "format": "multiSelect", + "x-note": "Select multiple options from the dropdown menu. Multiple choices are allowed." + }, + "singleLineTextEntryList": { + "$comment": "UI - A Growable List of single line text (no markup or richtext).", + "type": "array", + "format": "singleLineTextEntryList", + "uniqueItems": true, + "default": [], + "items": { + "$ref": "#/definitions/singleLineTextEntry", + "maxLength": 1024 + }, + "x-note": "Add multiple single-line text entries. Each entry should be unique and under 1024 characters." + }, + "multiLineTextEntryListMarkdown": { + "$comment": "UI - A Growable List of markdown formatted text fields.", + "type": "array", + "format": "multiLineTextEntryListMarkdown", + "uniqueItems": true, + "default": [], + "items": { + "$ref": "#/definitions/multiLineTextEntryMarkdown", + "maxLength": 10240 + }, + "x-note": "Add multiple markdown-formatted text entries. Each entry can include rich formatting and should be unique." + }, + "singleLineHttpsURLEntryList": { + "$comment": "UI - A Growable List of HTTPS URLs.", + "type": "array", + "format": "singleLineHttpsURLEntryList", + "uniqueItems": true, + "default": [], + "items": { + "$ref": "#/definitions/singleLineHttpsURLEntry", + "maxLength": 1024 + }, + "x-note": "Enter multiple HTTPS URLs. Each URL should be unique and under 1024 characters." + }, + "nestedQuestionsList": { + "$comment": "UI - A Growable List of Questions. The contents are an object, that can have any UI elements within.", + "type": "array", + "format": "nestedQuestionsList", + "uniqueItems": true, + "default": [], + "x-note": "Add multiple questions. Each question should be unique." + }, + "nestedQuestions": { + "$comment": "UI - The container for a nested question set.", + "type": "object", + "format": "nestedQuestions", + "additionalProperties": false, + "x-note": "Add multiple questions. Each question should be unique." + }, + "singleGroupedTagSelector": { + "$comment": "UI - A selector where a top level selection, gives a single choice from a list of tags.", + "type": "object", + "format": "singleGroupedTagSelector", + "additionalProperties": true, + "x-note": "Select one option from the dropdown menu. Only one choice is allowed." + }, + "tagGroup": { + "$comment": "UI - An individual group within a singleGroupedTagSelector.", + "type": "string", + "format": "tagGroup", + "pattern": "^.*$", + "x-note": "Select one option from the dropdown menu. Only one choice is allowed." + }, + "tagSelection": { + "$comment": "UI - An individual tag within the group of a singleGroupedTagSelector.", + "type": "string", + "format": "tagSelection", + "pattern": "^.*$", + "x-note": "Select one option from the dropdown menu. Only one choice is allowed." + }, + "tokenValueCardanoADA": { + "$comment": "UI - A Token Value denominated in Cardano ADA.", + "type": "integer", + "format": "token:cardano:ada", + "x-note": "Enter the amount of Cardano ADA to be used in the proposal." + }, + "durationInMonths": { + "$comment": "UI - A Duration represented in total months.", + "type": "integer", + "format": "datetime:duration:months", + "x-note": "Enter the duration of the proposal in months." + }, + "yesNoChoice": { + "$comment": "UI - A Boolean choice, represented as a Yes/No selection. Yes = true.", + "type": "boolean", + "format": "yesNoChoice", + "default": false, + "x-note": "Select Yes or No." + }, + "agreementConfirmation": { + "$comment": "UI - A Boolean choice, defaults to `false` but its invalid if its not set to `true`.", + "type": "boolean", + "format": "agreementConfirmation", + "default": false, + "const": true, + "x-note": "Select Yes or No." + }, + "spdxLicenseOrURL": { + "$comment": "UI - Drop Down Selection of any valid SPDX Identifier. This is a complex type, it should let the user select one of the valid SPDX licenses, or enter a URL of the license if its proprietary. In the form its just a string.", + "type": "string", + "contentMediaType": "text/plain", + "pattern": "^.*$", + "format": "spdxLicenseOrURL", + "x-note": "Select one option from the dropdown menu. Only one choice is allowed." + } + }, + "type": "object", + "additionalProperties": false, + "properties": { + "$schema": { + "$ref": "#/definitions/schemaReferenceNonUI", + "default": "./0ce8ab38-9258-4fbc-a62e-7faa6e58318f.schema.json", + "const": "./0ce8ab38-9258-4fbc-a62e-7faa6e58318f.schema.json" + }, + "setup": { + "$ref": "#/definitions/segment", + "title": "proposal setup", + "description": "Proposal title", + "properties": { + "title": { + "$ref": "#/definitions/section", + "title": "proposal setup", + "description": "Proposal title", + "properties": { + "title": { + "$ref": "#/definitions/singleLineTextEntry", + "title": "Proposal Title", + "description": "

Proposal title

Please note we suggest you use no more than 60 characters for your proposal title so that it can be easily viewed in the voting app.

", + "minLength": 1, + "maxLength": 60, + "x-guidance": "

The title should clearly express what the proposal is about. Voters can see the title in the voting app, even without opening the proposal, so a clear, unambiguous, and concise title is very important.

" + } + }, + "required": [ + "title" + ] + }, + "proposer": { + "$ref": "#/definitions/section", + "properties": { + "applicant": { + "$ref": "#/definitions/singleLineTextEntry", + "title": "Name and surname of main applicant", + "description": "Name and surname of main applicant", + "x-guidance": "

Please provide the name and surname of the main applicant. The main applicant is considered as the individual responsible for the project and the person authorized to act on behalf of other applicants (where applicable).

", + "minLength": 2, + "maxLength": 100 + }, + "type": { + "$ref": "#/definitions/dropDownSingleSelect", + "title": "Are you delivering this project as an individual or as an entity (whether formally incorporated or not)", + "description": "Are you delivering this project as an individual or as an entity (whether formally incorporated or not)", + "x-guidance": "

Please select from one of the following:

  1. Individual
  2. Entity (Incorporated)
  3. Entity (Not Incorporated)
", + "enum": [ + "Individual", + "Entity (Incorporated)", + "Entity (Not Incorporated)" + ], + "default": "Individual" + }, + "coproposers": { + "$ref": "#/definitions/singleLineTextEntryList", + "title": "Co-proposers and additional applicants", + "description": "Co-proposers and additional applicants", + "x-guidance": "

List any persons who are submitting the proposal jointly with the main applicant. Make sure you have confirmed approval/awareness with these individuals/accounts before adding them. If there is more than one proposer, identify the lead person who is authorized to act on behalf of other co-proposers. IMPORTANT A maximum of 6 (six) proposals can be led or co-proposed by the same applicant or enterprise. Please, reference Fund 14 rules for added detail.

", + "maxItems": 5, + "minItems": 0 + } + }, + "required": [ + "applicant", + "type" + ], + "x-order": ["applicant", "type", "coproposers"] + } + }, + "required": [ + "title", + "proposer" + ], + "x-order": ["title", "proposer"] + }, + "summary": { + "$ref": "#/definitions/segment", + "title": "Proposal Summary", + "description": "Key information about your proposal", + "properties": { + "budget": { + "$ref": "#/definitions/section", + "title": "Budget Information", + "properties": { + "requestedFunds": { + "$ref": "#/definitions/tokenValueCardanoADA", + "title": "Requested funds in ADA", + "description": "The amount of funding requested for your proposal", + "x-guidance": "

There is a minimum and a maximum amount of funding that can be requested in a single Catalyst proposal. These are outlined below per each category:

Minimum Funding Amount per proposal:

Cardano Open: A15,000

Cardano Uses Cases: A15,000

Cardano Partners: A500,000

Maximum Funding Amount per proposal:

Cardano Open:

Cardano Uses Cases:

Cardano Partners:

", + "minimum": 15000, + "maximum": 2000000 + } + }, + "required": [ + "requestedFunds" + ], + "x-order": ["requestedFunds"] + }, + "time": { + "$ref": "#/definitions/section", + "properties": { + "duration": { + "$ref": "#/definitions/durationInMonths", + "title": "Project Duration in Months", + "description": "Specify the expected duration of your project. Projects must be completable within 2-12 months.", + "x-guidance": "

Minimum 2 months-Maximum 12 months. The scope of your funding request and this project is expected to produce the deliverables you specify in the proposal within 2-12 months If you believe your project will take longer than 12 months, consider reducing the project's scope so that it becomes achievable within 12 months If your project completes earlier than scheduled so long as you have submitted your PoAs and Project Close-out report and video then your project can be closed out.

", + "minimum": 2, + "maximum": 12 + } + }, + "required": [ + "duration" + ] + }, + "translation": { + "$ref": "#/definitions/section", + "title": "Translation Information", + "description": "Information about the proposal's language and translation status", + "properties": { + "isTranslated": { + "$ref": "#/definitions/yesNoChoice", + "title": "Auto-translated Status", + "description": "Indicate if your proposal has been auto-translated into English from another language", + "x-guidance": "

Tick YES if your proposal has been auto-translated into English from another language so readers are reminded that your proposal has been translated, and that they should be tolerant of any language imperfections. Tick NO if your proposal has not been auto-translated into English from another language

" + }, + "originalLanguage": { + "$ref": "#/definitions/singleLineTextEntry", + "title": "Original Language", + "description": "If auto-translated, specify the original language of your proposal", + "enum": [ + "Arabic", + "Chinese", + "French", + "German", + "Indonesian", + "Italian", + "Japanese", + "Korean", + "Portuguese", + "Russian", + "Spanish", + "Turkish", + "Vietnamese", + "Other" + ] + }, + "originalDocumentLink": { + "$ref": "#/definitions/singleLineHttpsURLEntry", + "title": "Original Document Link", + "description": "Provide a link to the original proposal document in its original language" + } + }, + "if": { + "properties": { + "isTranslated": { "const": true } + } + }, + "then": { + "required": ["originalLanguage", "originalDocumentLink"], + "properties": { + "originalLanguage": { + "description": "Original language is required when the proposal is translated" + }, + "originalDocumentLink": { + "description": "Link to the original document is required when the proposal is translated" + } + } + }, + "else": { + "properties": { + "originalLanguage": { + "not": {} + }, + "originalDocumentLink": { + "not": {} + } + } + }, + "required": ["isTranslated"] + }, + "problem": { + "$ref": "#/definitions/section", + "title": "Problem Statement", + "description": "Define the problem your proposal aims to solve", + "properties": { + "statement": { + "$ref": "#/definitions/multiLineTextEntry", + "title": "Problem Description", + "description": "Clearly define the problem you aim to solve. This will be visible in the Catalyst voting app.", + "minLength": 10, + "maxLength": 200, + "x-guidance": "

Ensure you present a well-defined problem. What is the core issue that you hope to fix? Remember: the reader might not recognize the problem unless you state it clearly. This answer will be displayed on the Catalyst voting app, so voters will see it even if they don't open your proposal to read it in detail.

" + }, + "impact": { + "$ref": "#/definitions/multiSelect", + "title": "Impact Areas", + "description": "Select the areas that will be most impacted by solving this problem", + "items": { + "$ref": "#/definitions/singleLineTextEntry", + "enum": [ + "Technical Infrastructure", + "User Experience", + "Developer Tooling", + "Community Growth", + "Economic Sustainability", + "Interoperability", + "Security", + "Scalability", + "Education", + "Adoption" + ] + }, + "minItems": 1, + "maxItems": 3 + } + }, + "required": [ + "statement", + "impact" + ] + }, + "solution": { + "$ref": "#/definitions/section", + "title": "Solution Overview", + "description": "Describe your proposed solution to the problem", + "properties": { + "summary": { + "$ref": "#/definitions/multiLineTextEntry", + "title": "Solution Summary", + "description": "Briefly describe your solution. Focus on what you will do or create to solve the problem.", + "minLength": 10, + "maxLength": 200, + "x-guidance": "

Focus on what you are going to do, or make, or change, to solve the problem. So not 'There should be a way to....' but 'We will make a Clearly state how the solution addresses the specific problem you have identified - connect the 'why' and the 'how' This answer will be displayed on the Catalyst voting app, so voters will see it even if they do not open your proposal and read it in detail.

" + }, + "approach": { + "$ref": "#/definitions/multiLineTextEntry", + "title": "Technical Approach", + "description": "Outline the technical approach or methodology you will use", + "maxLength": 500 + }, + "innovationAspects": { + "$ref": "#/definitions/singleLineTextEntryList", + "title": "Innovation Aspects", + "description": "Key innovative aspects of your solution", + "minItems": 1, + "maxItems": 5 + } + }, + "required": [ + "summary", + "approach" + ] + }, + "supportingLinks": { + "$ref": "#/definitions/section", + "title": "Supporting Documentation", + "description": "Additional resources and documentation for your proposal", + "x-guidance": "

Here, provide links to yours or your partner organization's website, repository, or marketing. Alternatively, provide links to any whitepaper or other publication relevant to your proposal. Note however that this is extra information that voters and Community Reviewers might choose not to read. You should not fail to include any of the questions in this form because you feel the answers can be found elsewhere. If any links are specified make sure these are added in good order (first link must be present before specifying second). Also ensure all links include https. Without these steps, the form will not be submittable and show errors

", + "properties": { + "mainRepository": { + "$ref": "#/definitions/singleLineHttpsURLEntry", + "title": "Main Code Repository", + "description": "Primary repository where the project's code will be hosted" + }, + "documentation": { + "$ref": "#/definitions/singleLineHttpsURLEntry", + "title": "Documentation URL", + "description": "Main documentation site or resource for the project" + }, + "other": { + "$ref": "#/definitions/singleLineHttpsURLEntryList", + "title": "Resource Links", + "description": "Links to any other relevant documentation, code repositories, or marketing materials. All links must use HTTPS.", + "minItems": 0, + "maxItems": 5 + } + } + }, + "dependencies": { + "$ref": "#/definitions/section", + "title": "Project Dependencies", + "description": "External dependencies and requirements for project success", + "x-guidance": "

If your project has any dependencies and prerequisites for your project's success, list them here. These are usually external factors (such as third-party suppliers, external resources, third-party software, etc.) that may cause a delay, since a project has less control over them. In case of third party software, indicate whether you have the necessary licenses and permission to use such software.

", + "properties": { + "details": { + "$ref": "#/definitions/nestedQuestionsList", + "title": "Dependency Details", + "description": "List and describe each dependency", + "items": { + "$ref": "#/definitions/nestedQuestions", + "properties": { + "name": { + "$ref": "#/definitions/singleLineTextEntry", + "title": "Dependency Name", + "description": "Name of the organization, technology, or resource", + "maxLength": 100 + }, + "type": { + "$ref": "#/definitions/dropDownSingleSelect", + "title": "Dependency Type", + "description": "Type of dependency", + "enum": [ + "Technical", + "Organizational", + "Legal", + "Financial", + "Other" + ] + }, + "description": { + "$ref": "#/definitions/multiLineTextEntry", + "title": "Description", + "description": "Explain why this dependency is essential and how it affects your project", + "maxLength": 500 + }, + "mitigationPlan": { + "$ref": "#/definitions/multiLineTextEntry", + "title": "Mitigation Plan", + "description": "How will you handle potential issues with this dependency", + "maxLength": 300 + } + }, + "required": [ + "name", + "type", + "description" + ] + }, + "minItems": 0, + "maxItems": 10 + } + } + }, + "open_source": { + "$ref": "#/definitions/section", + "title": "Project Open Source", + "description": "Will your project's output be fully open source? Open source refers to something people can modify and share because its design is publicly accessible.", + "x-guidance": "

Open source software is software with source code that anyone can inspect, modify, and enhance. Conversely, only the original authors of proprietary software can legally copy, inspect, and alter that software

", + "properties": { + "source_code": { + "$ref": "#/definitions/spdxLicenseOrURL" + }, + "documentation": { + "$ref": "#/definitions/spdxLicenseOrURL" + }, + "note": { + "$ref": "#/definitions/multiLineTextEntry", + "title": "More Information", + "description": "Please provide here more information on the open source status of your project outputs", + "maxLength": 500, + "x-guidance": "

If you did not answer PROPRIETARY to the above questions, the project should be open source available throughout the entire lifecycle of the project with a declared open-source repository. Please indicate here the type of license you intend to use for open source and provide any further information you feel is relevant to the open source status of your project outputs If only certain elements of your code will be open source please clarify which elements will be open source here. If you answered NO to the above question, please give further details as to why your projects outputs will not be open source METADATA

" + } + }, + "required": [ + "source_code", + "documentation" + ], + "x-order": ["source_code", "documentation", "note"] + } + }, + "x-order": [ + "budget", + "time", + "translation", + "problem", + "solution", + "supportingLinks", + "dependencies", + "open_source" + ] + }, + "horizons": { + "$ref": "#/definitions/segment", + "title": "Horizons", + "properties": { + "theme": { + "$ref": "#/definitions/section", + "title": "Horizons", + "description": "Long-term vision and categorization of your project", + "properties": { + "grouped_tag": { + "$ref": "#/definitions/singleGroupedTagSelector", + "oneOf": [ + { + "properties": { + "group": { + "$ref": "#/definitions/tagGroup", + "const": "Governance" + }, + "tag": { + "$ref": "#/definitions/tagSelection", + "enum": [ + "Governance", + "DAO" + ] + } + } + }, + { + "properties": { + "group": { + "$ref": "#/definitions/tagGroup", + "const": "Education" + }, + "tag": { + "$ref": "#/definitions/tagSelection", + "enum": [ + "Education", + "Learn to Earn", + "Training", + "Translation" + ] + } + } + }, + { + "properties": { + "group": { + "$ref": "#/definitions/tagGroup", + "const": "Community & Outreach" + }, + "tag": { + "$ref": "#/definitions/tagSelection", + "enum": [ + "Connected Community", + "Community", + "Community Outreach", + "Social Media" + ] + } + } + }, + { + "properties": { + "group": { + "$ref": "#/definitions/tagGroup", + "const": "Development & Tools" + }, + "tag": { + "$ref": "#/definitions/tagSelection", + "enum": [ + "Developer Tools", + "L2", + "Infrastructure", + "Analytics", + "AI", + "Research", + "UTXO", + "P2P" + ] + } + } + }, + { + "properties": { + "group": { + "$ref": "#/definitions/tagGroup", + "const": "Identity & Security" + }, + "tag": { + "$ref": "#/definitions/tagSelection", + "enum": [ + "Identity & Verification", + "Cybersecurity", + "Security", + "Authentication", + "Privacy" + ] + } + } + }, + { + "properties": { + "group": { + "$ref": "#/definitions/tagGroup", + "const": "DeFi" + }, + "tag": { + "$ref": "#/definitions/tagSelection", + "enum": [ + "DeFi", + "Payments", + "Stablecoin", + "Risk Management", + "Yield", + "Staking", + "Lending" + ] + } + } + }, + { + "properties": { + "group": { + "$ref": "#/definitions/tagGroup", + "const": "Real World Applications" + }, + "tag": { + "$ref": "#/definitions/tagSelection", + "enum": [ + "Wallet", + "Marketplace", + "Manufacturing", + "IoT", + "Financial Services", + "E-commerce", + "Business Services", + "Supply Chain", + "Real Estate", + "Healthcare", + "Tourism", + "Entertainments", + "RWA", + "Music", + "Tokenization" + ] + } + } + }, + { + "properties": { + "group": { + "$ref": "#/definitions/tagGroup", + "const": "Events & Marketing" + }, + "tag": { + "$ref": "#/definitions/tagSelection", + "enum": [ + "Events", + "Marketing", + "Hackathons", + "Accelerator", + "Incubator" + ] + } + } + }, + { + "properties": { + "group": { + "$ref": "#/definitions/tagGroup", + "const": "Interoperability" + }, + "tag": { + "$ref": "#/definitions/tagSelection", + "enum": [ + "Cross-chain", + "Interoperability", + "Off-chain", + "Legal", + "Policy Advocacy", + "Standards" + ] + } + } + }, + { + "properties": { + "group": { + "$ref": "#/definitions/tagGroup", + "const": "Sustainability" + }, + "tag": { + "$ref": "#/definitions/tagSelection", + "enum": [ + "Sustainability", + "Environment", + "Agriculture" + ] + } + } + }, + { + "properties": { + "group": { + "$ref": "#/definitions/tagGroup", + "const": "Smart Contracts" + }, + "tag": { + "$ref": "#/definitions/tagSelection", + "enum": [ + "Smart Contract", + "Smart Contracts", + "Audit", + "Oracles" + ] + } + } + }, + { + "properties": { + "group": { + "$ref": "#/definitions/tagGroup", + "const": "GameFi" + }, + "tag": { + "$ref": "#/definitions/tagSelection", + "enum": [ + "Gaming", + "Gaming (GameFi)", + "Entertainment", + "Metaverse" + ] + } + } + }, + { + "properties": { + "group": { + "$ref": "#/definitions/tagGroup", + "const": "NFT" + }, + "tag": { + "$ref": "#/definitions/tagSelection", + "enum": [ + "NFT", + "CNFT", + "Collectibles", + "Digital Twin" + ] + } + } + } + ] + } + }, + "x-order": ["theme"] + } + }, + "x-order": ["theme"] + }, + "details": { + "$ref": "#/definitions/segment", + "title": "Your Project and Solution", + "properties": { + "solution": { + "$ref": "#/definitions/section", + "title": "Solution", + "description": "

How you write this section will depend on what type of proposal you are writing. You might want to include details on:



Explain what is unique about your solution, who will benefit, and why this is important to Cardano.

", + "properties": { + "solution": { + "$ref": "#/definitions/multiLineTextEntryMarkdown", + "minLength": 1, + "maxLength": 10240, + "examples": [ + "Our solution involves developing a decentralized education platform that will..." + ] + } + } + }, + "impact": { + "$ref": "#/definitions/section", + "title": "Impact", + "description": "

Please include here a description of how you intend to measure impact (whether quantitative or qualitative) and how and with whom you will share your outputs:


", + "properties": { + "impact": { + "$ref": "#/definitions/multiLineTextEntryMarkdown", + "minLength": 1, + "maxLength": 10240 + } + } + }, + "feasibility": { + "$ref": "#/definitions/section", + "title": "Capabilities & Feasibility", + "description": "

Please describe your existing capabilities that demonstrate how and why you believe you’re best suited to deliver this project?

Please include the steps or processes that demonstrate that you can be trusted to manage funds properly.

", + "properties": { + "feasibility": { + "$ref": "#/definitions/multiLineTextEntryMarkdown", + "minLength": 1, + "maxLength": 10240 + } + } + } + }, + "x-order": ["solution", "impact", "feasibility"] + }, +"milestones": { + "$ref": "#/definitions/segment", + "title": "Milestones", + "properties": { + "milestones": { + "$ref": "#/definitions/section", + "title": "Project Milestones", + "description": "

Each milestone must declare:

Requirements:

", + "properties": { + "milestone_list": { + "type": "array", + "title": "Milestones", + "description": "What are the key milestones you need to achieve in order to complete your project successfully?", + "x-guidance": "

Milestone Requirements:

", + "minItems": 3, + "maxItems": 6, + "items": { + "type": "object", + "required": ["title", "outputs", "acceptance_criteria", "evidence", "delivery_month", "cost"], + "properties": { + "title": { + "$ref": "#/definitions/singleLineTextEntry", + "title": "Milestone Title", + "description": "A clear, concise title for this milestone", + "maxLength": 100 + }, + "outputs": { + "$ref": "#/definitions/multiLineTextEntryMarkdown", + "title": "Milestone Outputs", + "description": "What will be delivered in this milestone", + "maxLength": 1000 + }, + "acceptance_criteria": { + "$ref": "#/definitions/multiLineTextEntryMarkdown", + "title": "Acceptance Criteria", + "description": "Specific conditions that must be met", + "maxLength": 1000 + }, + "evidence": { + "$ref": "#/definitions/multiLineTextEntryMarkdown", + "title": "Evidence of Completion", + "description": "How you will demonstrate achievement", + "maxLength": 1000 + }, + "delivery_month": { + "$ref": "#/definitions/durationInMonths", + "title": "Delivery Month", + "description": "The month when this milestone will be delivered", + "minimum": 1, + "maximum": 12 + }, + "cost": { + "$ref": "#/definitions/tokenValueCardanoADA", + "title": "Cost in ADA", + "description": "The cost of this milestone in ADA" + }, + "progress": { + "$ref": "#/definitions/dropDownSingleSelect", + "title": "Progress Status", + "description": "Current status of the milestone", + "enum": ["Not Started", "In Progress", "Completed", "Delayed"], + "default": "Not Started" + } + } + } + } + }, + "required": ["milestone_list"] + } + }, + "x-order": ["milestones"] +}, + "pitch": { + "$ref": "#/definitions/segment", + "title": "Final Pitch", + "properties": { + "team": { + "$ref": "#/definitions/section", + "title": "Team", + "properties": { + "who": { + "$ref": "#/definitions/multiLineTextEntryMarkdown", + "title": "Who is in the project team and what are their roles?", + "description": "

List your team, their Linkedin profiles (or similar) and state what aspect of the proposal’s work each team member will undertake.


If you are planning to recruit additional team members, please state what specific skills you will be looking for in the people you recruit, so readers can see that you understand what skills will be needed to complete the project.


You are expected to have already engaged the relevant members of the organizations referenced so you understand if they are willing and/or have capacity to support the project. If you have not taken any steps to engage with your team yet, it is likely that the resources will not be available if you are approved for funding, which can jeopardize the project before it has even begun. The Catalyst team cannot help with this, meaning you are expected to have understood the requirements and engaged the necessary people before submitting a proposal.


Have you engaged anyone on any of the technical group channels (eg Discord or Telegram), or do you have a direct line of communications with the people and resources required?


Important: Catalyst funding is not anonymous, and some level of ‘proof of life’ verifications will take place before initial funding is released. Also remember that your proposal will be publicly available, so make sure to obtain any consent required before including confidential or third party information.


All Project Participants must disclose their role and scope of services across any submitted proposals, even if they are not in the lead or co-proposer role, such as an implementer, vendor, service provider, etc. Failure to disclose this information may lead to disqualification from the current grant round.

", + "minLength": 1, + "maxLength": 10240 + } + } + }, + "budget": { + "$ref": "#/definitions/section", + "title": "Budget & Costs", + "properties": { + "costs": { + "$ref": "#/definitions/multiLineTextEntryMarkdown", + "title": "Please provide a cost breakdown of the proposed work and resources", + "description": "

Make sure every element mentioned in your plan reflects its cost. It may be helpful to refer to your plan and timeline, list all the resources you will need at each stage, and what they cost.


Here, provide a clear description of any third party product or service you will be using. This could be hardware, software licenses, professional services (legal, accounting, code auditing, etc) but does not need to include the use of contracted programmers and developers.


The exact budget elements you include will depend on what type of work you are doing, and you might need to give less detail for a small, low-budget proposal. If the cost of the project will exceed the funding request, please provide information about alternative sources of funding.


Consider including budget elements for publicity / marketing / promotion / community engagement; project management; documentation; and reporting back to the community. Most proposals need these, but many proposers forget to include them.


It is the project team’s responsibility to properly manage the funds provided. Make sure to reference Fund Rules to understand eligibility around costs.

", + "minLength": 1, + "maxLength": 10240 + } + } + }, + "value": { + "$ref": "#/definitions/section", + "title": "Value for Money", + "properties": { + "note": { + "$ref": "#/definitions/multiLineTextEntryMarkdown", + "title": "How does the cost of the project represent value for money for the Cardano ecosystem?", + "description": "

Use the response to provide the context about the costs you listed previously, particularly if they are high.


It may be helpful to include some brief information on how you have decided on the costs of the project. 


For instance, can you justify with supporting evidence that costs are proportional to the average wage in your country, or typical freelance rates in your industry? Is there anything else that helps to support how the project represents value for money?

", + "minLength": 1, + "maxLength": 10240 + } + } + } + }, + "x-order": ["team", "budget", "value"] + }, + "agreements": { + "$ref": "#/definitions/segment", + "title": "Acknowledgements", + "properties": { + "mandatory": { + "$ref": "#/definitions/section", + "title": "Mandatory", + "properties": { + "fund_rules": { + "$ref": "#/definitions/agreementConfirmation", + "title": "Fund Rules:", + "description": "

By submitting a proposal to Project Catalyst Fund14, I confirm that I have read and agree to be bound by the Fund Rules.

" + }, + "terms_and_conditions": { + "$ref": "#/definitions/agreementConfirmation", + "title": "Terms and Conditions:", + "description": "

By submitting a proposal to Project Catalyst Fund14, I confirm that I have read and agree to be bound by the Project Catalyst Terms and Conditions.

" + }, + "privacy_policy": { + "$ref": "#/definitions/agreementConfirmation", + "title": "Privacy Policy: ", + "description": "

I acknowledge and agree that any data I share in connection with my participation in Project Catalyst Fund14 will be collected, stored, used and processed in accordance with the Catalyst FC’s Privacy Policy.

" + } + }, + "required": [ + "fund_rules", + "terms_and_conditions", + "privacy_policy" + ], + "x-order": [ + "fund_rules", + "terms_and_conditions", + "privacy_policy" + ] + } + }, + "x-order": ["mandatory"] + } + }, + "x-order": [ + "setup", + "summary", + "horizons", + "details", + "milestones", + "pitch", + "agreements" + ] +} \ No newline at end of file diff --git a/docs/src/architecture/08_concepts/document_templates/proposal/F14-Generic/example.proposal.json b/docs/src/architecture/08_concepts/document_templates/proposal/F14-Generic/example.proposal.json new file mode 100644 index 00000000000..01710279147 --- /dev/null +++ b/docs/src/architecture/08_concepts/document_templates/proposal/F14-Generic/example.proposal.json @@ -0,0 +1,138 @@ +{ + "$schema": "./0ce8ab38-9258-4fbc-a62e-7faa6e58318f.schema.json", + "setup": { + "title": { + "title": "Example Catalyst Proposal" + }, + "proposer": { + "applicant": "John Smith", + "type": "Individual", + "coproposers": [ + "Jane Doe", + "Bob Wilson" + ] + } + }, + "summary": { + "budget": { + "requestedFunds": 150000 + }, + "time": { + "duration": 6 + }, + "translation": { + "isTranslated": true, + "originalLanguage":"German", + "originalDocumentLink": "https://example.com/original-doc" + }, + "problem": { + "statement": "Current challenge in the Cardano ecosystem...", + "impact": [ + "Technical Infrastructure", + "Developer Tooling", + "Adoption" + ] + }, + "solution": { + "summary": "Our solution provides a comprehensive toolkit...", + "approach": "We will implement this solution using...", + "innovationAspects": [ + "Novel testing framework", + "Automated integration tools" + ] + }, + "supportingLinks": { + "mainRepository": "https://github.com/example/project", + "documentation": "https://docs.example.com", + "other": [ + "https://example.com/whitepaper", + "https://example.com/roadmap" + ] + }, + "dependencies": { + "details": [ + { + "name": "External API Service", + "type": "Technical", + "description": "Integration with third-party API service", + "mitigationPlan": "Build fallback mechanisms and maintain alternative providers" + } + ] + }, + "open_source": { + "source_code": "MIT", + "documentation": "MIT", + "note": "All project outputs will be open source under MIT license" + } + }, + "horizons": { + "theme": { + "grouped_tag": { + "group": "DeFi", + "tag": "Staking" + } + } + }, + "details": { + "solution": { + "solution": "Our solution involves developing a comprehensive toolkit that will enhance the Cardano developer experience..." + }, + "impact": { + "impact": "The project will significantly impact developer productivity by reducing development time and improving code quality..." + }, + "feasibility": { + "feasibility": "Our team has extensive experience in blockchain development and has successfully delivered similar projects..." + } + }, + "milestones": { + "milestones": { + "milestone_list": [ + { + "title": "Initial Setup and Planning", + "outputs": "Project infrastructure setup and detailed planning documents", + "acceptance_criteria": "- Development environment configured\n- Detailed project plan approved", + "evidence": "- GitHub repository setup\n- Documentation of infrastructure\n- Project planning documents", + "delivery_month": 1, + "cost": 30000, + "progress": "Not Started" + }, + { + "title": "Core Development", + "outputs": "Implementation of main features", + "acceptance_criteria": "- Core features implemented\n- Unit tests passing", + "evidence": "- Code repository\n- Test results\n- Technical documentation", + "delivery_month": 3, + "cost": 60000, + "progress": "Not Started" + }, + { + "title": "Final Release and Documentation", + "outputs": "Project completion, documentation, and Project Close-out Report and Video", + "acceptance_criteria": "- All features implemented and tested\n- Documentation complete\n- Close-out report and video delivered", + "evidence": "- Final release\n- Complete documentation\n- Close-out report and video", + "delivery_month": 6, + "cost": 60000, + "progress": "Not Started" + } + ] + } + }, + "pitch": { + "team": { + "who": "Our team consists of experienced blockchain developers with proven track records..." + }, + "budget": { + "costs": "Budget breakdown:\n- Development (70%): 105,000 ADA\n- Testing (15%): 22,500 ADA\n- Documentation (15%): 22,500 ADA" + }, + "value": { + "note": "This project provides excellent value for money by delivering essential developer tools..." + } + }, + "agreements": { + "mandatory": { + "fund_rules": true, + "terms_and_conditions": true, + "privacy_policy": true + } + } +} \ No newline at end of file diff --git a/docs/src/architecture/08_concepts/document_templates/proposal/F14-Generic/extra-definitions.txt b/docs/src/architecture/08_concepts/document_templates/proposal/F14-Generic/extra-definitions.txt new file mode 100644 index 00000000000..8278ccf1d2f --- /dev/null +++ b/docs/src/architecture/08_concepts/document_templates/proposal/F14-Generic/extra-definitions.txt @@ -0,0 +1,1079 @@ +Not in the F13 proposal, or the F14 base document? + + + "proposalDetails": { + "type": "object", + "title": "Proposal Details", + "description": "Detailed information about your proposal's solution, impact, and feasibility", + "properties": { + "solution": { + "type": "object", + "title": "Solution Description", + "description": "Detailed description of your proposed solution", + "x-guidance": "

YOUR PROJECT AND SOLUTION

How you write this section will depend on what type of proposal you are writing. You might want to include details on:

Explain what is unique about your solution, who will benefit, and why this is important to Cardano.

", + "properties": { + "description": { + "type": "string", + "title": "Solution Description", + "description": "Provide a comprehensive description of your proposed solution", + "minLength": 100, + "maxLength": 2000, + "examples": [ + "Our solution involves developing a decentralized education platform that will..." + ], + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "uniqueValue": { + "type": "string", + "title": "Unique Value Proposition", + "description": "What makes your solution unique and innovative?", + "minLength": 50, + "maxLength": 500, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "targetAudience": { + "type": "array", + "title": "Target Audience", + "description": "Who will benefit from your solution?", + "items": { + "type": "string", + "minLength": 5, + "maxLength": 100, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "minItems": 1, + "maxItems": 5, + "uniqueItems": true + }, + "implementation": { + "type": "string", + "title": "Implementation Approach", + "description": "How will you implement your solution?", + "minLength": 100, + "maxLength": 1000, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + } + }, + "required": [ + "description", + "uniqueValue", + "targetAudience", + "implementation" + ] + }, + "impact": { + "type": "object", + "title": "Project Impact", + "description": "Define and measure the impact of your project", + "x-guidance": "

Please include here a description of how you intend to measure impact (whether quantitative or qualitative) and how and with whom you will share your outputs:

", + "properties": { + "communityBenefit": { + "type": "string", + "title": "Community Benefit", + "description": "How will the Cardano community benefit from your project?", + "minLength": 100, + "maxLength": 1000, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "metrics": { + "type": "array", + "title": "Impact Metrics", + "description": "Specific metrics to measure project success", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Metric Name", + "minLength": 5, + "maxLength": 100, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "description": { + "type": "string", + "title": "Metric Description", + "minLength": 20, + "maxLength": 300, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "target": { + "type": "string", + "title": "Target Value", + "minLength": 1, + "maxLength": 100, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "measurement": { + "type": "string", + "title": "Measurement Method", + "minLength": 20, + "maxLength": 300, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + } + }, + "required": [ + "name", + "description", + "target", + "measurement" + ] + }, + "minItems": 2, + "maxItems": 5 + }, + "outputs": { + "type": "array", + "title": "Project Outputs", + "description": "Tangible outputs and deliverables from the project", + "items": { + "type": "string", + "minLength": 10, + "maxLength": 200, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "minItems": 1, + "maxItems": 10, + "uniqueItems": true + } + }, + "required": [ + "communityBenefit", + "metrics", + "outputs" + ] + }, + "capability": { + "type": "object", + "title": "Capability & Feasibility", + "description": "Demonstrate your ability to deliver the project successfully", + "x-guidance": "

Please describe your existing capabilities that demonstrate how and why you believe you're best suited to deliver this project? Please include the steps or processes that demonstrate that you can be trusted to manage funds properly.

", + "properties": { + "teamExperience": { + "type": "string", + "title": "Team Experience", + "description": "Describe your team's relevant experience and capabilities", + "minLength": 100, + "maxLength": 1000, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "feasibilityApproach": { + "type": "string", + "title": "Feasibility Approach", + "description": "How will you validate the feasibility of your approach?", + "minLength": 100, + "maxLength": 1000, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "fundManagement": { + "type": "string", + "title": "Fund Management", + "description": "How will you ensure proper management and accountability of funds?", + "minLength": 100, + "maxLength": 1000, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + } + }, + "required": [ + "teamExperience", + "feasibilityApproach", + "fundManagement" + ] + } + }, + "required": [ + "solution", + "impact", + "capability" + ] +}, +"milestones": { + "type": "object", + "title": "Project Milestones", + "description": "Detailed project milestones and deliverables", + "x-guidance": "

A clear set of milestones and acceptance criteria will demonstrate your capability to deliver the project as proposed. More guidance on submitting milestones as part of your project proposal can be found here

For Grant Amounts of up to 75k ada, at least 2 milestones, plus the final one including Project Close-out Report and Video, must be included (3 milestones in total)

For Grant Amounts over 75k ada up to 150k ada, at least 3 milestones, plus the final one including Project Close-out Report and Video, must be included (4 milestones in total)

For Grant Amounts over 150k ada up to 300k ada, at least 4 milestones, plus the final one including Project Close-out Report and Video, must be included (5 milestones in total)

For Grant Amounts exceeding 300k ada, at least 5 milestones, plus the final one including Project Close-out Report and Video, must be included (6 milestones in total)

", + "properties": { + "milestonesConfig": { + "type": "object", + "title": "Milestones Configuration", + "description": "Configuration for number of milestones", + "properties": { + "grantAmount": { + "type": "number", + "title": "Grant Amount in ADA", + "description": "Total grant amount requested in ADA", + "minimum": 0, + "maximum": 1000000 + }, + "numberOfMilestones": { + "type": "integer", + "title": "Number of Milestones", + "description": "Total number of milestones including the final milestone", + "minimum": 2, + "maximum": 6 + } + }, + "required": [ + "grantAmount", + "numberOfMilestones" + ] + }, + "milestonesList": { + "type": "array", + "title": "List of Milestones", + "description": "Detailed description of each project milestone", + "items": { + "type": "object", + "title": "Milestone", + "properties": { + "title": { + "type": "string", + "title": "Milestone Title", + "description": "Short, descriptive title for the milestone", + "minLength": 5, + "maxLength": 100, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "description": { + "type": "string", + "title": "Milestone Description", + "description": "Detailed description of what this milestone entails", + "minLength": 50, + "maxLength": 1000, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "deliverables": { + "type": "array", + "title": "Deliverables", + "description": "Specific outputs and deliverables for this milestone", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Deliverable Name", + "minLength": 5, + "maxLength": 100, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "description": { + "type": "string", + "title": "Deliverable Description", + "minLength": 20, + "maxLength": 500, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "type": { + "type": "string", + "enum": [ + "Documentation", + "Software", + "Report", + "Presentation", + "Video", + "Other" + ] + } + }, + "required": [ + "name", + "description", + "type" + ] + }, + "minItems": 1, + "maxItems": 5 + }, + "acceptanceCriteria": { + "type": "array", + "title": "Acceptance Criteria", + "description": "Specific criteria that must be met to consider this milestone complete", + "items": { + "type": "string", + "minLength": 10, + "maxLength": 200, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "minItems": 1, + "maxItems": 5 + }, + "evidenceOfCompletion": { + "type": "array", + "title": "Evidence of Completion", + "description": "How will you demonstrate that this milestone is complete?", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "title": "Evidence Type", + "enum": [ + "Code Repository", + "Documentation", + "Demo Video", + "Test Results", + "Metrics Report", + "User Feedback", + "Other" + ] + }, + "description": { + "type": "string", + "title": "Evidence Description", + "minLength": 20, + "maxLength": 300, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + } + }, + "required": [ + "type", + "description" + ] + }, + "minItems": 1, + "maxItems": 3 + }, + "timeline": { + "type": "object", + "title": "Timeline", + "properties": { + "startDate": { + "type": "string", + "title": "Start Date", + "format": "date" + }, + "endDate": { + "type": "string", + "title": "End Date", + "format": "date" + }, + "durationInWeeks": { + "type": "integer", + "title": "Duration in Weeks", + "minimum": 1, + "maximum": 52 + } + }, + "required": [ + "startDate", + "endDate", + "durationInWeeks" + ] + }, + "budget": { + "type": "object", + "title": "Milestone Budget", + "properties": { + "amount": { + "type": "number", + "title": "Amount in ADA", + "minimum": 0 + }, + "breakdown": { + "type": "array", + "title": "Budget Breakdown", + "items": { + "type": "object", + "properties": { + "category": { + "type": "string", + "enum": [ + "Development", + "Design", + "Marketing", + "Operations", + "Other" + ] + }, + "amount": { + "type": "number", + "minimum": 0 + }, + "description": { + "type": "string", + "minLength": 10, + "maxLength": 200, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + } + }, + "required": [ + "category", + "amount", + "description" + ] + }, + "minItems": 1 + } + }, + "required": [ + "amount", + "breakdown" + ] + } + }, + "required": [ + "title", + "description", + "deliverables", + "acceptanceCriteria", + "evidenceOfCompletion", + "timeline", + "budget" + ] + }, + "minItems": 3, + "maxItems": 10 + } + }, + "required": [ + "milestonesConfig", + "milestonesList" + ] +}, +"finalPitch": { + "type": "object", + "title": "Final Pitch", + "description": "Final project pitch including team, budget, and value proposition", + "properties": { + "team": { + "type": "object", + "title": "Team Information", + "description": "Details about the project team and their capabilities", + "properties": { + "members": { + "type": "array", + "title": "Team Members", + "description": "List of team members and their roles", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Full name of the team member", + "minLength": 2, + "maxLength": 100, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "role": { + "type": "string", + "title": "Role", + "description": "Primary role in the project", + "minLength": 5, + "maxLength": 100, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "expertise": { + "type": "array", + "title": "Areas of Expertise", + "items": { + "type": "string", + "minLength": 3, + "maxLength": 50, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "minItems": 1, + "maxItems": 5, + "uniqueItems": true + }, + "experience": { + "type": "string", + "title": "Relevant Experience", + "description": "Brief description of relevant experience", + "minLength": 50, + "maxLength": 500, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "links": { + "type": "array", + "title": "Professional Links", + "description": "Links to professional profiles or past work", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "LinkedIn", + "GitHub", + "Portfolio", + "Twitter", + "Website", + "Other" + ] + }, + "url": { + "type": "string", + "format": "uri", + "pattern": "^https://", + "pattern": "^https?://[\\w\\-]+(\\.[\\w\\-]+)+[/#?]?.*$", + "contentMediaType": "text/uri-list" + }, + "description": { + "type": "string", + "maxLength": 100, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + } + }, + "required": [ + "type", + "url" + ] + }, + "maxItems": 5 + } + }, + "required": [ + "name", + "role", + "expertise", + "experience" + ] + }, + "minItems": 1, + "maxItems": 10 + } + }, + "required": [ + "members" + ] + }, + "budget": { + "type": "object", + "title": "Budget Details", + "description": "Detailed budget breakdown and justification", + "properties": { + "totalBudget": { + "type": "number", + "title": "Total Budget (ADA)", + "description": "Total amount requested in ADA", + "minimum": 0, + "maximum": 1000000 + }, + "categories": { + "type": "array", + "title": "Budget Categories", + "description": "Breakdown of budget by category", + "items": { + "type": "object", + "properties": { + "category": { + "type": "string", + "enum": [ + "Development", + "Design", + "Marketing", + "Operations", + "Research", + "Community Management", + "Legal", + "Other" + ] + }, + "amount": { + "type": "number", + "minimum": 0 + }, + "description": { + "type": "string", + "minLength": 20, + "maxLength": 300, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + } + }, + "required": [ + "category", + "amount", + "description" + ] + }, + "minItems": 1 + } + }, + "required": [ + "totalBudget", + "categories" + ] + }, + "valueProposition": { + "type": "object", + "title": "Value Proposition", + "description": "Justification of the project's value for money", + "properties": { + "costBenefitAnalysis": { + "type": "string", + "title": "Cost-Benefit Analysis", + "description": "Analysis of the project's costs versus its benefits to the Cardano ecosystem", + "minLength": 100, + "maxLength": 1000, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "longTermValue": { + "type": "string", + "title": "Long-term Value", + "description": "Description of the long-term value and sustainability of the project", + "minLength": 100, + "maxLength": 1000, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "communityBenefits": { + "type": "array", + "title": "Community Benefits", + "description": "Specific benefits to the Cardano community", + "items": { + "type": "string", + "minLength": 20, + "maxLength": 200, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "minItems": 2, + "maxItems": 5 + } + }, + "required": [ + "costBenefitAnalysis", + "longTermValue", + "communityBenefits" + ] + } + }, + "required": [ + "team", + "budget", + "valueProposition" + ] +}, +"mandatoryAcknowledgments": { + "type": "object", + "title": "Mandatory Acknowledgments", + "description": "Required acknowledgments and agreements for proposal submission", + "properties": { + "fundRules": { + "type": "object", + "title": "Fund Rules Agreement", + "properties": { + "acknowledgment": { + "type": "boolean", + "title": "Fund Rules Acknowledgment", + "description": "I confirm that I have read and agree to be bound by the Fund Rules", + "const": true + }, + "version": { + "type": "string", + "title": "Fund Rules Version", + "description": "Version of the Fund Rules being acknowledged", + "pattern": "^F[0-9]{1,3}$", + "examples": [ + "F14", + "F15" + ] + }, + "timestamp": { + "type": "string", + "title": "Acknowledgment Timestamp", + "description": "When the rules were acknowledged", + "format": "date-time", + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})$", + "examples": [ + "2024-01-20T15:30:00Z" + ] + } + }, + "required": [ + "acknowledgment", + "version", + "timestamp" + ] + }, + "termsAndConditions": { + "type": "object", + "title": "Terms and Conditions Agreement", + "properties": { + "acknowledgment": { + "type": "boolean", + "title": "Terms and Conditions Acknowledgment", + "description": "I confirm that I have read and agree to be bound by the Project Catalyst Terms and Conditions", + "const": true + }, + "version": { + "type": "string", + "title": "Terms Version", + "description": "Version of the Terms and Conditions being acknowledged", + "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$", + "examples": [ + "1.0.0", + "2.1.3" + ] + }, + "documentUrl": { + "type": "string", + "title": "Terms Document URL", + "description": "URL to the specific version of terms and conditions", + "format": "uri", + "pattern": "^https://[\\w\\-\\.]+\\.[a-zA-Z]{2,}/.*$", + "contentMediaType": "text/html" + }, + "timestamp": { + "type": "string", + "title": "Acknowledgment Timestamp", + "description": "When the terms were acknowledged", + "format": "date-time", + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})$", + "examples": [ + "2024-01-20T15:30:00Z" + ] + } + }, + "required": [ + "acknowledgment", + "version", + "timestamp", + "documentUrl" + ] + }, + "privacyPolicy": { + "type": "object", + "title": "Privacy Policy Agreement", + "properties": { + "acknowledgment": { + "type": "boolean", + "title": "Privacy Policy Acknowledgment", + "description": "I acknowledge and agree that any data I share will be processed in accordance with the Catalyst FCS Privacy Policy", + "const": true + }, + "version": { + "type": "string", + "title": "Privacy Policy Version", + "description": "Version of the Privacy Policy being acknowledged", + "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$", + "examples": [ + "1.0.0", + "2.1.3" + ] + }, + "documentUrl": { + "type": "string", + "title": "Privacy Policy URL", + "description": "URL to the specific version of privacy policy", + "format": "uri", + "pattern": "^https://[\\w\\-\\.]+\\.[a-zA-Z]{2,}/.*$", + "contentMediaType": "text/html" + }, + "timestamp": { + "type": "string", + "title": "Acknowledgment Timestamp", + "description": "When the privacy policy was acknowledged", + "format": "date-time", + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})$", + "examples": [ + "2024-01-20T15:30:00Z" + ] + } + }, + "required": [ + "acknowledgment", + "version", + "timestamp", + "documentUrl" + ] + }, + "intellectualProperty": { + "type": "object", + "title": "Intellectual Property Declaration", + "properties": { + "acknowledgment": { + "type": "boolean", + "title": "IP Rights Acknowledgment", + "description": "I confirm that I have the necessary rights to all intellectual property included in this proposal", + "const": true + }, + "details": { + "type": "string", + "title": "IP Details", + "description": "Additional details about intellectual property rights (if applicable)", + "maxLength": 1000, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "attachments": { + "type": "array", + "title": "IP Documentation", + "description": "Supporting documentation for IP rights (if applicable)", + "items": { + "type": "object", + "properties": { + "documentType": { + "type": "string", + "enum": [ + "patent", + "trademark", + "copyright", + "license", + "other" + ], + "description": "Type of IP documentation" + }, + "documentUrl": { + "type": "string", + "format": "uri", + "pattern": "^https://[\\w\\-\\.]+\\.[a-zA-Z]{2,}/.*$", + "contentMediaType": "application/pdf" + }, + "description": { + "type": "string", + "maxLength": 500, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + } + }, + "required": [ + "documentType", + "documentUrl", + "description" + ] + }, + "maxItems": 10 + }, + "timestamp": { + "type": "string", + "title": "Acknowledgment Timestamp", + "description": "When the IP declaration was made", + "format": "date-time", + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})$", + "examples": [ + "2024-01-20T15:30:00Z" + ] + } + }, + "required": [ + "acknowledgment", + "timestamp" + ] + }, + "compliance": { + "type": "object", + "title": "Compliance Declaration", + "properties": { + "legalCompliance": { + "type": "boolean", + "title": "Legal Compliance", + "description": "I confirm that my proposal complies with all applicable laws and regulations", + "const": true + }, + "noConflictOfInterest": { + "type": "boolean", + "title": "No Conflict of Interest", + "description": "I confirm that there are no undisclosed conflicts of interest", + "const": true + }, + "accurateInformation": { + "type": "boolean", + "title": "Information Accuracy", + "description": "I confirm that all information provided is accurate and complete", + "const": true + }, + "jurisdictions": { + "type": "array", + "title": "Applicable Jurisdictions", + "description": "List of jurisdictions where compliance is declared", + "items": { + "type": "string", + "pattern": "^[A-Z]{2}$", + "description": "ISO 3166-1 alpha-2 country code" + }, + "minItems": 1, + "uniqueItems": true + }, + "timestamp": { + "type": "string", + "title": "Acknowledgment Timestamp", + "description": "When the compliance declaration was made", + "format": "date-time", + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})$", + "examples": [ + "2024-01-20T15:30:00Z" + ] + } + }, + "required": [ + "legalCompliance", + "noConflictOfInterest", + "accurateInformation", + "jurisdictions", + "timestamp" + ] + }, + "additionalAcknowledgments": { + "type": "array", + "title": "Additional Acknowledgments", + "description": "Any additional acknowledgments required for specific proposal types", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "title": "Acknowledgment Type", + "minLength": 5, + "maxLength": 100, + "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-\\.]*$" + }, + "acknowledgment": { + "type": "boolean", + "title": "Acknowledgment", + "const": true + }, + "description": { + "type": "string", + "title": "Description", + "description": "Detailed description of what is being acknowledged", + "minLength": 10, + "maxLength": 500, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "documentUrl": { + "type": "string", + "title": "Reference Document", + "description": "URL to the document being acknowledged", + "format": "uri", + "pattern": "^https://[\\w\\-\\.]+\\.[a-zA-Z]{2,}/.*$", + "contentMediaType": "text/html" + }, + "timestamp": { + "type": "string", + "title": "Acknowledgment Timestamp", + "format": "date-time", + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})$", + "examples": [ + "2024-01-20T15:30:00Z" + ] + } + }, + "required": [ + "type", + "acknowledgment", + "description", + "timestamp" + ] + } + } + }, + "required": [ + "fundRules", + "termsAndConditions", + "privacyPolicy", + "intellectualProperty", + "compliance" + ] +} +} +} + "impact": { + "type": "object", + "title": "Project Impact", + "description": "Describe the expected impact of your project", + "properties": { + "timeframe": { + "type": "string", + "enum": [ + "Short-term (0-6 months)", + "Medium-term (6-18 months)", + "Long-term (18+ months)" + ], + "title": "Impact Timeframe", + "description": "Expected timeframe to see meaningful impact" + }, + "scale": { + "type": "string", + "enum": [ + "Local", + "Regional", + "Global" + ], + "title": "Impact Scale", + "description": "Geographic scale of impact" + }, + "metrics": { + "type": "array", + "title": "Impact Metrics", + "description": "Key metrics to measure project success", + "items": { + "type": "object", + "properties": { + "metric": { + "type": "string", + "title": "Metric Name", + "description": "Name of the metric", + "maxLength": 100, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "target": { + "type": "string", + "title": "Target Value", + "description": "Target value or goal for this metric", + "maxLength": 100, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + }, + "measurement": { + "type": "string", + "title": "Measurement Method", + "description": "How this metric will be measured", + "maxLength": 200, + "pattern": "^[\\S\\s]*$", + "contentMediaType": "text/plain" + } + }, + "required": [ + "metric", + "target", + "measurement" + ] + }, + "minItems": 1, + "maxItems": 5 + } + }, + "required": [ + "timeframe", + "scale", + "metrics" + ] + } +}, +"required": [ + "primaryCategory", + "subCategory", + "tags", + "impact" +] +},