Page Not Found | OpenPathfinder
-
+
diff --git a/assets/js/d0610505.cc6ebf0e.js b/assets/js/d0610505.45e6229e.js
similarity index 94%
rename from assets/js/d0610505.cc6ebf0e.js
rename to assets/js/d0610505.45e6229e.js
index 6031965c..fe79a067 100644
--- a/assets/js/d0610505.cc6ebf0e.js
+++ b/assets/js/d0610505.45e6229e.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopenpathfinder_com=self.webpackChunkopenpathfinder_com||[]).push([[6436],{7982:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"type":"mdx","permalink":"/contribute","source":"@site/src/pages/contribute.md","title":"Contribute","description":"Before Anything","frontMatter":{"title":"Contribute"},"unlisted":false}');var t=i(4848),r=i(8453);const o={title:"Contribute"},c=void 0,d={},l=[{value:"Before Anything",id:"before-anything",level:2},{value:"Code of Conduct",id:"code-of-conduct",level:2},{value:"Developer's Certificate of Origin 1.1",id:"developers-certificate-of-origin-11",level:2},{value:"Supporting the Project",id:"supporting-the-project",level:2},{value:"How You Can Help",id:"how-you-can-help",level:3},{value:"Where to Contribute",id:"where-to-contribute",level:2},{value:"Website",id:"website",level:3},{value:"fortSphere",id:"fortsphere",level:3},{value:"visionBoard",id:"visionboard",level:3},{value:"Pull Requests",id:"pull-requests",level:2},{value:"Creating a Good PR",id:"creating-a-good-pr",level:3},{value:"Current Initiatives",id:"current-initiatives",level:2},{value:"Solve Technical Debt",id:"solve-technical-debt",level:3},{value:"Research on Compliance Checks for visionBoard",id:"research-on-compliance-checks-for-visionboard",level:3},{value:"Add Compliance Checks for visionBoard",id:"add-compliance-checks-for-visionboard",level:3}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",input:"input",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"before-anything",children:"Before Anything"}),"\n",(0,t.jsxs)(n.p,{children:["The project welcomes all contributions from anyone willing to work in good faith with other contributors and the community. No contribution is too small, and all contributions are valued. ",(0,t.jsxs)(n.strong,{children:["Any contribution to this project must follow the ",(0,t.jsx)(n.a,{href:"#code-of-conduct",children:"Code of Conduct"})," and the ",(0,t.jsx)(n.a,{href:"#developers-certificate-of-origin-11",children:"DCO"}),"."]})]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"code-of-conduct",children:"Code of Conduct"}),"\n",(0,t.jsxs)(n.p,{children:["The project has a ",(0,t.jsx)(n.a,{href:"/code_of_conduct",children:"Code of Conduct"})," to which all contributors must adhere. This ensures a respectful and inclusive environment for everyone involved."]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"developers-certificate-of-origin-11",children:"Developer's Certificate of Origin 1.1"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"By making a contribution to this project, I certify that:\n\n (a) The contribution was created in whole or in part by me and I\n have the right to submit it under the open source license\n indicated in the file; or\n\n (b) The contribution is based upon previous work that, to the best\n of my knowledge, is covered under an appropriate open source\n license and I have the right under that license to submit that\n work with modifications, whether created in whole or in part\n by me, under the same open source license (unless I am\n permitted to submit under a different license), as indicated\n in the file; or\n\n (c) The contribution was provided directly to me by some other\n person who certified (a), (b) or (c) and I have not modified\n it.\n\n (d) I understand and agree that this project and the contribution\n are public and that a record of the contribution (including all\n personal information I submit with it, including my sign-off) is\n maintained indefinitely and may be redistributed consistent with\n this project or the open source license(s) involved.\n"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"supporting-the-project",children:"Supporting the Project"}),"\n",(0,t.jsx)(n.p,{children:"We are committed to providing tools that empower developers and organizations. However, building and maintaining open-source software requires resources. If you find value in our tools, consider supporting the project through donations."}),"\n",(0,t.jsx)(n.h3,{id:"how-you-can-help",children:"How You Can Help"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Individual Donations"}),": Contributions of any size are welcome and help us continue our work."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Corporate Sponsorship"}),": If you represent a company, you can sponsor the project and gain recognition while supporting the open-source community."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, visit our ",(0,t.jsx)(n.a,{href:"/support",children:"Sponsorship Page"}),"."]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"where-to-contribute",children:"Where to Contribute"}),"\n",(0,t.jsx)(n.admonition,{type:"tip",children:(0,t.jsxs)(n.p,{children:["Any issue labeled ",(0,t.jsx)(n.a,{href:"https://github.com/search?q=org%3AOpenPathfinder+label%3A%22help+wanted%22+state%3A%22open%22&type=issues",children:"help wanted"})," or ",(0,t.jsx)(n.a,{href:"https://github.com/search?q=org%3AOpenPathfinder+label%3A%22good+first+issue%22+state%3A%22open%22&type=issues",children:"good first issue"})," is a great opportunity to help the project."]})}),"\n",(0,t.jsx)(n.p,{children:"Contributions can take many forms, from improving documentation to fixing bugs or adding features. Below are specific areas to focus your contributions:"}),"\n",(0,t.jsx)(n.h3,{id:"website",children:"Website"}),"\n",(0,t.jsxs)(n.p,{children:["Contribute by improving documentation, user guides, and resources hosted on the ",(0,t.jsx)(n.a,{href:"https://openpathfinder.org",children:"OpenPathfinder website"}),". Typical contributions include:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Adding or editing guides."}),"\n",(0,t.jsx)(n.li,{children:"Fixing typos and broken links."}),"\n",(0,t.jsx)(n.li,{children:"Enhancing readability and accessibility."}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"fortsphere",children:"fortSphere"}),"\n",(0,t.jsx)(n.p,{children:"Help improve the CLI by:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Adding new commands."}),"\n",(0,t.jsx)(n.li,{children:"Enhancing existing policies."}),"\n",(0,t.jsx)(n.li,{children:"Fixing bugs or optimizing performance."}),"\n",(0,t.jsx)(n.li,{children:"Expanding test coverage."}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"visionboard",children:"visionBoard"}),"\n",(0,t.jsx)(n.p,{children:"VisionBoard contributions can include:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Writing or improving documentation."}),"\n",(0,t.jsx)(n.li,{children:"Adding new compliance checks."}),"\n",(0,t.jsx)(n.li,{children:"Enhancing dashboards or reports."}),"\n",(0,t.jsx)(n.li,{children:"Answering user questions or providing community support."}),"\n",(0,t.jsx)(n.li,{children:"Running infrastructure and advocating for the project."}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"pull-requests",children:"Pull Requests"}),"\n",(0,t.jsx)(n.h3,{id:"creating-a-good-pr",children:"Creating a Good PR"}),"\n",(0,t.jsx)(n.p,{children:"Follow these steps to create a high-quality Pull Request (PR):"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Understand the Guidelines:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Read the ",(0,t.jsx)(n.a,{href:"/contribute",children:"Contributing Guidelines"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Adhere to the ",(0,t.jsx)(n.a,{href:"/code_of_conduct",children:"Code of Conduct"}),"."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Before You Start:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Link your PR to an issue if it addresses a bug or feature request."}),"\n",(0,t.jsx)(n.li,{children:"Sync with the main branch to avoid conflicts."}),"\n",(0,t.jsx)(n.li,{children:"Focus on one issue or feature per PR."}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Writing the Code:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Follow ",(0,t.jsx)(n.a,{href:"https://standardjs.com/",children:"coding standards"}),"."]}),"\n",(0,t.jsx)(n.li,{children:"Write or update tests to cover your changes."}),"\n",(0,t.jsx)(n.li,{children:"Keep changes minimal and avoid unrelated edits."}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Writing the PR:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Use a descriptive title."}),"\n",(0,t.jsxs)(n.li,{children:["Provide a detailed description, including ",(0,t.jsx)(n.strong,{children:"what"}),", ",(0,t.jsx)(n.strong,{children:"why"}),", and ",(0,t.jsx)(n.strong,{children:"how"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Link related issues (e.g., ",(0,t.jsx)(n.code,{children:"Closes #123"}),")."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Checklist Before Submission:"}),"\n",(0,t.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,t.jsxs)(n.li,{className:"task-list-item",children:[(0,t.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Code is linted and passes style checks."]}),"\n",(0,t.jsxs)(n.li,{className:"task-list-item",children:[(0,t.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Tests are added, updated, and pass."]}),"\n",(0,t.jsxs)(n.li,{className:"task-list-item",children:[(0,t.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Documentation is updated (if applicable)."]}),"\n",(0,t.jsxs)(n.li,{className:"task-list-item",children:[(0,t.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Branch is up-to-date with main."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Engage with Feedback:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Respond to comments promptly and revise as needed."}),"\n",(0,t.jsx)(n.li,{children:"Check CI results and address any failures."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"current-initiatives",children:"Current Initiatives"}),"\n",(0,t.jsx)(n.h3,{id:"solve-technical-debt",children:"Solve Technical Debt"}),"\n",(0,t.jsxs)(n.p,{children:["Contribute to the project by solving ",(0,t.jsx)(n.a,{href:"https://github.com/search?q=org%3AOpenPathfinder+label%3A%22technical-debt%22+state%3A%22open%22&type=issues",children:"technical debt issues"}),", especially those tagged as ",(0,t.jsx)(n.a,{href:"https://github.com/search?q=org%3AOpenPathfinder+label%3A%22good+first+issue%22+state%3A%22open%22&type=issues",children:"good first issue"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"research-on-compliance-checks-for-visionboard",children:"Research on Compliance Checks for visionBoard"}),"\n",(0,t.jsxs)(n.p,{children:["Help by researching compliance checks, defining implementations, and suggesting improvements. Look for issues tagged ",(0,t.jsx)(n.a,{href:"https://github.com/OpenPathfinder/visionBoard/issues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen+label%3Acompliance-checks+label%3Aresearch-needed",children:"compliance-checks + research-needed"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"add-compliance-checks-for-visionboard",children:"Add Compliance Checks for visionBoard"}),"\n",(0,t.jsx)(n.p,{children:"Follow these steps to implement compliance checks:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsxs)(n.strong,{children:["1. Define a Good Implementation (",(0,t.jsx)(n.a,{href:"https://github.com/OpenPathfinder/visionBoard/issues/43#issuecomment-2524594504",children:"Example"}),"):"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Read the documentation (guidelines, best practices, etc.)."}),"\n",(0,t.jsx)(n.li,{children:"Brainstorm the implementation details (logic, alerts, tasks, validations, edge cases, etc.)."}),"\n",(0,t.jsx)(n.li,{children:"Reach an agreement on the implementation details before starting."}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsxs)(n.strong,{children:["2. Update Check Record (",(0,t.jsx)(n.a,{href:"https://github.com/OpenPathfinder/visionBoard/commit/55eaac59920a5229ef9eeaf859943578a66d1aeb",children:"Example"}),"):"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Update the ",(0,t.jsx)(n.code,{children:"compliance_checks"})," row with fields like ",(0,t.jsx)(n.code,{children:"how_to_url"}),", ",(0,t.jsx)(n.code,{children:"implementation_status"}),", ",(0,t.jsx)(n.code,{children:"implementation_type"}),", and ",(0,t.jsx)(n.code,{children:"implementation_details_reference"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Test migration scripts using ",(0,t.jsx)(n.code,{children:"npm run db:migrate"})," and ",(0,t.jsx)(n.code,{children:"npm run db:rollback"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Update the database schema with ",(0,t.jsx)(n.code,{children:"npm run db:generate-schema"}),"."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsxs)(n.strong,{children:["3. Implement the Business Logic (",(0,t.jsx)(n.a,{href:"https://github.com/OpenPathfinder/visionBoard/commit/44c41d119f0daefb7b2e496ba35d5ab65bcc319b",children:"Validator Example"})," and ",(0,t.jsx)(n.a,{href:"https://github.com/OpenPathfinder/visionBoard/commit/6f1e16129ee0d01a1b9b536cd2dc6090b048b71f",children:"Check Example"}),"):"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Add the specific validator in ",(0,t.jsx)(n.code,{children:"src/checks/validators/index.js"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Add the check logic in ",(0,t.jsx)(n.code,{children:"src/checks/complianceChecks"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Calculate ",(0,t.jsx)(n.code,{children:"severity"})," accurately (",(0,t.jsx)(n.code,{children:"getSeverityFromPriorityGroup"}),")."]}),"\n",(0,t.jsxs)(n.li,{children:["Update relevant database tables (",(0,t.jsx)(n.code,{children:"compliance_checks_alerts"}),", ",(0,t.jsx)(n.code,{children:"compliance_checks_tasks"}),", ",(0,t.jsx)(n.code,{children:"compliance_checks_results"}),")."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"4. Ensure It Works as Expected:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Add unit tests for the validator check."}),"\n",(0,t.jsx)(n.li,{children:"Add integration test cases for the check."}),"\n",(0,t.jsx)(n.li,{children:"Verify all tests pass."}),"\n",(0,t.jsxs)(n.li,{children:["Run ",(0,t.jsx)(n.code,{children:"check run --name {check_code_name}"})," and verify database changes. Update the seed script if necessary (",(0,t.jsx)(n.code,{children:"npm run db:seed"}),")."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsxs)(n.strong,{children:["5. Update the Website (",(0,t.jsx)(n.a,{href:"https://github.com/OpenPathfinder/website/pull/9",children:"Example"}),"):"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Review content at ",(0,t.jsx)(n.code,{children:"https://openjs-security-program-standards.netlify.app/details/{check_code_name}"}),"."]}),"\n",(0,t.jsx)(n.li,{children:"Create a PR to include check calculation details and mitigation information."}),"\n"]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>c});var s=i(6540);const t={},r=s.createContext(t);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkopenpathfinder_com=self.webpackChunkopenpathfinder_com||[]).push([[6436],{7982:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"type":"mdx","permalink":"/contribute","source":"@site/src/pages/contribute.md","title":"Contribute","description":"Before Anything","frontMatter":{"title":"Contribute"},"unlisted":false}');var t=i(4848),r=i(8453);const o={title:"Contribute"},c=void 0,d={},l=[{value:"Before Anything",id:"before-anything",level:2},{value:"Code of Conduct",id:"code-of-conduct",level:2},{value:"Developer's Certificate of Origin 1.1",id:"developers-certificate-of-origin-11",level:2},{value:"Supporting the Project",id:"supporting-the-project",level:2},{value:"How You Can Help",id:"how-you-can-help",level:3},{value:"Where to Contribute",id:"where-to-contribute",level:2},{value:"Website",id:"website",level:3},{value:"fortSphere",id:"fortsphere",level:3},{value:"visionBoard",id:"visionboard",level:3},{value:"Pull Requests",id:"pull-requests",level:2},{value:"Creating a Good PR",id:"creating-a-good-pr",level:3},{value:"Current Initiatives",id:"current-initiatives",level:2},{value:"Solve Technical Debt",id:"solve-technical-debt",level:3},{value:"Research on Compliance Checks for visionBoard",id:"research-on-compliance-checks-for-visionboard",level:3},{value:"Add Compliance Checks for visionBoard",id:"add-compliance-checks-for-visionboard",level:3}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",input:"input",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"before-anything",children:"Before Anything"}),"\n",(0,t.jsxs)(n.p,{children:["The project welcomes all contributions from anyone willing to work in good faith with other contributors and the community. No contribution is too small, and all contributions are valued. ",(0,t.jsxs)(n.strong,{children:["Any contribution to this project must follow the ",(0,t.jsx)(n.a,{href:"#code-of-conduct",children:"Code of Conduct"})," and the ",(0,t.jsx)(n.a,{href:"#developers-certificate-of-origin-11",children:"DCO"}),"."]})]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"code-of-conduct",children:"Code of Conduct"}),"\n",(0,t.jsxs)(n.p,{children:["The project has a ",(0,t.jsx)(n.a,{href:"/code_of_conduct",children:"Code of Conduct"})," to which all contributors must adhere. This ensures a respectful and inclusive environment for everyone involved."]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"developers-certificate-of-origin-11",children:"Developer's Certificate of Origin 1.1"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"By making a contribution to this project, I certify that:\n\n (a) The contribution was created in whole or in part by me and I\n have the right to submit it under the open source license\n indicated in the file; or\n\n (b) The contribution is based upon previous work that, to the best\n of my knowledge, is covered under an appropriate open source\n license and I have the right under that license to submit that\n work with modifications, whether created in whole or in part\n by me, under the same open source license (unless I am\n permitted to submit under a different license), as indicated\n in the file; or\n\n (c) The contribution was provided directly to me by some other\n person who certified (a), (b) or (c) and I have not modified\n it.\n\n (d) I understand and agree that this project and the contribution\n are public and that a record of the contribution (including all\n personal information I submit with it, including my sign-off) is\n maintained indefinitely and may be redistributed consistent with\n this project or the open source license(s) involved.\n"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"supporting-the-project",children:"Supporting the Project"}),"\n",(0,t.jsx)(n.p,{children:"We are committed to providing tools that empower developers and organizations. However, building and maintaining open-source software requires resources. If you find value in our tools, consider supporting the project through donations."}),"\n",(0,t.jsx)(n.h3,{id:"how-you-can-help",children:"How You Can Help"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Individual Donations"}),": Contributions of any size are welcome and help us continue our work."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Corporate Sponsorship"}),": If you represent a company, you can sponsor the project and gain recognition while supporting the open-source community."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["For more details, visit our ",(0,t.jsx)(n.a,{href:"/support",children:"Sponsorship Page"}),"."]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"where-to-contribute",children:"Where to Contribute"}),"\n",(0,t.jsx)(n.admonition,{type:"tip",children:(0,t.jsxs)(n.p,{children:["Any issue labeled ",(0,t.jsx)(n.a,{href:"https://github.com/search?q=org%3AOpenPathfinder+label%3A%22help+wanted%22+state%3A%22open%22&type=issues",children:"help wanted"})," or ",(0,t.jsx)(n.a,{href:"https://github.com/search?q=org%3AOpenPathfinder+label%3A%22good+first+issue%22+state%3A%22open%22&type=issues",children:"good first issue"})," is a great opportunity to help the project."]})}),"\n",(0,t.jsx)(n.p,{children:"Contributions can take many forms, from improving documentation to fixing bugs or adding features. Below are specific areas to focus your contributions:"}),"\n",(0,t.jsx)(n.h3,{id:"website",children:"Website"}),"\n",(0,t.jsxs)(n.p,{children:["Contribute by improving documentation, user guides, and resources hosted on the ",(0,t.jsx)(n.a,{href:"https://openpathfinder.org",children:"OpenPathfinder website"}),". Typical contributions include:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Adding or editing guides."}),"\n",(0,t.jsx)(n.li,{children:"Fixing typos and broken links."}),"\n",(0,t.jsx)(n.li,{children:"Enhancing readability and accessibility."}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"fortsphere",children:"fortSphere"}),"\n",(0,t.jsx)(n.p,{children:"Help improve the CLI by:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Adding new commands."}),"\n",(0,t.jsx)(n.li,{children:"Enhancing existing policies."}),"\n",(0,t.jsx)(n.li,{children:"Fixing bugs or optimizing performance."}),"\n",(0,t.jsx)(n.li,{children:"Expanding test coverage."}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"visionboard",children:"visionBoard"}),"\n",(0,t.jsx)(n.p,{children:"VisionBoard contributions can include:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Writing or improving documentation."}),"\n",(0,t.jsx)(n.li,{children:"Adding new compliance checks."}),"\n",(0,t.jsx)(n.li,{children:"Enhancing dashboards or reports."}),"\n",(0,t.jsx)(n.li,{children:"Answering user questions or providing community support."}),"\n",(0,t.jsx)(n.li,{children:"Running infrastructure and advocating for the project."}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"pull-requests",children:"Pull Requests"}),"\n",(0,t.jsx)(n.h3,{id:"creating-a-good-pr",children:"Creating a Good PR"}),"\n",(0,t.jsx)(n.p,{children:"Follow these steps to create a high-quality Pull Request (PR):"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Understand the Guidelines:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Read the ",(0,t.jsx)(n.a,{href:"/contribute",children:"Contributing Guidelines"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Adhere to the ",(0,t.jsx)(n.a,{href:"/code_of_conduct",children:"Code of Conduct"}),"."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Before You Start:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Link your PR to an issue if it addresses a bug or feature request."}),"\n",(0,t.jsx)(n.li,{children:"Sync with the main branch to avoid conflicts."}),"\n",(0,t.jsx)(n.li,{children:"Focus on one issue or feature per PR."}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Writing the Code:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Follow ",(0,t.jsx)(n.a,{href:"https://standardjs.com/",children:"coding standards"}),"."]}),"\n",(0,t.jsx)(n.li,{children:"Write or update tests to cover your changes."}),"\n",(0,t.jsx)(n.li,{children:"Keep changes minimal and avoid unrelated edits."}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Writing the PR:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Use a descriptive title."}),"\n",(0,t.jsxs)(n.li,{children:["Provide a detailed description, including ",(0,t.jsx)(n.strong,{children:"what"}),", ",(0,t.jsx)(n.strong,{children:"why"}),", and ",(0,t.jsx)(n.strong,{children:"how"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Link related issues (e.g., ",(0,t.jsx)(n.code,{children:"Closes #123"}),")."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Checklist Before Submission:"}),"\n",(0,t.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,t.jsxs)(n.li,{className:"task-list-item",children:[(0,t.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Code is linted and passes style checks."]}),"\n",(0,t.jsxs)(n.li,{className:"task-list-item",children:[(0,t.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Tests are added, updated, and pass."]}),"\n",(0,t.jsxs)(n.li,{className:"task-list-item",children:[(0,t.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Documentation is updated (if applicable)."]}),"\n",(0,t.jsxs)(n.li,{className:"task-list-item",children:[(0,t.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Branch is up-to-date with main."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Engage with Feedback:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Respond to comments promptly and revise as needed."}),"\n",(0,t.jsx)(n.li,{children:"Check CI results and address any failures."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"current-initiatives",children:"Current Initiatives"}),"\n",(0,t.jsx)(n.h3,{id:"solve-technical-debt",children:"Solve Technical Debt"}),"\n",(0,t.jsxs)(n.p,{children:["Contribute to the project by solving ",(0,t.jsx)(n.a,{href:"https://github.com/search?q=org%3AOpenPathfinder+label%3A%22technical-debt%22+state%3A%22open%22&type=issues",children:"technical debt issues"}),", especially those tagged as ",(0,t.jsx)(n.a,{href:"https://github.com/search?q=org%3AOpenPathfinder+label%3A%22good+first+issue%22+state%3A%22open%22&type=issues",children:"good first issue"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"research-on-compliance-checks-for-visionboard",children:"Research on Compliance Checks for visionBoard"}),"\n",(0,t.jsxs)(n.p,{children:["Help by researching compliance checks, defining implementations, and suggesting improvements. Look for issues tagged ",(0,t.jsx)(n.a,{href:"https://github.com/OpenPathfinder/visionBoard/issues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen+label%3Acompliance-checks+label%3Aresearch-needed",children:"compliance-checks + research-needed"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"add-compliance-checks-for-visionboard",children:"Add Compliance Checks for visionBoard"}),"\n",(0,t.jsx)(n.p,{children:"Follow these steps to implement compliance checks:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsxs)(n.strong,{children:["1. Define a Good Implementation (",(0,t.jsx)(n.a,{href:"https://github.com/OpenPathfinder/visionBoard/issues/43#issuecomment-2524594504",children:"Example"}),"):"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Read the documentation (guidelines, best practices, etc.)."}),"\n",(0,t.jsx)(n.li,{children:"Brainstorm the implementation details (logic, alerts, tasks, validations, edge cases, etc.)."}),"\n",(0,t.jsx)(n.li,{children:"Reach an agreement on the implementation details before starting."}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsxs)(n.strong,{children:["2. Update Check Record (",(0,t.jsx)(n.a,{href:"https://github.com/OpenPathfinder/visionBoard/commit/55eaac59920a5229ef9eeaf859943578a66d1aeb",children:"Example"}),"):"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Update the ",(0,t.jsx)(n.code,{children:"compliance_checks"})," row with fields like ",(0,t.jsx)(n.code,{children:"how_to_url"}),", ",(0,t.jsx)(n.code,{children:"implementation_status"}),", ",(0,t.jsx)(n.code,{children:"implementation_type"}),", and ",(0,t.jsx)(n.code,{children:"implementation_details_reference"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Test migration scripts using ",(0,t.jsx)(n.code,{children:"npm run db:migrate"})," and ",(0,t.jsx)(n.code,{children:"npm run db:rollback"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Update the database schema with ",(0,t.jsx)(n.code,{children:"npm run db:generate-schema"}),"."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsxs)(n.strong,{children:["3. Implement the Business Logic (",(0,t.jsx)(n.a,{href:"https://github.com/OpenPathfinder/visionBoard/commit/44c41d119f0daefb7b2e496ba35d5ab65bcc319b",children:"Validator Example"})," and ",(0,t.jsx)(n.a,{href:"https://github.com/OpenPathfinder/visionBoard/commit/6f1e16129ee0d01a1b9b536cd2dc6090b048b71f",children:"Check Example"}),"):"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Add the specific validator in ",(0,t.jsx)(n.code,{children:"src/checks/validators/index.js"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Add the check logic in ",(0,t.jsx)(n.code,{children:"src/checks/complianceChecks"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Calculate ",(0,t.jsx)(n.code,{children:"severity"})," accurately (",(0,t.jsx)(n.code,{children:"getSeverityFromPriorityGroup"}),")."]}),"\n",(0,t.jsxs)(n.li,{children:["Update relevant database tables (",(0,t.jsx)(n.code,{children:"compliance_checks_alerts"}),", ",(0,t.jsx)(n.code,{children:"compliance_checks_tasks"}),", ",(0,t.jsx)(n.code,{children:"compliance_checks_results"}),")."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"4. Ensure It Works as Expected:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Add unit tests for the validator check."}),"\n",(0,t.jsx)(n.li,{children:"Add integration test cases for the check."}),"\n",(0,t.jsx)(n.li,{children:"Verify all tests pass."}),"\n",(0,t.jsxs)(n.li,{children:["Run ",(0,t.jsx)(n.code,{children:"check run --name {check_code_name}"})," and verify database changes. Update the seed script if necessary (",(0,t.jsx)(n.code,{children:"npm run db:seed"}),")."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsxs)(n.strong,{children:["5. Update the Website (",(0,t.jsx)(n.a,{href:"https://github.com/OpenPathfinder/openpathfinder.com/pull/20",children:"Example"}),"):"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Review content at ",(0,t.jsx)(n.code,{children:"https://openpathfinder.com/docs/checks/{check_code_name}"}),"."]}),"\n",(0,t.jsx)(n.li,{children:"Create a PR to include check calculation details and mitigation information."}),"\n"]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>c});var s=i(6540);const t={},r=s.createContext(t);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/runtime~main.d1da3fea.js b/assets/js/runtime~main.b5caf7cf.js
similarity index 99%
rename from assets/js/runtime~main.d1da3fea.js
rename to assets/js/runtime~main.b5caf7cf.js
index 68befd66..856783e6 100644
--- a/assets/js/runtime~main.d1da3fea.js
+++ b/assets/js/runtime~main.b5caf7cf.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,c,d,f,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=b,r.c=t,e=[],r.O=(a,c,d,f)=>{if(!c){var b=1/0;for(i=0;i=f)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[c,d,f]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var f=Object.create(null);r.r(f);var b={};a=a||[null,c({}),c([]),c(c)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(f,b),f},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,c)=>(r.f[c](e,a),a)),[])),r.u=e=>"assets/js/"+({297:"3e3f8afb",320:"687d05ef",351:"c783711f",463:"1b2107de",688:"d16f3476",849:"0058b4c6",867:"33fc5bb8",895:"dfe8f560",1235:"a7456010",1256:"393ba21b",1326:"5a17a8ec",1617:"4b4b8639",1903:"acecf23e",1939:"5e2f577c",2234:"2ecbc0a3",2257:"e6f1d5d9",2304:"b56c404a",2363:"48839c03",2401:"a9bd7a82",2419:"2c88a29c",2556:"d6e7704d",2634:"c4f5d8e4",2711:"9e4087bc",2741:"93f558ea",2775:"81815e46",2781:"1583b5bf",2809:"926e56cd",2841:"627645e7",2867:"3529e74c",2998:"c8b7c897",3079:"2a593a4e",3158:"dc45dbf7",3232:"39a493bb",3249:"ccc49370",3279:"1c0665c0",3462:"13496b6f",3532:"b71b16fd",3649:"8411a829",3680:"96d836a2",3784:"03f1d649",4021:"317df7e9",4027:"91e84a2b",4054:"bfdcba1f",4212:"621db11d",4236:"cb1794b5",4243:"f21c5a11",4300:"6938fd43",4327:"ee6e0711",4347:"9dc2b54c",4381:"f2afad6f",4410:"9661a930",4613:"dee25b21",4788:"ddbe62bb",4874:"bfb2d4f7",4944:"156a7111",4950:"ab6fc2ad",4984:"7c6ad78a",5093:"e7c205ff",5398:"fc4e95ad",5465:"d57bdc25",5492:"02f31de4",5742:"aba21aa0",5770:"cf56bd45",5794:"c5c9028c",5826:"55f512de",6019:"0e89e520",6061:"1f391b9e",6117:"6a80caa6",6132:"c2c46ee1",6378:"ac3acf4f",6436:"d0610505",6444:"cc6b43f4",6534:"c3170973",6684:"9b868f8b",6728:"e9dbec8c",6789:"0297f842",6898:"5d603b6e",7012:"8b8cddd6",7098:"a7bd4aaa",7131:"f46495c3",7448:"da8ed1df",7472:"814f3328",7555:"fb1f78f2",7602:"2172f098",7643:"a6aa9e1f",7700:"3c5b8a9b",7780:"a2d3d900",7792:"21def865",7856:"e515a9f3",8130:"f81c1134",8146:"c15d9823",8230:"6fcd55b8",8348:"70c1ce99",8359:"26a098ec",8401:"17896441",8563:"206b12a4",8577:"d7a584c2",8705:"d9342d57",8715:"7a9d532a",8945:"67d59855",8947:"ef8b811a",9048:"a94703ab",9080:"3d851916",9378:"4929c21c",9385:"06b8786a",9453:"6d62ba6e",9505:"9aaa4ed7",9647:"5e95c892",9671:"5f94ff8b",9684:"c4c85cfe",9714:"4761d20c",9805:"43aa4c08",9858:"36994c47",9913:"fdba8d0c",9914:"76398fbb",9925:"6019a4a6"}[e]||e)+"."+{297:"4138ec3d",320:"898e25f1",351:"545be957",463:"0d1c50b3",688:"576066bd",849:"a98ae327",867:"edbf5631",895:"8135cce1",1235:"103edb76",1256:"f1d840ff",1326:"8482ac57",1538:"d2b38bef",1617:"b54cc0cc",1903:"8ecfe5bb",1939:"129b5a4a",2234:"c2aaf1bd",2237:"b72acfc7",2257:"f002131f",2304:"fde89478",2363:"93228eea",2401:"9a581012",2419:"f1a9c361",2556:"150f96a8",2634:"892584d7",2711:"8931c1ef",2741:"da5376ea",2775:"822adb53",2781:"23f85637",2809:"c51d0dce",2841:"bfcac991",2867:"17141655",2998:"3f360acf",3079:"550599a8",3158:"f07214f1",3232:"e78851bb",3249:"54c025e6",3279:"5fe3020f",3347:"c8cb4718",3462:"7cf354aa",3532:"d33c2e64",3649:"ec18df3d",3680:"e146e384",3784:"799181d7",4021:"821ae95e",4027:"2bd54c78",4054:"0da1833c",4212:"67fb4802",4236:"146f3d62",4243:"ef92ea49",4300:"a2c61b10",4327:"5cc85f53",4347:"82425f04",4381:"460788b9",4410:"a6074bbc",4613:"fe612a26",4788:"573b3d1e",4874:"4e426d30",4944:"bf608139",4950:"46105c3a",4984:"f6cbe8e2",5093:"5c22f914",5398:"eb389543",5465:"5f9acc56",5492:"a895e635",5742:"819b351c",5770:"99ffd590",5794:"76e43f37",5826:"85dde8d2",6019:"03699f29",6061:"f5a69655",6117:"22b847d4",6132:"d9c1cb99",6378:"3b180028",6436:"cc6ebf0e",6444:"cca33b77",6534:"8e6d3b40",6684:"c62cbca5",6728:"50eda2b1",6789:"e37f4af6",6898:"424a959b",7012:"f647d980",7098:"39c667ac",7131:"d25196e0",7448:"8f5360d5",7472:"7c1d0c3a",7555:"dde3c07c",7602:"e4eec58b",7643:"6769321d",7700:"0ad6167e",7780:"454c79b4",7792:"2a6e22bd",7856:"6af8d118",8130:"33fa168f",8146:"f947b6be",8230:"44f8f698",8348:"fb894b01",8359:"6482c1c9",8401:"1fcb30c2",8563:"8f9245ca",8577:"be5a83fc",8705:"a2610b49",8715:"0a297122",8945:"17edb816",8947:"52e4f801",9048:"6d889c6b",9080:"ae0c18a8",9378:"07ffe8dc",9385:"7a3dd9ac",9453:"b5d56c33",9505:"63da1629",9647:"a8dc8afb",9671:"6e8723f1",9684:"e3e6a90f",9714:"7ebe4d48",9805:"48aa7bfa",9858:"d7bdbcc7",9913:"b75da482",9914:"76dd1551",9925:"920febdb"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},f="openpathfinder.com:",r.l=(e,a,c,b)=>{if(d[e])d[e].push(a);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var f=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),f&&f.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"8401","3e3f8afb":"297","687d05ef":"320",c783711f:"351","1b2107de":"463",d16f3476:"688","0058b4c6":"849","33fc5bb8":"867",dfe8f560:"895",a7456010:"1235","393ba21b":"1256","5a17a8ec":"1326","4b4b8639":"1617",acecf23e:"1903","5e2f577c":"1939","2ecbc0a3":"2234",e6f1d5d9:"2257",b56c404a:"2304","48839c03":"2363",a9bd7a82:"2401","2c88a29c":"2419",d6e7704d:"2556",c4f5d8e4:"2634","9e4087bc":"2711","93f558ea":"2741","81815e46":"2775","1583b5bf":"2781","926e56cd":"2809","627645e7":"2841","3529e74c":"2867",c8b7c897:"2998","2a593a4e":"3079",dc45dbf7:"3158","39a493bb":"3232",ccc49370:"3249","1c0665c0":"3279","13496b6f":"3462",b71b16fd:"3532","8411a829":"3649","96d836a2":"3680","03f1d649":"3784","317df7e9":"4021","91e84a2b":"4027",bfdcba1f:"4054","621db11d":"4212",cb1794b5:"4236",f21c5a11:"4243","6938fd43":"4300",ee6e0711:"4327","9dc2b54c":"4347",f2afad6f:"4381","9661a930":"4410",dee25b21:"4613",ddbe62bb:"4788",bfb2d4f7:"4874","156a7111":"4944",ab6fc2ad:"4950","7c6ad78a":"4984",e7c205ff:"5093",fc4e95ad:"5398",d57bdc25:"5465","02f31de4":"5492",aba21aa0:"5742",cf56bd45:"5770",c5c9028c:"5794","55f512de":"5826","0e89e520":"6019","1f391b9e":"6061","6a80caa6":"6117",c2c46ee1:"6132",ac3acf4f:"6378",d0610505:"6436",cc6b43f4:"6444",c3170973:"6534","9b868f8b":"6684",e9dbec8c:"6728","0297f842":"6789","5d603b6e":"6898","8b8cddd6":"7012",a7bd4aaa:"7098",f46495c3:"7131",da8ed1df:"7448","814f3328":"7472",fb1f78f2:"7555","2172f098":"7602",a6aa9e1f:"7643","3c5b8a9b":"7700",a2d3d900:"7780","21def865":"7792",e515a9f3:"7856",f81c1134:"8130",c15d9823:"8146","6fcd55b8":"8230","70c1ce99":"8348","26a098ec":"8359","206b12a4":"8563",d7a584c2:"8577",d9342d57:"8705","7a9d532a":"8715","67d59855":"8945",ef8b811a:"8947",a94703ab:"9048","3d851916":"9080","4929c21c":"9378","06b8786a":"9385","6d62ba6e":"9453","9aaa4ed7":"9505","5e95c892":"9647","5f94ff8b":"9671",c4c85cfe:"9684","4761d20c":"9714","43aa4c08":"9805","36994c47":"9858",fdba8d0c:"9913","76398fbb":"9914","6019a4a6":"9925"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,c)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)c.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var f=new Promise(((c,f)=>d=e[a]=[c,f]));c.push(d[2]=f);var b=r.p+r.u(a),t=new Error;r.l(b,(c=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var f=c&&("load"===c.type?"missing":c.type),b=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+f+": "+b+")",t.name="ChunkLoadError",t.type=f,t.request=b,d[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var d,f,b=c[0],t=c[1],o=c[2],n=0;if(b.some((a=>0!==e[a]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(a&&a(c);n{"use strict";var e,a,c,d,f,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=b,r.c=t,e=[],r.O=(a,c,d,f)=>{if(!c){var b=1/0;for(i=0;i=f)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[c,d,f]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var f=Object.create(null);r.r(f);var b={};a=a||[null,c({}),c([]),c(c)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(f,b),f},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,c)=>(r.f[c](e,a),a)),[])),r.u=e=>"assets/js/"+({297:"3e3f8afb",320:"687d05ef",351:"c783711f",463:"1b2107de",688:"d16f3476",849:"0058b4c6",867:"33fc5bb8",895:"dfe8f560",1235:"a7456010",1256:"393ba21b",1326:"5a17a8ec",1617:"4b4b8639",1903:"acecf23e",1939:"5e2f577c",2234:"2ecbc0a3",2257:"e6f1d5d9",2304:"b56c404a",2363:"48839c03",2401:"a9bd7a82",2419:"2c88a29c",2556:"d6e7704d",2634:"c4f5d8e4",2711:"9e4087bc",2741:"93f558ea",2775:"81815e46",2781:"1583b5bf",2809:"926e56cd",2841:"627645e7",2867:"3529e74c",2998:"c8b7c897",3079:"2a593a4e",3158:"dc45dbf7",3232:"39a493bb",3249:"ccc49370",3279:"1c0665c0",3462:"13496b6f",3532:"b71b16fd",3649:"8411a829",3680:"96d836a2",3784:"03f1d649",4021:"317df7e9",4027:"91e84a2b",4054:"bfdcba1f",4212:"621db11d",4236:"cb1794b5",4243:"f21c5a11",4300:"6938fd43",4327:"ee6e0711",4347:"9dc2b54c",4381:"f2afad6f",4410:"9661a930",4613:"dee25b21",4788:"ddbe62bb",4874:"bfb2d4f7",4944:"156a7111",4950:"ab6fc2ad",4984:"7c6ad78a",5093:"e7c205ff",5398:"fc4e95ad",5465:"d57bdc25",5492:"02f31de4",5742:"aba21aa0",5770:"cf56bd45",5794:"c5c9028c",5826:"55f512de",6019:"0e89e520",6061:"1f391b9e",6117:"6a80caa6",6132:"c2c46ee1",6378:"ac3acf4f",6436:"d0610505",6444:"cc6b43f4",6534:"c3170973",6684:"9b868f8b",6728:"e9dbec8c",6789:"0297f842",6898:"5d603b6e",7012:"8b8cddd6",7098:"a7bd4aaa",7131:"f46495c3",7448:"da8ed1df",7472:"814f3328",7555:"fb1f78f2",7602:"2172f098",7643:"a6aa9e1f",7700:"3c5b8a9b",7780:"a2d3d900",7792:"21def865",7856:"e515a9f3",8130:"f81c1134",8146:"c15d9823",8230:"6fcd55b8",8348:"70c1ce99",8359:"26a098ec",8401:"17896441",8563:"206b12a4",8577:"d7a584c2",8705:"d9342d57",8715:"7a9d532a",8945:"67d59855",8947:"ef8b811a",9048:"a94703ab",9080:"3d851916",9378:"4929c21c",9385:"06b8786a",9453:"6d62ba6e",9505:"9aaa4ed7",9647:"5e95c892",9671:"5f94ff8b",9684:"c4c85cfe",9714:"4761d20c",9805:"43aa4c08",9858:"36994c47",9913:"fdba8d0c",9914:"76398fbb",9925:"6019a4a6"}[e]||e)+"."+{297:"4138ec3d",320:"898e25f1",351:"545be957",463:"0d1c50b3",688:"576066bd",849:"a98ae327",867:"edbf5631",895:"8135cce1",1235:"103edb76",1256:"f1d840ff",1326:"8482ac57",1538:"d2b38bef",1617:"b54cc0cc",1903:"8ecfe5bb",1939:"129b5a4a",2234:"c2aaf1bd",2237:"b72acfc7",2257:"f002131f",2304:"fde89478",2363:"93228eea",2401:"9a581012",2419:"f1a9c361",2556:"150f96a8",2634:"892584d7",2711:"8931c1ef",2741:"da5376ea",2775:"822adb53",2781:"23f85637",2809:"c51d0dce",2841:"bfcac991",2867:"17141655",2998:"3f360acf",3079:"550599a8",3158:"f07214f1",3232:"e78851bb",3249:"54c025e6",3279:"5fe3020f",3347:"c8cb4718",3462:"7cf354aa",3532:"d33c2e64",3649:"ec18df3d",3680:"e146e384",3784:"799181d7",4021:"821ae95e",4027:"2bd54c78",4054:"0da1833c",4212:"67fb4802",4236:"146f3d62",4243:"ef92ea49",4300:"a2c61b10",4327:"5cc85f53",4347:"82425f04",4381:"460788b9",4410:"a6074bbc",4613:"fe612a26",4788:"573b3d1e",4874:"4e426d30",4944:"bf608139",4950:"46105c3a",4984:"f6cbe8e2",5093:"5c22f914",5398:"eb389543",5465:"5f9acc56",5492:"a895e635",5742:"819b351c",5770:"99ffd590",5794:"76e43f37",5826:"85dde8d2",6019:"03699f29",6061:"f5a69655",6117:"22b847d4",6132:"d9c1cb99",6378:"3b180028",6436:"45e6229e",6444:"cca33b77",6534:"8e6d3b40",6684:"c62cbca5",6728:"50eda2b1",6789:"e37f4af6",6898:"424a959b",7012:"f647d980",7098:"39c667ac",7131:"d25196e0",7448:"8f5360d5",7472:"7c1d0c3a",7555:"dde3c07c",7602:"e4eec58b",7643:"6769321d",7700:"0ad6167e",7780:"454c79b4",7792:"2a6e22bd",7856:"6af8d118",8130:"33fa168f",8146:"f947b6be",8230:"44f8f698",8348:"fb894b01",8359:"6482c1c9",8401:"1fcb30c2",8563:"8f9245ca",8577:"be5a83fc",8705:"a2610b49",8715:"0a297122",8945:"17edb816",8947:"52e4f801",9048:"6d889c6b",9080:"ae0c18a8",9378:"07ffe8dc",9385:"7a3dd9ac",9453:"b5d56c33",9505:"63da1629",9647:"a8dc8afb",9671:"6e8723f1",9684:"e3e6a90f",9714:"7ebe4d48",9805:"48aa7bfa",9858:"d7bdbcc7",9913:"b75da482",9914:"76dd1551",9925:"920febdb"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},f="openpathfinder.com:",r.l=(e,a,c,b)=>{if(d[e])d[e].push(a);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var f=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),f&&f.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"8401","3e3f8afb":"297","687d05ef":"320",c783711f:"351","1b2107de":"463",d16f3476:"688","0058b4c6":"849","33fc5bb8":"867",dfe8f560:"895",a7456010:"1235","393ba21b":"1256","5a17a8ec":"1326","4b4b8639":"1617",acecf23e:"1903","5e2f577c":"1939","2ecbc0a3":"2234",e6f1d5d9:"2257",b56c404a:"2304","48839c03":"2363",a9bd7a82:"2401","2c88a29c":"2419",d6e7704d:"2556",c4f5d8e4:"2634","9e4087bc":"2711","93f558ea":"2741","81815e46":"2775","1583b5bf":"2781","926e56cd":"2809","627645e7":"2841","3529e74c":"2867",c8b7c897:"2998","2a593a4e":"3079",dc45dbf7:"3158","39a493bb":"3232",ccc49370:"3249","1c0665c0":"3279","13496b6f":"3462",b71b16fd:"3532","8411a829":"3649","96d836a2":"3680","03f1d649":"3784","317df7e9":"4021","91e84a2b":"4027",bfdcba1f:"4054","621db11d":"4212",cb1794b5:"4236",f21c5a11:"4243","6938fd43":"4300",ee6e0711:"4327","9dc2b54c":"4347",f2afad6f:"4381","9661a930":"4410",dee25b21:"4613",ddbe62bb:"4788",bfb2d4f7:"4874","156a7111":"4944",ab6fc2ad:"4950","7c6ad78a":"4984",e7c205ff:"5093",fc4e95ad:"5398",d57bdc25:"5465","02f31de4":"5492",aba21aa0:"5742",cf56bd45:"5770",c5c9028c:"5794","55f512de":"5826","0e89e520":"6019","1f391b9e":"6061","6a80caa6":"6117",c2c46ee1:"6132",ac3acf4f:"6378",d0610505:"6436",cc6b43f4:"6444",c3170973:"6534","9b868f8b":"6684",e9dbec8c:"6728","0297f842":"6789","5d603b6e":"6898","8b8cddd6":"7012",a7bd4aaa:"7098",f46495c3:"7131",da8ed1df:"7448","814f3328":"7472",fb1f78f2:"7555","2172f098":"7602",a6aa9e1f:"7643","3c5b8a9b":"7700",a2d3d900:"7780","21def865":"7792",e515a9f3:"7856",f81c1134:"8130",c15d9823:"8146","6fcd55b8":"8230","70c1ce99":"8348","26a098ec":"8359","206b12a4":"8563",d7a584c2:"8577",d9342d57:"8705","7a9d532a":"8715","67d59855":"8945",ef8b811a:"8947",a94703ab:"9048","3d851916":"9080","4929c21c":"9378","06b8786a":"9385","6d62ba6e":"9453","9aaa4ed7":"9505","5e95c892":"9647","5f94ff8b":"9671",c4c85cfe:"9684","4761d20c":"9714","43aa4c08":"9805","36994c47":"9858",fdba8d0c:"9913","76398fbb":"9914","6019a4a6":"9925"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,c)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)c.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var f=new Promise(((c,f)=>d=e[a]=[c,f]));c.push(d[2]=f);var b=r.p+r.u(a),t=new Error;r.l(b,(c=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var f=c&&("load"===c.type?"missing":c.type),b=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+f+": "+b+")",t.name="ChunkLoadError",t.type=f,t.request=b,d[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var d,f,b=c[0],t=c[1],o=c[2],n=0;if(b.some((a=>0!==e[a]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(a&&a(c);nArchive | OpenPathfinder
-
+
diff --git a/blog/authors/index.html b/blog/authors/index.html
index 4637b37f..13d165b9 100644
--- a/blog/authors/index.html
+++ b/blog/authors/index.html
@@ -5,7 +5,7 @@
Authors | OpenPathfinder
-
+
diff --git a/blog/authors/ulisesgascon/index.html b/blog/authors/ulisesgascon/index.html
index eb1cadf8..60efc4a9 100644
--- a/blog/authors/ulisesgascon/index.html
+++ b/blog/authors/ulisesgascon/index.html
@@ -5,7 +5,7 @@
Ulises Gascón - One post | OpenPathfinder
-
+
diff --git a/blog/index.html b/blog/index.html
index ddf3b173..d74aa7ab 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -5,7 +5,7 @@
Blog | OpenPathfinder
-
+
diff --git a/blog/welcome/index.html b/blog/welcome/index.html
index 0b644b84..af6ff87d 100644
--- a/blog/welcome/index.html
+++ b/blog/welcome/index.html
@@ -5,7 +5,7 @@
Welcome to OpenPathfinder: Explore Our Mission and Tools | OpenPathfinder
-
+
diff --git a/code_of_conduct/index.html b/code_of_conduct/index.html
index 7977299b..92a3554b 100644
--- a/code_of_conduct/index.html
+++ b/code_of_conduct/index.html
@@ -5,7 +5,7 @@
Contributor Covenant Code of Conduct | OpenPathfinder
-
+
diff --git a/contribute/index.html b/contribute/index.html
index 55607017..e64aaca6 100644
--- a/contribute/index.html
+++ b/contribute/index.html
@@ -5,7 +5,7 @@
Contribute | OpenPathfinder
-
+
@@ -140,9 +140,9 @@