diff --git a/README.md b/README.md index 6f9cbd6a0bc4f8684cd39b8d567d6fe4b7ccd675..35af2e3d5c39b749cb149302f5378b404bb0544d 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,16 @@ SPDX-License-Identifier: MIT --> -## Development +<div align="center"> + <picture> + <img src="docs/assets/hero-image.png" alt="DevGuard by L3montree Logo" width="1200" height="588"> + </picture> +</div> -In case you want to run the "API Live Demo" against your local [Badge API](https://gitlab.opencode.de/open-code/badgebackend/badge-api) you can run the following command: +## Badge Programm -```bash -npm i -NEXT_PUBLIC_API_BASE_URL=http://localhost:8080/api/v1 npm run dev -``` \ No newline at end of file +Das Badge Programm ist ein Service, der Repositories auf spezifische Kriterien scannt und Badges basierend auf den Ergebnissen generiert. Die Badges werden im [openCode Softwarekatalog](https://opencode.de/de/software) angezeigt und geben den Status des Repositorys in Bezug auf **Sicherheit**, **Wartung** und **Wiederverwendung** an. + +### Mehr Informationen & Live Demo + +In der [Dokumentation](https://badge-api-dokumentation-520431.usercontent.opencode.de/) finden Sie weitere Informationen zum Badge Programm und eine [Live-Demo](https://badge-api-dokumentation-520431.usercontent.opencode.de/#api-small-demo). \ No newline at end of file diff --git a/docs/assets/hero-image.png b/docs/assets/hero-image.png new file mode 100644 index 0000000000000000000000000000000000000000..f71f6207d7be3d58f915081141a2cc076ffaa0ca Binary files /dev/null and b/docs/assets/hero-image.png differ diff --git a/public/assets/badge-programm.png b/public/assets/badge-programm.png new file mode 100644 index 0000000000000000000000000000000000000000..87b431ed7fd9876e37703af908045ee128176ab0 Binary files /dev/null and b/public/assets/badge-programm.png differ diff --git a/public/assets/l3montree-logo.svg b/public/assets/l3montree-logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..710763966cdadedea82f44e476d6cc5ba43ed201 --- /dev/null +++ b/public/assets/l3montree-logo.svg @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg id="Ebene_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 354.7 88.2"> + <!-- Generator: Adobe Illustrator 29.2.1, SVG Export Plug-In . SVG Version: 2.1.0 Build 116) --> + <defs> + <style> + .st0 { + fill: #ead433; + } + + .st1 { + fill: #1ea637; + } + </style> + </defs> + <g id="Ebene_1-2"> + <g> + <g> + <path class="st1" d="M48.6,19.4c-1.3-.9-4.8-3.8-5.9-9.1-.7-4.2.2-9.9,2.4-10.2,2.2-.6,5.7,4.2,6.6,8.6.9,5.7-2.6,10.1-3.1,10.8Z"/> + <path class="st1" d="M51.7,22.7c1.8,1.1,7.3,4,14.3,2.8,5.7-1.1,12.1-5.1,11.7-8.1s-7.9-5.1-13.9-3.7c-7.7,1.3-11.4,7.7-12.1,9h0Z"/> + <path class="st0" d="M45,66.1c8-11,9-24.5,3.1-33.3,1.7-2.8.9-6.4-1.8-8.4s-6.4-1.5-8.6.9c-10.1-2.9-22.7,2-30.8,13C-1.2,49.3-2.1,62.8,3.8,71.6c-1.7,2.8-.9,6.4,1.8,8.4,2.8,2,6.4,1.5,8.6-.9,10.1,2.9,22.7-2,30.8-13Z"/> + </g> + <g> + <path d="M97.3,31.4V4.7h5.7v21.5h12.1v5.1h-17.8Z"/> + <path d="M127.4,31.8c-2.1,0-3.8-.4-5.4-1.3s-2.9-2.4-4.2-4.6l4.2-2.7c.6.9,1.2,1.6,1.8,2.2s1.2,1,1.9,1.2c.7.2,1.3.4,2.1.4s1.5-.2,2.1-.5c.7-.4,1.2-.9,1.6-1.5.4-.6.6-1.4.6-2.2s-.2-1.6-.5-2.2-.8-1-1.4-1.3-1.4-.5-2.2-.5-.8,0-1.3.1c-.5,0-.9.2-1.4.4-.5.2-1,.4-1.6.6l-1.3-3.5,7-7.7,1.4,1h-11.2v-5.1h16l1,2.1-8.8,9.5-1.3-1.6c.2-.1.5-.2,1-.3s.9-.1,1.3-.1c1.2,0,2.3.2,3.3.6,1,.4,1.9,1,2.7,1.8.8.8,1.4,1.6,1.9,2.7.4,1,.7,2.1.7,3.3,0,1.8-.4,3.3-1.3,4.7-.9,1.4-2.1,2.5-3.5,3.3s-3.2,1.2-5,1.2h0Z"/> + <path d="M141.3,31.4V11.2h5.2v3.9c.1,0-.7.1-.7.1.3-.7.6-1.3,1.1-1.8.5-.5,1-1,1.6-1.4s1.3-.7,2-.9,1.4-.3,2.1-.3c1,0,2,.2,2.8.5.8.3,1.6.8,2.1,1.5s1,1.6,1.4,2.8h-.8c0,0,.3-.7.3-.7.3-.6.8-1.2,1.3-1.7s1.1-.9,1.7-1.3,1.3-.6,2-.9c.7-.2,1.4-.3,2-.3,1.6,0,2.9.3,3.9.9s1.8,1.6,2.3,2.8c.5,1.2.8,2.8.8,4.6v12.2h-5.4v-11.9c0-.9-.1-1.7-.4-2.2-.2-.6-.6-1-1.1-1.3s-1.1-.4-1.9-.4-1.1.1-1.6.3c-.5.2-.9.5-1.3.8-.4.3-.6.7-.9,1.2-.2.5-.3,1-.3,1.5v12h-5.4v-11.9c0-.8-.1-1.6-.4-2.1-.3-.6-.6-1-1.1-1.4-.5-.3-1.1-.5-1.8-.5s-1.1.1-1.6.3c-.5.2-.9.5-1.3.8s-.6.7-.9,1.2-.3,1-.3,1.5v12.1h-5.4,0Z"/> + <path d="M186.9,31.8c-2.1,0-3.9-.5-5.5-1.4s-2.9-2.1-3.8-3.7c-.9-1.6-1.4-3.4-1.4-5.4s.5-3.8,1.4-5.4,2.2-2.8,3.8-3.7,3.4-1.4,5.5-1.4,3.9.5,5.5,1.4c1.6.9,2.9,2.2,3.8,3.7.9,1.6,1.4,3.4,1.4,5.4s-.5,3.8-1.4,5.4c-.9,1.6-2.2,2.8-3.8,3.7s-3.4,1.4-5.5,1.4ZM186.9,27.1c1,0,1.9-.2,2.7-.7.8-.5,1.4-1.2,1.9-2.1.4-.9.7-1.9.7-3s-.2-2.1-.7-3c-.4-.9-1.1-1.6-1.9-2.1s-1.7-.7-2.7-.7-1.9.2-2.7.8c-.8.5-1.4,1.2-1.9,2.1-.5.9-.7,1.9-.6,3,0,1.1.2,2.1.6,3,.5.9,1.1,1.6,1.9,2.1s1.7.7,2.7.7Z"/> + <path d="M201.6,31.4V11.2h5.2v4.1c.1,0-.9.5-.9.5.3-.9.8-1.8,1.5-2.5s1.6-1.4,2.6-1.8c1-.5,2.1-.7,3.2-.7s2.8.3,3.8.9c1,.6,1.8,1.5,2.3,2.8s.8,2.8.8,4.6v12.3h-5.4v-11.9c0-.9-.1-1.7-.4-2.3s-.6-1.1-1.2-1.4c-.5-.3-1.2-.4-1.9-.4-.6,0-1.2.1-1.7.3s-1,.5-1.3.8c-.4.4-.7.8-.9,1.2s-.3,1-.3,1.5v12.1h-5.4,0Z"/> + <path d="M223.5,16.1v-4.8h13.3v4.8h-13.3ZM227.3,31.4V6.1h5.4v25.3h-5.4Z"/> + <path d="M240.3,31.4V11.2h5.2l.2,6.5-.9-1.3c.3-1,.8-2,1.5-2.8s1.5-1.5,2.4-2,1.9-.7,2.9-.7.9,0,1.3.1c.4,0,.8.2,1,.3l-1.4,5.9c-.3-.1-.7-.3-1.1-.4s-.9-.2-1.3-.2-1.2.1-1.7.3-1,.5-1.4.9-.7.9-.9,1.4c-.2.5-.3,1.1-.3,1.8v10.4h-5.5Z"/> + <path d="M265.7,31.8c-2.2,0-4.1-.4-5.7-1.3-1.6-.9-2.9-2.1-3.8-3.7-.9-1.5-1.4-3.3-1.4-5.3s.2-3,.8-4.3c.5-1.3,1.2-2.4,2.1-3.4s2-1.7,3.3-2.2,2.6-.8,4.1-.8,2.6.2,3.8.7c1.2.5,2.2,1.2,3,2.1.9.9,1.5,2,2,3.2.5,1.2.7,2.5.6,4v1.7h-16.2l-.9-3.3h12.6l-.6.7v-.8c0-.7-.3-1.3-.7-1.9-.4-.6-.9-1-1.5-1.3-.6-.3-1.3-.5-2.1-.5-1.1,0-2.1.2-2.8.6-.8.4-1.4,1.1-1.8,1.9s-.6,1.9-.6,3,.3,2.3.8,3.2,1.3,1.6,2.2,2.1c1,.5,2.1.7,3.4.7s1.7-.1,2.4-.4,1.5-.8,2.4-1.5l2.6,3.6c-.7.7-1.5,1.2-2.4,1.7s-1.8.8-2.7,1-1.9.3-2.8.3h0Z"/> + <path d="M288.1,31.8c-2.2,0-4.1-.4-5.7-1.3-1.6-.9-2.9-2.1-3.8-3.7s-1.4-3.3-1.4-5.3.2-3,.8-4.3c.5-1.3,1.2-2.4,2.1-3.4.9-.9,2-1.7,3.3-2.2s2.6-.8,4.1-.8,2.6.2,3.8.7c1.2.5,2.2,1.2,3,2.1.9.9,1.5,2,2,3.2.5,1.2.7,2.5.6,4v1.7h-16.2l-.9-3.3h12.6l-.6.7v-.8c0-.7-.3-1.3-.7-1.9-.4-.6-.9-1-1.5-1.3-.6-.3-1.3-.5-2.1-.5-1.1,0-2.1.2-2.8.6-.8.4-1.4,1.1-1.8,1.9s-.6,1.9-.6,3,.3,2.3.8,3.2,1.3,1.6,2.2,2.1c1,.5,2.1.7,3.4.7s1.7-.1,2.4-.4,1.5-.8,2.4-1.5l2.6,3.6c-.7.7-1.5,1.2-2.4,1.7s-1.8.8-2.7,1-1.9.3-2.8.3Z"/> + <path d="M108.7,79.8c-1.9,0-3.7-.3-5.3-1s-3-1.6-4.2-2.8c-1.2-1.2-2.1-2.7-2.7-4.4-.7-1.7-1-3.5-1-5.5s.3-3.7,1-5.4c.7-1.7,1.6-3.1,2.9-4.3s2.6-2.2,4.3-2.9,3.4-1,5.3-1,2.6.2,3.8.6,2.3.9,3.3,1.6c1,.7,1.9,1.5,2.6,2.3l-3.2,3.5c-.7-.7-1.3-1.3-2-1.7-.7-.5-1.4-.8-2.2-1.1-.8-.2-1.5-.4-2.3-.4-1.2,0-2.3.2-3.3.7s-1.9,1-2.7,1.8-1.3,1.7-1.8,2.8c-.4,1.1-.7,2.3-.7,3.6s.2,2.6.6,3.7c.4,1.1,1,2,1.8,2.8.8.8,1.7,1.4,2.8,1.8s2.3.6,3.6.6,1.7-.1,2.4-.3c.8-.2,1.5-.6,2.2-1,.7-.4,1.3-.9,1.8-1.5l2.4,3.9c-.6.7-1.4,1.3-2.4,1.9-1,.6-2.2,1-3.4,1.3-1.3.3-2.5.5-3.8.5h0Z"/> + <path d="M125.7,88.2l4.3-9.9v3.1s-9.9-22.1-9.9-22.1h5.4l5.5,13.1c.2.3.4.8.5,1.3.2.6.3,1.1.5,1.6l-.9.3c.2-.5.4-1,.6-1.5.2-.6.4-1.1.6-1.7l4.7-13.1h5.4l-8.4,20.1-3.4,8.8h-4.9,0Z"/> + <path d="M156.4,79.8c-.9,0-1.8-.1-2.6-.4-.9-.3-1.6-.6-2.3-1.1-.7-.5-1.3-1-1.7-1.5-.5-.6-.8-1.2-.9-1.7l1.1-.5v4.8h-4.6v-28.1h4.7v12.8l-.8-.4c.1-.6.4-1.2.9-1.7.4-.5,1-1,1.7-1.5.7-.4,1.4-.8,2.2-1.1s1.6-.4,2.4-.4c1.8,0,3.4.5,4.8,1.3,1.4.9,2.5,2.1,3.3,3.7s1.2,3.4,1.2,5.4-.4,3.8-1.2,5.4c-.8,1.6-1.9,2.8-3.3,3.7-1.4.9-2.9,1.3-4.7,1.3h0ZM155.4,75.7c1.1,0,2-.3,2.9-.8s1.5-1.3,2-2.2.7-2.1.7-3.3-.2-2.3-.7-3.2c-.5-.9-1.1-1.7-2-2.2-.8-.5-1.8-.8-2.9-.8s-2.1.3-2.9.8c-.8.5-1.5,1.3-2,2.2s-.7,2-.7,3.2.2,2.3.7,3.3,1.1,1.7,2,2.2,1.8.8,2.9.8h0Z"/> + <path d="M179.1,79.8c-2.1,0-4-.4-5.6-1.3s-2.9-2.1-3.8-3.6-1.4-3.3-1.4-5.3.2-3,.8-4.3c.5-1.3,1.2-2.4,2.1-3.4.9-1,2-1.7,3.2-2.2s2.6-.8,4.1-.8,2.6.2,3.7.8c1.1.5,2.1,1.2,3,2.1s1.5,1.9,1.9,3.1c.4,1.2.6,2.5.6,3.9v1.6h-16.3l-.9-3.2h13.2l-.6.7v-.8c0-.8-.3-1.5-.8-2.1s-1-1.1-1.7-1.4c-.7-.3-1.4-.5-2.2-.5-1.2,0-2.3.2-3.1.7-.9.5-1.5,1.2-1.9,2.1-.4.9-.6,2-.6,3.4s.3,2.4.8,3.4c.5,1,1.3,1.7,2.3,2.2,1,.5,2.2.8,3.5.8s1.8-.2,2.6-.5c.8-.3,1.6-.8,2.6-1.6l2.3,3.2c-.7.6-1.5,1.2-2.3,1.6-.9.4-1.8.8-2.8,1.1s-1.9.4-2.9.4h0Z"/> + <path d="M192,79.4v-20.1h4.6v6.4c0,0-.6-1.4-.6-1.4.3-1,.8-1.9,1.4-2.7s1.5-1.5,2.4-1.9c.9-.5,1.9-.7,2.8-.7s.8,0,1.2.1c.4,0,.7.2,1,.3l-1.3,5.1c-.3-.2-.6-.3-1-.4s-.8-.2-1.2-.2c-.6,0-1.2.1-1.8.4-.6.2-1.1.6-1.5,1s-.8.9-1,1.5c-.2.6-.4,1.2-.4,1.9v10.7h-4.7Z"/> + <path d="M214.8,79.8c-1.8,0-3.4-.3-4.8-.9s-2.6-1.4-3.4-2.6l3.1-2.6c.8.9,1.6,1.5,2.6,1.9.9.4,1.9.6,3,.6s.8,0,1.2-.2.6-.2.9-.5.4-.4.6-.7.2-.6.2-.9c0-.6-.2-1.1-.7-1.4-.2-.2-.6-.4-1.2-.6s-1.2-.4-2.1-.6c-1.4-.4-2.5-.8-3.4-1.2s-1.6-1-2.1-1.6c-.4-.5-.8-1-1-1.6-.2-.6-.3-1.3-.3-2s.2-1.7.6-2.4.9-1.3,1.6-1.9c.7-.5,1.5-.9,2.4-1.2.9-.3,1.9-.4,2.9-.4s2,.1,2.9.4,1.8.6,2.7,1.1c.8.5,1.5,1,2.1,1.7l-2.6,2.9c-.5-.5-1-.9-1.6-1.2s-1.1-.6-1.7-.9c-.6-.2-1.1-.3-1.6-.3s-.9,0-1.3.1c-.4,0-.7.2-.9.4s-.4.4-.6.7c-.1.3-.2.6-.2.9,0,.3.1.6.2.9.1.3.3.5.6.7.3.2.7.4,1.3.6s1.3.4,2.2.7c1.2.3,2.3.7,3.1,1.1s1.5.9,2,1.4c.5.5.8,1,1,1.6s.3,1.3.3,2c0,1.2-.3,2.3-1,3.2-.7.9-1.6,1.7-2.7,2.2-1.2.5-2.5.8-3.9.8h0Z"/> + <path d="M235.9,79.8c-2.1,0-4-.4-5.6-1.3s-2.9-2.1-3.8-3.6c-.9-1.5-1.4-3.3-1.4-5.3s.2-3,.8-4.3c.5-1.3,1.2-2.4,2.1-3.4s2-1.7,3.2-2.2c1.3-.5,2.6-.8,4.1-.8s2.6.2,3.7.8,2.1,1.2,3,2.1,1.5,1.9,1.9,3.1c.4,1.2.6,2.5.6,3.9v1.6h-16.3l-.9-3.2h13.2l-.6.7v-.8c0-.8-.3-1.5-.8-2.1s-1-1.1-1.7-1.4-1.4-.5-2.2-.5c-1.2,0-2.3.2-3.1.7-.9.5-1.5,1.2-1.9,2.1-.4.9-.6,2-.6,3.4s.3,2.4.8,3.4c.6,1,1.3,1.7,2.3,2.2,1,.5,2.2.8,3.5.8s1.8-.2,2.6-.5c.8-.3,1.6-.8,2.6-1.6l2.3,3.2c-.7.6-1.5,1.2-2.3,1.6-.9.4-1.8.8-2.8,1.1-1,.2-1.9.4-2.9.4h0Z"/> + <path d="M257.5,79.8c-1.9,0-3.6-.5-5.1-1.4-1.5-.9-2.7-2.2-3.5-3.7s-1.3-3.3-1.3-5.3.4-3.8,1.3-5.3c.9-1.6,2-2.8,3.5-3.7,1.5-.9,3.2-1.4,5.1-1.4s3.4.3,4.9,1c1.5.7,2.6,1.6,3.4,2.9l-2.6,3.1c-.4-.5-.9-1-1.5-1.4-.6-.4-1.2-.8-1.9-1-.7-.2-1.3-.4-2-.4-1.1,0-2.1.3-3,.8s-1.6,1.3-2.1,2.2c-.5.9-.8,2-.8,3.2s.3,2.3.8,3.2c.5.9,1.2,1.7,2.1,2.2s1.9.8,3,.8,1.3-.1,1.9-.3c.6-.2,1.2-.5,1.8-.9s1.1-.9,1.6-1.5l2.6,3.2c-.9,1.1-2,2-3.6,2.7s-3.1,1.1-4.8,1.1h0Z"/> + <path d="M276.4,79.8c-1.5,0-2.7-.3-3.8-1-1.1-.7-1.9-1.6-2.4-2.8s-.8-2.7-.8-4.3v-12.4h4.7v11.4c0,1.1.2,2,.5,2.7s.8,1.3,1.5,1.7c.6.4,1.4.6,2.3.6s1.3-.1,1.8-.3c.5-.2,1-.5,1.4-.9.4-.4.7-.9,1-1.4s.3-1.1.3-1.8v-12h4.7v20.1h-4.6v-4.2c0,0,.8-.5.8-.5-.3,1-.8,1.8-1.5,2.6s-1.6,1.3-2.6,1.8c-1,.4-2,.7-3.2.7h0Z"/> + <path d="M292.9,79.4v-20.1h4.6v6.4c0,0-.6-1.4-.6-1.4.3-1,.8-1.9,1.5-2.7s1.5-1.5,2.4-1.9c.9-.5,1.9-.7,2.8-.7s.8,0,1.2.1c.4,0,.7.2,1,.3l-1.3,5.1c-.3-.2-.6-.3-1-.4s-.8-.2-1.2-.2c-.6,0-1.2.1-1.8.4s-1.1.6-1.5,1-.8.9-1,1.5-.4,1.2-.4,1.9v10.7h-4.7Z"/> + <path d="M311.8,55c-.9,0-1.7-.2-2.2-.7-.5-.5-.8-1.1-.8-2s.3-1.5.8-2,1.3-.8,2.2-.8,1.7.2,2.2.7.8,1.2.8,2-.3,1.4-.8,1.9c-.5.5-1.3.8-2.2.8h0ZM309.5,79.4v-20.1h4.7v20.1h-4.7Z"/> + <path d="M318.4,63.7v-4.3h13v4.3h-13ZM322.3,79.4v-25.2h4.7v25.2h-4.7Z"/> + <path d="M338,88.2l4.3-9.9v3.1s-9.9-22.1-9.9-22.1h5.4l5.5,13.1c.2.3.4.8.5,1.3.2.6.3,1.1.5,1.6l-1,.3c.2-.5.4-1,.6-1.5s.4-1.1.6-1.7l4.7-13.1h5.5l-8.4,20.1-3.4,8.8h-4.9Z"/> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/public/assets/opencode-logo.svg b/public/assets/opencode-logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..5c2280b4080c27e1eeaefcc6b047d7253b6a6733 --- /dev/null +++ b/public/assets/opencode-logo.svg @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 28.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 120.7 18.3" style="enable-background:new 0 0 120.7 18.3;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#131F30;} + .st1{fill:#6382FF;} + .st2{fill:#1544FF;} +</style> +<path class="st0" d="M33.3,5.6c2.9,0,4.8,2.1,4.8,4.8c0,2.6-1.9,4.8-4.8,4.8c-2.9,0-4.8-2.1-4.8-4.8C28.5,7.7,30.3,5.6,33.3,5.6z + M33.3,13.9c2.2,0,3.4-1.7,3.4-3.6s-1.2-3.6-3.4-3.6s-3.4,1.7-3.4,3.6S31,13.9,33.3,13.9z"/> +<path class="st0" d="M40.1,5.8h1.4v2.3c0.6-1.5,2-2.5,4-2.5c2.6,0,4.3,1.9,4.3,4.8c0,2.8-1.7,4.7-4.3,4.7c-2,0-3.4-1-4-2.5v5.7h-1.4 + V5.8z M45,13.9c1.8,0,3.4-1.1,3.4-3.6c0-2.4-1.5-3.6-3.4-3.6c-1.8,0-3.5,1.2-3.5,3.6C41.5,12.8,43.2,13.9,45,13.9z"/> +<path class="st0" d="M55.8,5.6c2.6,0,4.4,1.6,4.4,4.4v0.6h-7.4c0.1,1.9,1,3.4,3.1,3.4c1.7,0,2.7-0.9,3-2.3h1.3 + c-0.4,1.6-1.5,3.4-4.3,3.4c-3,0-4.4-2.2-4.4-4.9C51.5,7.3,53.2,5.6,55.8,5.6L55.8,5.6z M58.8,9.5c-0.1-1.8-1.3-2.8-3-2.8 + c-1.6,0-2.8,1-2.9,2.8H58.8z"/> +<path class="st0" d="M62.3,5.8h1.4v2.5c0.5-1.7,1.8-2.7,3.8-2.7s3.3,1.3,3.3,3.7v5.6h-1.4V9.4c0-1.9-0.7-2.7-2.4-2.7 + c-2.1,0-3.3,1.7-3.3,4.2v4h-1.4V5.8z"/> +<path class="st0" d="M75.8,14.3c-1-0.6-1.8-1.4-2.3-2.4c-0.5-1-0.8-2.2-0.8-3.5c0-1.3,0.3-2.4,0.8-3.5c0.5-1,1.3-1.8,2.3-2.4 + c1-0.6,2.2-0.9,3.5-0.9c1.2,0,2.3,0.2,3.2,0.6c0.9,0.4,1.7,1,2.2,1.8c0.6,0.8,0.9,1.7,1,2.8h-3c-0.1-0.8-0.5-1.5-1.1-1.9 + c-0.6-0.5-1.4-0.7-2.3-0.7c-1.1,0-2,0.4-2.7,1.1c-0.7,0.7-1,1.7-1,3c0,1.3,0.3,2.3,1,3c0.7,0.7,1.6,1.1,2.7,1.1 + c0.9,0,1.7-0.2,2.3-0.7c0.6-0.5,1-1.1,1.1-1.9h3c-0.2,1.6-0.9,2.9-2,3.9c-1.1,0.9-2.6,1.4-4.4,1.4C78,15.2,76.8,14.9,75.8,14.3 + L75.8,14.3z"/> +<path class="st0" d="M87.6,7.6c0.5-0.7,1.1-1.3,1.9-1.6c0.8-0.4,1.7-0.6,2.7-0.6c1,0,1.9,0.2,2.7,0.6c0.8,0.4,1.4,0.9,1.9,1.6 + c0.5,0.7,0.7,1.6,0.7,2.6s-0.2,1.9-0.7,2.6c-0.5,0.7-1.1,1.3-1.9,1.7c-0.8,0.4-1.7,0.6-2.7,0.6s-1.9-0.2-2.7-0.6 + c-0.8-0.4-1.4-0.9-1.9-1.7c-0.5-0.7-0.7-1.6-0.7-2.6S87.2,8.4,87.6,7.6z M90.4,12c0.4,0.4,1,0.6,1.8,0.6c0.7,0,1.3-0.2,1.7-0.6 + c0.4-0.4,0.6-1,0.6-1.8c0-0.8-0.2-1.3-0.6-1.7c-0.4-0.4-1-0.6-1.7-0.6s-1.3,0.2-1.8,0.6c-0.4,0.4-0.6,1-0.6,1.7 + C89.8,11,90,11.6,90.4,12z"/> +<path class="st0" d="M100.5,14.5c-0.6-0.4-1.1-1-1.4-1.7c-0.3-0.7-0.5-1.6-0.5-2.5s0.2-1.7,0.5-2.5c0.3-0.7,0.8-1.3,1.4-1.7 + c0.6-0.4,1.4-0.6,2.4-0.6s1.7,0.2,2.3,0.6c0.6,0.4,1,0.9,1.3,1.5V1.3h2.8v13.6h-2.8V13c-0.7,1.4-1.9,2.1-3.6,2.1 + C101.9,15.1,101.1,14.9,100.5,14.5L100.5,14.5z M102.1,12c0.4,0.4,1.1,0.6,1.9,0.6c0.8,0,1.4-0.2,1.9-0.6c0.5-0.4,0.7-1,0.7-1.8 + c0-0.8-0.2-1.3-0.7-1.8c-0.5-0.4-1.1-0.6-1.9-0.6c-0.8,0-1.4,0.2-1.9,0.6c-0.5,0.4-0.7,1-0.7,1.8S101.6,11.6,102.1,12z"/> +<path class="st0" d="M111.5,7.7c0.4-0.7,1-1.3,1.7-1.7c0.7-0.4,1.6-0.6,2.5-0.6c1.5,0,2.8,0.4,3.6,1.2c0.9,0.8,1.3,2,1.3,3.4v0.8h-7 + c0,0.7,0.3,1.2,0.6,1.6c0.4,0.4,0.9,0.6,1.5,0.6c0.6,0,1-0.1,1.4-0.4c0.4-0.2,0.6-0.6,0.7-1h2.8c-0.1,1-0.6,1.9-1.5,2.5 + c-0.8,0.6-2,1-3.3,1c-1,0-1.9-0.2-2.7-0.6c-0.7-0.4-1.3-1-1.7-1.7c-0.4-0.7-0.6-1.6-0.6-2.5S111.1,8.4,111.5,7.7L111.5,7.7z + M117.9,9.3c0-0.6-0.3-1-0.7-1.4c-0.4-0.3-0.9-0.5-1.5-0.5c-0.6,0-1.1,0.2-1.5,0.5c-0.4,0.3-0.6,0.8-0.6,1.4H117.9z"/> +<path class="st1" d="M9.3,7H4.8L3.4,9.6c-0.3,0.6-1,1-1.6,1h8.9h7.6l1.4-2.6c0.3-0.6,1-1,1.7-1c0,0,0,0-0.1,0L9.3,7L9.3,7z"/> +<path class="st2" d="M13.3,4.9L14.4,7h4.1l-1.9-3.7c-1-2-3.1-3.2-5.3-3.2H7.9C5.7,0,3.7,1.2,2.6,3.2L0.2,7.9c-0.5,0.9-0.1,2,0.8,2.4 + c0.3,0.1,0.6,0.2,0.8,0.2c0.7,0,1.3-0.4,1.6-1l2.4-4.7c0.4-0.8,1.2-1.3,2.1-1.3h3.3C12.1,3.6,12.9,4.1,13.3,4.9L13.3,4.9z"/> +<path class="st2" d="M22.1,7.2c-0.9-0.5-2-0.1-2.4,0.8l-2.4,4.7c-0.4,0.8-1.2,1.3-2.1,1.3h-3.3c-0.9,0-1.7-0.5-2.1-1.3l-1.1-2.1H4.6 + l1.9,3.7c1,2,3.1,3.2,5.3,3.2h3.3c2.2,0,4.3-1.2,5.3-3.2l2.4-4.7C23.3,8.7,23,7.6,22.1,7.2L22.1,7.2z"/> +</svg> diff --git a/public/assets/overview.png b/public/assets/overview.png new file mode 100644 index 0000000000000000000000000000000000000000..12653a6b6190db225317e60c2ba882bd872edd29 Binary files /dev/null and b/public/assets/overview.png differ diff --git a/public/assets/process-overview.svg b/public/assets/process-overview.svg deleted file mode 100644 index c2387016a8c06c21f4ba83bca74b873039b6d28b..0000000000000000000000000000000000000000 --- a/public/assets/process-overview.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="737" height="391" viewBox="0 0 737 391"><defs><clipPath id="b"><rect width="737" height="391"/></clipPath></defs><g id="a" clip-path="url(#b)"><rect width="737" height="391" fill="#fff"/><g transform="translate(78 34)" fill="#eeeff2" stroke="#b6bcc8" stroke-width="1"><rect width="262" height="103" rx="8" stroke="none"/><rect x="0.5" y="0.5" width="261" height="102" rx="7.5" fill="none"/></g><text transform="translate(106 62)" font-size="20" font-family="SF Pro" font-weight="700"><tspan x="0" y="19">OSS Project on </tspan><tspan x="0" y="43">Open CoDE</tspan></text><g transform="translate(78 187)" fill="#eeeff2" stroke="#b6bcc8" stroke-width="1"><rect width="262" height="171" rx="8" stroke="none"/><rect x="0.5" y="0.5" width="261" height="170" rx="7.5" fill="none"/></g><text transform="translate(106 206)" font-size="20" font-family="SF Pro" font-weight="700"><tspan x="0" y="19">Open CoDE </tspan><tspan x="0" y="43">Software directory</tspan></text><g transform="translate(106 270)" fill="#fff" stroke="#b6bcc8" stroke-width="1"><rect width="206" height="63" rx="8" stroke="none"/><rect x="0.5" y="0.5" width="205" height="62" rx="7.5" fill="none"/></g><text transform="translate(134 290)" font-size="20" font-family="SF Pro" font-weight="700"><tspan x="0" y="19">Project Listing</tspan></text><g transform="translate(414 34)" fill="#eeeff2" stroke="#b6bcc8" stroke-width="1"><rect width="306" height="103" rx="8" stroke="none"/><rect x="0.5" y="0.5" width="305" height="102" rx="7.5" fill="none"/></g><text transform="translate(442 74)" font-size="20" font-family="SF Pro" font-weight="700"><tspan x="0" y="19">Badge API</tspan></text><line x1="32" transform="translate(46.5 85.5)" fill="none" stroke="#203257" stroke-width="1"/><line y1="217" transform="translate(46.5 85.5)" fill="none" stroke="#203257" stroke-width="1"/><line x2="54" transform="translate(46.5 302.5)" fill="none" stroke="#203257" stroke-width="1"/><g transform="translate(106 299) rotate(90)" fill="#203257"><path d="M 6.129478454589844 5.5 L 0.8705216646194458 5.5 L 3.5 0.9923228621482849 L 6.129478454589844 5.5 Z" stroke="none"/><path d="M 3.5 1.984635829925537 L 1.741037368774414 5 L 5.258962631225586 5 L 3.5 1.984635829925537 M 3.5 0 L 7 6 L 0 6 L 3.5 0 Z" stroke="none" fill="#203257"/></g><text transform="translate(32 194.5) rotate(-90)" fill="#203257" font-size="16" font-family="SF Pro" font-weight="500"><tspan x="-87.293" y="0">Is listed in (public.yaml)</tspan></text><line x1="71" transform="translate(343.5 85.5)" fill="none" stroke="#203257" stroke-width="1"/><g transform="translate(340 89) rotate(-90)" fill="#203257"><path d="M 6.129478454589844 5.5 L 0.8705216646194458 5.5 L 3.5 0.9923228621482849 L 6.129478454589844 5.5 Z" stroke="none"/><path d="M 3.5 1.984635829925537 L 1.741037368774414 5 L 5.258962631225586 5 L 3.5 1.984635829925537 M 3.5 0 L 7 6 L 0 6 L 3.5 0 Z" stroke="none" fill="#203257"/></g><line y2="164" transform="translate(567.5 137.5)" fill="none" stroke="#203257" stroke-width="1"/><line x2="253" transform="translate(314.5 301.5)" fill="none" stroke="#203257" stroke-width="1"/><g transform="translate(312 305) rotate(-90)" fill="#203257"><path d="M 6.129478454589844 5.5 L 0.8705216646194458 5.5 L 3.5 0.9923228621482849 L 6.129478454589844 5.5 Z" stroke="none"/><path d="M 3.5 1.984635829925537 L 1.741037368774414 5 L 5.258962631225586 5 L 3.5 1.984635829925537 M 3.5 0 L 7 6 L 0 6 L 3.5 0 Z" stroke="none" fill="#203257"/></g><text transform="translate(555 231)" fill="#203257" font-size="16" font-family="SF Pro" font-weight="500"><tspan x="-51.386" y="0">Issues </tspan><tspan x="-116.661" y="19">“Maintenanceâ€, </tspan><tspan x="-96.179" y="38">“Security†& </tspan><tspan x="-120.798" y="57">“Reuse†Badges</tspan></text><text transform="translate(350 72)" fill="#203257" font-size="16" font-family="SF Pro" font-weight="500"><tspan x="0" y="0">Scans</tspan></text></g></svg> \ No newline at end of file diff --git a/public/assets/zendis-logo.svg b/public/assets/zendis-logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..9588c7782ed9397fb9c59af1fd15d790871dbdb6 --- /dev/null +++ b/public/assets/zendis-logo.svg @@ -0,0 +1 @@ +<svg xmlns:xlink="http://www.w3.org/1999/xlink" data-v-65e17373="" xmlns="http://www.w3.org/2000/svg" id="Logo" version="1.1" viewBox="0 0 47.023 45.786" aria-hidden="true" focusable="false" class="icon pr-5" icon="true" style="height: 140px;" width="164" height="140" ><defs><style>.cls-1{fill:#000;stroke-width:0}</style></defs><path d="M26.44.357C10.426-2.566-3.322 12.988.71 28.177c4.287 16.143 29.847 24.147 41.824 11.07 5.72-6.246 5.639-16.4 1.643-24.116C40.455 7.942 34.781 1.88 26.441.357" style="" fill="#00E6CC" stroke-width="0px"></path><path d="m12.485 17.664 7.02-3.666-1.078-.013h-5.942v-1.82h7.62v3.679l-7.009 3.653h7.008v1.833h-7.619zM24.33 14.648c2.183 0 3.484 1.222 3.484 3.276v.546H22.9c.066.923.599 1.495 1.509 1.495.793 0 1.312-.35 1.456-.949h1.963c-.195 1.404-1.39 2.444-3.406 2.444-2.198 0-3.51-1.417-3.51-3.445 0-2.119 1.417-3.367 3.419-3.367m1.56 2.756c-.065-.845-.664-1.3-1.521-1.3-.832 0-1.404.455-1.483 1.3zM28.902 14.778h1.977v1.586c.325-1.001 1.209-1.716 2.626-1.716 1.65 0 2.652 1.105 2.652 3.107v3.575h-1.99v-3.289c0-1.209-.364-1.664-1.377-1.664-1.17 0-1.911.663-1.911 2.496v2.457h-1.977zM12.535 24.209h3.367c2.457 0 5.005.637 5.005 4.576 0 3.952-2.548 4.59-5.005 4.59h-3.367zm3.367 7.332c1.586 0 2.912-.09 2.912-2.756s-1.339-2.756-2.912-2.756h-1.287v5.512zM21.878 31.645h1.833v-3.094h-1.56v-1.73h2.327c.663 0 1.053.326 1.053 1.015v3.81h1.846v1.728h-5.5zm2.587-7.644c.728 0 1.248.377 1.248 1.066 0 .702-.52 1.053-1.248 1.053s-1.21-.351-1.21-1.053c0-.689.482-1.066 1.21-1.066M32.53 33.543c-3.133 0-4.51-1.352-4.51-3.705h2.144c0 1.391.638 1.963 2.418 1.963 1.262 0 1.794-.299 1.794-.975 0-.416-.3-.728-.948-.897l-2.952-.78c-1.548-.403-2.067-1.313-2.067-2.457 0-1.729 1.287-2.652 3.614-2.652 2.782 0 4.173 1.313 4.173 3.289h-2.144c0-1.092-.638-1.573-2.002-1.573-.976 0-1.496.273-1.496.897 0 .351.208.624.87.806l2.887.715c1.495.377 2.21 1.248 2.21 2.561 0 1.716-1.157 2.808-3.991 2.808" class="cls-1" stroke-width="0px"></path></svg> \ No newline at end of file diff --git a/public/assets/zendis.png b/public/assets/zendis.png new file mode 100644 index 0000000000000000000000000000000000000000..4887e06d2dd4f4fb87d2ef4fb71fc4559bbd20d8 Binary files /dev/null and b/public/assets/zendis.png differ diff --git a/public/badge-api-icon.png b/public/badge-api-icon.png deleted file mode 100644 index 77a772a3e897c56f214a4945bc1ce762457e6228..0000000000000000000000000000000000000000 Binary files a/public/badge-api-icon.png and /dev/null differ diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx new file mode 100644 index 0000000000000000000000000000000000000000..e3011265726e02b82503f7e36f10f5e8e765f86e --- /dev/null +++ b/src/components/Footer.tsx @@ -0,0 +1,253 @@ +/* Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH. +SPDX-License-Identifier: MIT */ + +const navigation = { + officialBadges: [ + { + name: 'Maintained Badge', + href: '/concepts/official-badges/active-maintained-badge', + external: false, + }, + { + name: 'Reuse Badge', + href: '/concepts/official-badges/reuse-badge', + external: false, + }, + { + name: 'Open Source Badge', + href: '/concepts/official-badges/open-source-badge', + external: false, + }, + { + name: 'Security Badge', + href: '/concepts/official-badges/security-badge', + external: false, + }, + ], + community: [ + { + name: 'Project on openCode', + href: 'https://gitlab.opencode.de/open-code/badgebackend', + external: true, + }, + { + name: 'Contribute', + href: 'https://gitlab.opencode.de/open-code/badgebackend/badge-api/-/blob/main/CONTRIBUTING.md', + external: true, + }, + { + name: 'Open issue', + href: 'https://gitlab.opencode.de/open-code/badgebackend/badge-api/-/issues/new', + external: true, + }, + ], + legal: [ + { + name: 'Imprint', + href: 'https://opencode.de/de/impressum', + external: true, + }, + { + name: 'Privacy policy', + href: 'https://opencode.de/de/datenschutz', + external: true, + }, + { + name: 'License', + href: 'https://gitlab.opencode.de/open-code/badgebackend/badge-api/-/blob/main/LICENSE', + external: true, + }, + ], + accessibility: [ + { + name: 'Declaration on Accessibility', + href: '/declaration-on-accessibility', + external: false, + }, + { + name: 'Barriere melden', + href: 'mailto:info@opencode.de', + external: false, + }, + ], +} + +export default function Footer() { + return ( + <div className="mx-auto max-w-7xl px-6 pb-8 pt-16 sm:pt-24 lg:px-8"> + <div className="xl:grid xl:grid-cols-3 xl:gap-8"> + <div className="space-y-8"> + <a + href="https://opencode.de/" + target="_blank" + rel="noopener noreferrer" + > + <img + alt="openCode Logo" + src="/assets/opencode-logo.svg" + className="h-8" + /> + </a> + <p className="text-balance text-sm/6 text-gray-600"> + The Badge Programm is an{' '} + <a + href="https://opencode.de/" + target="_blank" + rel="noopener noreferrer" + className="text-blue-500 hover:text-blue-600" + > + openCode + </a>{' '} + service by{' '} + <a + href="https://zendis.de/" + target="_blank" + rel="noopener noreferrer" + className="text-blue-500 hover:text-blue-600" + > + ZenDiS + </a>{' '} + maintained by{' '} + <a + href="https://l3montree.com" + target="_blank" + rel="noopener noreferrer" + className="text-blue-500 hover:text-blue-600" + > + L3montree + </a> + . + </p> + <div className="flex items-center gap-x-8"> + <a + href="https://zendis.de/" + target="_blank" + rel="noopener noreferrer" + > + <img + alt="Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) Logo" + src="/assets/zendis.png" + className="h-9" + /> + </a> + <a + href="https://l3montree.com" + target="_blank" + rel="noopener noreferrer" + > + <img + alt="L3montree Cybersecurity Logo" + src="/assets/l3montree-logo.svg" + className="h-7" + /> + </a> + </div> + </div> + <div className="mt-16 grid grid-cols-2 gap-8 xl:col-span-2 xl:mt-0"> + <div className="md:grid md:grid-cols-2 md:gap-8"> + <div> + <h3 className="text-sm/6 font-semibold text-gray-900"> + Official Badges + </h3> + <ul role="list" className="mt-6 space-y-4"> + {navigation.officialBadges.map((item) => ( + <li key={item.name}> + <a + href={item.href} + target={ + item.external + ? '_blank' + : '_self' + } + rel="noopener noreferrer" + className="text-sm/6 text-gray-600 hover:text-gray-900" + > + {item.name} + </a> + </li> + ))} + </ul> + </div> + <div className="mt-10 md:mt-0"> + <h3 className="text-sm/6 font-semibold text-gray-900"> + Community + </h3> + <ul role="list" className="mt-6 space-y-4"> + {navigation.community.map((item) => ( + <li key={item.name}> + <a + href={item.href} + target={ + item.external + ? '_blank' + : '_self' + } + rel="noopener noreferrer" + className="text-sm/6 text-gray-600 hover:text-gray-900" + > + {item.name} + </a> + </li> + ))} + </ul> + </div> + </div> + <div className="md:grid md:grid-cols-2 md:gap-8"> + <div> + <h3 className="text-sm/6 font-semibold text-gray-900"> + Legal + </h3> + <ul role="list" className="mt-6 space-y-4"> + {navigation.legal.map((item) => ( + <li key={item.name}> + <a + href={item.href} + target={ + item.external + ? '_blank' + : '_self' + } + rel="noopener noreferrer" + className="text-sm/6 text-gray-600 hover:text-gray-900" + > + {item.name} + </a> + </li> + ))} + </ul> + </div> + <div className="mt-10 md:mt-0"> + <h3 className="text-sm/6 font-semibold text-gray-900"> + Accessibility + </h3> + <ul role="list" className="mt-6 space-y-4"> + {navigation.accessibility.map((item) => ( + <li key={item.name}> + <a + href={item.href} + target={ + item.external + ? '_blank' + : '_self' + } + rel="noopener noreferrer" + className="text-sm/6 text-gray-600 hover:text-gray-900" + > + {item.name} + </a> + </li> + ))} + </ul> + </div> + </div> + </div> + </div> + <div className="mt-16 border-t border-gray-900/10 pt-8 sm:mt-20 lg:mt-24"> + <p className="text-sm/6 text-gray-600"> + © {new Date().getFullYear()} Zentrum für Digitale + Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH + </p> + </div> + </div> + ) +} diff --git a/src/components/Header.tsx b/src/components/Header.tsx deleted file mode 100644 index 4ea02d0ed2cea250b5a47d91d3c29f81ce633add..0000000000000000000000000000000000000000 --- a/src/components/Header.tsx +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH. -// SPDX-License-Identifier: MIT - -import React from 'react' - -const Header = () => { - return ( - <header className="flex flex-row items-center border-b px-4 py-3 font-space-grotesk text-2xl font-bold"> - <div className="container mx-auto"> - <img - src="badge-api-icon.png" - className="mr-2 inline-block w-12" - alt="React logo" - /> - <span className="relative top-0.5">Badge-API</span> - </div> - </header> - ) -} - -export default Header diff --git a/src/components/landing-page/Hero.tsx b/src/components/landing-page/Hero.tsx index a79b79c802bee1432a9ba9020bccd889df1600bf..85ae56d6fcb19c67f9779ffe157a5ada925e6f60 100644 --- a/src/components/landing-page/Hero.tsx +++ b/src/components/landing-page/Hero.tsx @@ -62,10 +62,8 @@ export default function Hero() { Source Software stärken </h1> <p className="mt-8 text-pretty text-lg font-medium text-zinc-600 sm:max-w-md sm:text-xl/8 lg:max-w-none"> - Die Badge-API ist ein Dienst im Rahmen - des Badge Programms, der openCode - Repositories prüft und Badges vergibt, - die im{' '} + Das Badge Programm prüft openCode + Repositories und vergibt Badges, die im{' '} <a target="_blank" rel="noreferrer noopener" @@ -75,7 +73,7 @@ export default function Hero() { openCode Softwarekatalog </a>{' '} angezeigt werden und den Status der - Repositorys in Bezug auf Sicherheit, + Repositories in Bezug auf Sicherheit, Wartung und Wiederverwendung anzeigen. </p> <div className="mt-10 flex items-center gap-x-6"> diff --git a/src/pages/_meta.ts b/src/pages/_meta.ts index 73a4de7fc2fac6ec3573e7e3fc9f5c7fb4341d20..62aa662955ee3fc35e3257fc799c36b45888cfb9 100644 --- a/src/pages/_meta.ts +++ b/src/pages/_meta.ts @@ -1,6 +1,8 @@ // Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH. // SPDX-License-Identifier: MIT +import { title } from 'process' + export default { index: { theme: { @@ -15,8 +17,14 @@ export default { display: 'hidden', }, introduction: { title: 'Introduction' }, + 'official-badges': { title: 'Official Badges 🛡ï¸' }, concepts: { title: 'Concepts' }, 'api-docs': { title: 'API' }, + docs: { + title: 'Documentation (EN)', + type: 'page', + href: '/introduction', + }, 'live-demo': { title: 'Zur Live Demo 🚀', type: 'page', diff --git a/src/pages/api-docs/v1/sarif-per-repo-endpoint.mdx b/src/pages/api-docs/v1/sarif-per-repo-endpoint.mdx index f033358d2710dfd331911e80da75c6ac855ba7a6..dc137c8e8feffa898db773ffb11981d32e5974d9 100644 --- a/src/pages/api-docs/v1/sarif-per-repo-endpoint.mdx +++ b/src/pages/api-docs/v1/sarif-per-repo-endpoint.mdx @@ -263,7 +263,7 @@ The result is returned in [SARIF format](https://docs.github.com/en/code-securit "badgeExplanation": { "criteria": [ { - "description": "Provides a badge for projects that are open-source. This badge is granted manually by the Open-Code team. (The current value is 1)", + "description": "Provides a badge for projects that are open-source. This badge is granted manually by the openCode team. (The current value is 1)", "value": "1", "status": "pass", "ruleId": "MANUAL/Project is open source", @@ -426,7 +426,7 @@ The result is returned in [SARIF format](https://docs.github.com/en/code-securit }, { "kind": "pass", - "message": "Provides a badge for projects that are open-source. This badge is granted manually by the Open-Code team. (The current value is 1)", + "message": "Provides a badge for projects that are open-source. This badge is granted manually by the openCode team. (The current value is 1)", "properties": { "badgeId": "OPEN-SOURCE", "badgeLevel": "GOLD", @@ -550,7 +550,7 @@ The result is returned in [SARIF format](https://docs.github.com/en/code-securit "id": "MANUAL/Project is open source", "name": "Project is open source", "fullDescription": { - "text": "Provides a badge for projects that are open-source. This badge is granted manually by the Open-Code team." + "text": "Provides a badge for projects that are open-source. This badge is granted manually by the openCode team." }, "help": { "text": "This is a manual check" diff --git a/src/pages/concepts/_meta.ts b/src/pages/concepts/_meta.ts index 4e8a303aba9bb6254ba006679d19303a46275fe5..5be376e445af66a7944b37350294e202b7022899 100644 --- a/src/pages/concepts/_meta.ts +++ b/src/pages/concepts/_meta.ts @@ -4,6 +4,5 @@ export default { index: { title: 'Overview' }, configuration: { title: 'Configuration' }, - 'official-badges': { title: 'Official Badges 🛡ï¸' }, 'implemented-checks': { title: 'Implemented Checks' }, } diff --git a/src/pages/concepts/configuration/index.mdx b/src/pages/concepts/configuration/index.mdx index 98e1a5422faf6eef6f3db9f6f8446686058b28e6..c47ac412cc719742dd3839653c25da59b93dde0b 100644 --- a/src/pages/concepts/configuration/index.mdx +++ b/src/pages/concepts/configuration/index.mdx @@ -145,7 +145,7 @@ badges: checks: - type: MANUAL decisionJsonUrl: https://gitlab.opencode.de/open-code/badgebackend/manual-badges/-/raw/main/badges/open-source.json - description: Checks if a project is open source. This check is decided manually by the Open-Code team. + description: Checks if a project is open source. This check is decided manually by the openCode team. ``` In this case, the decisionJsonUrl points to a file (open-source.json) that contains the rules or decision criteria for determining if a project is open source. The file is hosted on a GitLab server, and the Badge API will refresh it every 5 minutes. diff --git a/src/pages/concepts/implemented-checks/bus-factor.mdx b/src/pages/concepts/implemented-checks/bus-factor.mdx new file mode 100644 index 0000000000000000000000000000000000000000..3a06a54c6ab87562261a770e30c22ccef69909c7 --- /dev/null +++ b/src/pages/concepts/implemented-checks/bus-factor.mdx @@ -0,0 +1,32 @@ +{/* Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH. +SPDX-License-Identifier: MIT */} + +import { Callout } from 'nextra/components' + +# Bus Factor + +<Callout type="default"> + Check type: `BUS_FACTOR` +</Callout> + +This check calculates the bus factor of a project for a given time range. +The check passes if the bus factor is greater than or equal to the minimum threshold. + +```yaml filename=".badge-api.yaml" copy +- type: BUS_FACTOR + description: Checks if multiple maintainers are working on the project. + threshold: + timeRangeInMonths: 6 + min: 2 +``` + +### Background + +The bus factor is a measure of the risk resulting from information and capabilities not being shared among team members. + +Imagine there is a pretty precise bus that unfortunately hits always exactly one person. The bus factor is the number of people +that need to be hit by the bus until half of the projects commits have no living producer anymore. The higher the bus factor, +the lower the risk of the project failing due to the loss of a single person. + +For example if a project has a bus factor of 2, it means that the 2 most important contributors are responsible for 50% of the commits +and after both are gone, the project would be in danger. \ No newline at end of file diff --git a/src/pages/concepts/implemented-checks/elephant-factor.mdx b/src/pages/concepts/implemented-checks/elephant-factor.mdx new file mode 100644 index 0000000000000000000000000000000000000000..b21219db7f9fa5b4c19e5d101b993b0ee4519e19 --- /dev/null +++ b/src/pages/concepts/implemented-checks/elephant-factor.mdx @@ -0,0 +1,31 @@ +{/* Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH. +SPDX-License-Identifier: MIT */} + +import { Callout } from 'nextra/components' + +# Elephant Factor + +<Callout type="default"> + Check type: `ELEPHANT_FACTOR` +</Callout> + +This check calculates the elephant factor of a project for a given time range. +The check passes if the elephant factor is greater than or equal to the minimum threshold. + +```yaml filename=".badge-api.yaml" copy +- type: ELEPHANT_FACTOR + description: Checks if multiple companies are working on the project. + threshold: + timeRangeInMonths: 6 + min: 2 +``` + +### Background + +The elephant factor is a measure of the risk resulting from information and capabilities not being shared among organizations. + +It is similar to the [bus factor](/concepts/implemented-checks/bus-factor) but instead of measuring the risk of losing individuals, +it measures the risk of losing organizations. + +For example, if a project has an elephant factor of 2, it means that the 2 most important organizations are responsible for 50% of the commits +and after both are gone, the project would be in danger. \ No newline at end of file diff --git a/src/pages/concepts/implemented-checks/index.mdx b/src/pages/concepts/implemented-checks/index.mdx index 9b0e4b1cc94812c8d8262baa846794f850906184..5af1d653b80750df92e07a1b9c501a7f8a7019ff 100644 --- a/src/pages/concepts/implemented-checks/index.mdx +++ b/src/pages/concepts/implemented-checks/index.mdx @@ -5,8 +5,12 @@ SPDX-License-Identifier: MIT */} The following checks are implemented and can be used to generate badges: +- [`BUS_FACTOR` ↗](/concepts/implemented-checks/bus-factor) - [`CI_PIPELINE` ↗](/concepts/implemented-checks/ci-pipeline) - [`COMMITS` ↗](/concepts/implemented-checks/commits) +- [`ELEPHANT_FACTOR` ↗](/concepts/implemented-checks/elephant-factor) - [`ISSUE_REACTION_TIME` ↗](/concepts/implemented-checks/issue-reaction-time) - [`PACKAGES` ↗](/concepts/implemented-checks/packages) -- [`RELEASES` ↗](/concepts/implemented-checks/releases) \ No newline at end of file +- [`PROTECTED_BRANCHES` ↗](/concepts/implemented-checks/protected-branches) +- [`RELEASES` ↗](/concepts/implemented-checks/releases) +- [`SUBSEQUENT_USE` ↗](/concepts/implemented-checks/subsequent-use) \ No newline at end of file diff --git a/src/pages/concepts/implemented-checks/protected-branches.mdx b/src/pages/concepts/implemented-checks/protected-branches.mdx new file mode 100644 index 0000000000000000000000000000000000000000..64e92306ff106ca182cf554c79dd0dcc8413ced4 --- /dev/null +++ b/src/pages/concepts/implemented-checks/protected-branches.mdx @@ -0,0 +1,35 @@ +{/* Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH. +SPDX-License-Identifier: MIT */} + +import { Callout } from 'nextra/components' + +# Protected Branches + +<Callout type="default"> + Check type: `PROTECTED_BRANCHES` +</Callout> + +This check verifies if the main branch is protected and if force push is disabled for default branches. +The check passes if the main branch is protected and force push is disabled for default branches and +the minimum permission level for access to the main and default branch is greater than or equal to the minimum threshold. + +```yaml filename=".badge-api.yaml" copy +- type: PROTECTED_BRANCHES + description: Checks if main branch is protected and if force push is disabled for default branches + threshold: + min: 40 # 0: no access; 30: Developer access; 40: Maintainer access; 60: Admin access +``` + +### Background + +Protected branches are an important feature of Git repositories that help maintain the integrity of the codebase. +By protecting branches, you can prevent accidental changes, enforce code review policies, and ensure that only +authorized users can change the codebase. + +The main branch is often the default branch in a repository and serves as the primary +branch for the project. Protecting the main branch ensures that only authorized users can push changes to it, +reducing the risk of accidental changes or unauthorized modifications. + +Force push is a Git operation that allows you to overwrite the history of a branch, potentially losing commits +and making it difficult to track changes. Disabling force push for default branches helps maintain the integrity +of the commit history and ensures that changes are tracked accurately. \ No newline at end of file diff --git a/src/pages/concepts/implemented-checks/subsequent-use.mdx b/src/pages/concepts/implemented-checks/subsequent-use.mdx new file mode 100644 index 0000000000000000000000000000000000000000..8ddac1f9ac37c0872eeae851e1a4378fa6c6fa57 --- /dev/null +++ b/src/pages/concepts/implemented-checks/subsequent-use.mdx @@ -0,0 +1,32 @@ +{/* Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH. +SPDX-License-Identifier: MIT */} + +import { Callout } from 'nextra/components' + +# Subsequent Use + +<Callout type="default"> + Check type: `SUBSEQUENT_USE` +</Callout> + +This check fetches the number of organizations that reported using the project in production. +The check passes if the number of using organizations is greater than or equal to the minimum threshold. + +```yaml filename=".badge-api.yaml" copy +- type: SUBSEQUENT_USE + description: Check if at least 10 organizations are using it in production + threshold: + min: 10 +``` + +### Background + +The subsequent use check is a measure of the project's adoption in the community. + +Organizations can report to the openCode team that they are using a project in production. +In addition, the openCode team records subsequent use cases if a case becomes known in the +context of projects, collaborations or similar that has not yet been recorded. + +The more organizations use a project, the more likely it is that the project is stable, +well-documented, and has a good reputation. This is an important indicator for the +sustainability and quality of a project. \ No newline at end of file diff --git a/src/pages/concepts/index.mdx b/src/pages/concepts/index.mdx index bbaca17db20c94e82a40b8719e30a1c604040964..b6910fa1fbfdf3d432c3b62e2a435fb6eb1ee38d 100644 --- a/src/pages/concepts/index.mdx +++ b/src/pages/concepts/index.mdx @@ -7,7 +7,9 @@ SPDX-License-Identifier: MIT */} # Overview -<div className="flex justify-center"><img src="/assets/process-overview.svg" className="h-96"/></div> +<div className="flex justify-center py-8"> + <img src="/assets/overview.png" className="h-auto lg:h-[30rem]" alt="Schematische Darstellung der Architektur des Badge API"/> +</div> ### Fundamentals @@ -15,21 +17,10 @@ The Badge API is a service scanning repositories for specific criteria and gener The badges are displayed in the openCode software catalog and indicate the status of the repository in terms of **security**, **maintenance**, and **reuse**. -Each badge is based on a set of criteria that the repository must meet to receive the badge. Actively -The criteria are divided into three levels: **Bronze**, **Silver**, and **Gold**, respectively -**Ready for Reuse** and **Actively Reused** for the reuse badge. -The higher the level, the more criteria the repository must meet. +Each badge is based on a set of criteria that the repository must meet to receive the badge. The Badges and the criteria to +meet are defined in the [configuration](/concepts/configuration) section. All criteria are evaluated bluntly like a checklist and must therefore lead to a true or false result. As a result, some checks are evaluated based on thresholds (e.g. the issue reaction time). To determine the thresholds, we examine the usual values of the projects on openCode and derive -the corresponding thresholds from their mean values and standard deviations. - -Many checks are evaluated relative to a timeframe. Unless explicitly stated "timeframe" refers to now - 30 days. - -### Explanation - -We encourage that you integrate the [badge explanation endpoint](/api-docs/v1/badges#get-badge-explanation) -into your application to provide a detailed explanation of the badge result to your users. - -A typical use case is to make the badge clickable and show the explanation on a detail page. \ No newline at end of file +the corresponding thresholds from their mean values and standard deviations. \ No newline at end of file diff --git a/src/pages/concepts/official-badges/active-maintained-badge.mdx b/src/pages/concepts/official-badges/active-maintained-badge.mdx deleted file mode 100644 index 971d9f05b90e1e3d63ac6c9153d0d19f6bd256fe..0000000000000000000000000000000000000000 --- a/src/pages/concepts/official-badges/active-maintained-badge.mdx +++ /dev/null @@ -1,37 +0,0 @@ ---- -sidebar_position: 2 ---- - -{/* Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH. -SPDX-License-Identifier: MIT */} - -import { Callout } from 'nextra/components' - -# Active Maintained Badge - -<Callout type="info"> -**Status: In development** -</Callout> - - -<div className="flex gap-4 justify-center mt-8"> -<img src="/assets/badges/MAINTAINED-1.svg" className="h-48"/> -<img src="/assets/badges/MAINTAINED-2.svg" className="h-48"/> -<img src="/assets/badges/MAINTAINED-3.svg" className="h-48"/> -</div> - -The active maintained badge is a badge that indicates the maintenance status of a repository. -The badge is based on the following criteria: - -### Bronze -- Number of commits: A minimum of 5 commits within the last 6 months - -### Silver -- All criteria from bronze -- Issue reaction time: There are reactions on issues within 7 days in a timeframe of the last 3 months - -### Gold -- All criteria from silver -- Releases: There was at least one release or tag created within the last 6 months -- Elephant Factor: TBD -- Bus Factor: TBD \ No newline at end of file diff --git a/src/pages/concepts/official-badges/reuse-badge.mdx b/src/pages/concepts/official-badges/reuse-badge.mdx deleted file mode 100644 index c6c3ac11f25edea4ab6bf0a63813e07263d03006..0000000000000000000000000000000000000000 --- a/src/pages/concepts/official-badges/reuse-badge.mdx +++ /dev/null @@ -1,32 +0,0 @@ ---- -sidebar_position: 4 ---- - -{/* Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH. -SPDX-License-Identifier: MIT */} - -import { Callout } from 'nextra/components' - -# Reuse Badge - -<Callout type="info"> -**Status: In development** -</Callout> - -<div className="flex justify-center gap-4 mt-8"> -<img src="/assets/badges/REUSED-1.svg" className="h-48"/> -<img src="/assets/badges/REUSED-2.svg" className="h-48"/> -<img src="/assets/badges/REUSED-3.svg" className="h-48"/> -</div> - -The reuse badge is a badge that indicates the reuse status of a repository. -The badge is based on the following criteria: - -### Ready for reuse (bronze) - -- Packages: There was at least one package/ container published in the projects package/ container registry within the last 6 months -- CI-Pipelines: There has been at least one CI-Pipeline within the last 6 months - -### Actively reused - -- Proof of reuse submitted: TBD diff --git a/src/pages/concepts/official-badges/security-badge.mdx b/src/pages/concepts/official-badges/security-badge.mdx deleted file mode 100644 index b04cbb46f5d3ce44af7758a01fee872023492d7d..0000000000000000000000000000000000000000 --- a/src/pages/concepts/official-badges/security-badge.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -sidebar_position: 3 ---- - -{/* Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH. -SPDX-License-Identifier: MIT */} - -import { Callout } from 'nextra/components' - -# Security Badge - -<Callout type="warning"> -**Status: In development** -</Callout> - -<div className="flex justify-center gap-4 mt-8"> -<img src="/assets/badges/SECURITY-1.svg" className="h-48"/> -<img src="/assets/badges/SECURITY-2.svg" className="h-48"/> -<img src="/assets/badges/SECURITY-3.svg" className="h-48"/> -</div> - -The active maintained badge is a badge that indicates the security status of a repository. -The badge is based on the following criteria: - -### Bronze -- Bug-Report process in place: -- Issue reaction time: TBD -- Branch protection: TBD -- Vulnerability checks - CVE Age: TBD -- Vulnerability checks - Remediation time: TBD - -### Silver -- All criteria from bronze -- Security Policy (SECURITY.md): TBD -- No release with known vulnerabilities: TBD - -### Gold -- All criteria from silver -- Signed Releases: TBD -- Code-Review process in place: TBD \ No newline at end of file diff --git a/src/pages/introduction.mdx b/src/pages/introduction.mdx index bab0b17c75bf8a0da96b75ba41bd97f6ff074c11..d64a17d870dde4e6422856839342139a0e66a58b 100644 --- a/src/pages/introduction.mdx +++ b/src/pages/introduction.mdx @@ -6,10 +6,10 @@ title: Introduction {/* Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH. SPDX-License-Identifier: MIT */} -# Badge API +# Badge Programm -The Badge API is a service scanning repositories for specific criteria and generating badges based on the results. -The badges are displayed in the [openCode software catalog](https://opencode.de/en/software) and indicate +The Badge Programm checks openCode repositories and granting badges which are displayed in the +[openCode software catalog](https://opencode.de/en/software) and indicate the status of the repository in terms of **security**, **maintenance**, and **reuse**. You can interact with the Badge API by submitting a repository URL and receiving a badge based on the criteria that the repository meets. The API will @@ -17,10 +17,18 @@ provide you a detailed explanation of the result too. ## Official Badges on openCode -Learn about the different types of badges that are available on openCode and what they mean in the [concepts section](/concepts). +Learn about the different types of badges that are available on openCode and what they mean in the [Official Badges 🛡ï¸](/official-badges) section. + +## Learn more + +Learn more about the ideas behind the Badge Programm, implemented checks, etc. in the [Concepts](/concepts) section. ## Getting started +### Try it out + +You can try out the Badge API by using the [API Live Demo](/#api-small-demo). + ### Use the API To use the Badge RESTful API, you can submit a repository URL to the API and receive badges based on the criteria that the repository meets. @@ -28,7 +36,15 @@ See all available endpoints and how to use them in the [API documentation](/api- ### Host the Badge API yourself -You can host the Badge API yourself. We provide a Helm chart to deploy the Badge API on a Kubernetes cluster ⎈. -Alternatively, you can run the API locally as container or bare metal. Learn more about how to deploy the Badge API in the [deployment guide](/deployment). +You can host the Badge API yourself. We provide a [Helm chart to deploy the Badge API](https://gitlab.opencode.de/open-code/badgebackend/badge-api-helm-chart) on a Kubernetes cluster ⎈. +Alternatively, you can run the API locally as container or bare metal. + +### Contribute to the Badge API + +We are happy to receive contributions to the Badge API. You can find the source code on [openCode](https://gitlab.opencode.de/open-code/badgebackend/badge-api). +We welcome you to follow the [contribution guidelines](https://gitlab.opencode.de/open-code/badgebackend/badge-api/-/blob/main/CONTRIBUTING.md). +Do not hesitate to open an issue if you have any questions or need help. + +## License -### Contribute to the Badge API \ No newline at end of file +This project is licensed under the MIT License. \ No newline at end of file diff --git a/src/pages/concepts/official-badges/_meta.ts b/src/pages/official-badges/_meta.ts similarity index 67% rename from src/pages/concepts/official-badges/_meta.ts rename to src/pages/official-badges/_meta.ts index ed3eacb95a90cc08454f193e0032ab29f0b91ccd..5cbbb77cb2eff6391860588d4a4022bfde0fff11 100644 --- a/src/pages/concepts/official-badges/_meta.ts +++ b/src/pages/official-badges/_meta.ts @@ -2,7 +2,8 @@ // SPDX-License-Identifier: MIT export default { - 'active-maintained-badge': { title: 'Active Maintained Badge' }, - 'security-badge': { title: 'Security Badge' }, + 'active-maintained-badge': { title: 'Maintained Badge' }, 'reuse-badge': { title: 'Reuse Badge' }, + 'open-source-badge': { title: 'Open Source Badge' }, + 'security-badge': { title: 'Security Badge' }, } diff --git a/src/pages/official-badges/active-maintained-badge.mdx b/src/pages/official-badges/active-maintained-badge.mdx new file mode 100644 index 0000000000000000000000000000000000000000..403df6b2014175fdf9c3ea46c740694cd660d5f5 --- /dev/null +++ b/src/pages/official-badges/active-maintained-badge.mdx @@ -0,0 +1,41 @@ +{/* Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH. +SPDX-License-Identifier: MIT */} + +import { Callout } from 'nextra/components' + +# Maintained Badge + +<Callout type="info" emoji="🛡ï¸"> +**Official Badge in the openCode Software Catalogue** +</Callout> + + +<div className="grid grid-cols-none lg:grid-cols-3 gap-4 mt-8 justify-center"> + <img src="/assets/badges/MAINTAINED-1.svg" className="h-36 lg:h-48"/> + <img src="/assets/badges/MAINTAINED-2.svg" className="h-36 lg:h-48"/> + <img src="/assets/badges/MAINTAINED-3.svg" className="h-36 lg:h-48"/> +</div> + +The active maintained badge is a badge that indicates the maintenance status of a repository. +The badge is based on the following criteria: + +### Level 1: Active Maintenance (Bronze) + +The project meets the minimum requirements for a maintained project. It is being further developed and problems are responded to quickly. + +- [Commits](/concepts/implemented-checks/commits): A minimum of 5 commits within the last 6 months +- [Issue Reaction Time](/concepts/implemented-checks/issue-reaction-time): The average reaction time to issues is less than 7 days for issues created within the last 3 months + +### Level 2: Reliable maintenance (Silver) + +The project fulfills the requirements for a reliably maintained project. New versions are released regularly, problems are responded to quickly, and there is an active community. + +- All criteria from level 1 +- [Releases](/concepts/implemented-checks/releases): There was at least one release or tag created within the last 6 months + +### Level 3: Crisis-proof maintenance (Gold) + +The project fulfills the requirements for a crisis-proof maintained project. New versions are released regularly, problems are responded to quickly and there is a broad and active community. + +- All criteria from levels 1 and 2 +- [Bus Factor](/concepts/implemented-checks/bus-factor): Multiple maintainers (individuals) are actively contributing to the project. The project has a bus factor of at least 2 in the last 6 months. \ No newline at end of file diff --git a/src/pages/official-badges/open-source-badge.mdx b/src/pages/official-badges/open-source-badge.mdx new file mode 100644 index 0000000000000000000000000000000000000000..8a9d5d8bc7635aaf1c9e6a17ef30d73f051b0a08 --- /dev/null +++ b/src/pages/official-badges/open-source-badge.mdx @@ -0,0 +1,28 @@ +{/* Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH. +SPDX-License-Identifier: MIT */} + +import { Callout } from 'nextra/components' + +# Open Source Badge + +<Callout type="info" emoji="🛡ï¸"> +**Official Badge in the openCode Software Catalogue** +</Callout> + +<div className="grid grid-cols-none lg:grid-cols-3 gap-4 mt-8 justify-center"> + <img src="/assets/badges/OSS.svg" className="h-36 lg:h-48"/> +</div> + +This badge checks if a project is open source. The badge is a manual badge provided by the openCode Team. +All public projects on openCode must have a valid approved license and it is therefore implied that all projects on openCode are open source. + +- This Badge is granted to projects on openCode that match the following decision file: + +```json +{ + "granted": [], + "grantedRegex": [ + "^https://gitlab\\.opencode\\.de.*" + ] +} +``` \ No newline at end of file diff --git a/src/pages/official-badges/reuse-badge.mdx b/src/pages/official-badges/reuse-badge.mdx new file mode 100644 index 0000000000000000000000000000000000000000..f070e973732253e0cab3980d56f5ef2dc1ed2674 --- /dev/null +++ b/src/pages/official-badges/reuse-badge.mdx @@ -0,0 +1,40 @@ +{/* Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH. +SPDX-License-Identifier: MIT */} + +import { Callout } from 'nextra/components' + +# Reuse Badge + +<Callout type="info" emoji="🛡ï¸"> +**Official Badge in the openCode Software Catalogue** +</Callout> + +<div className="grid grid-cols-none lg:grid-cols-3 gap-4 mt-8 justify-center"> + <img src="/assets/badges/REUSED-1.svg" className="h-36 lg:h-48"/> + <img src="/assets/badges/REUSED-2.svg" className="h-36 lg:h-48"/> + <img src="/assets/badges/REUSED-3.svg" className="h-36 lg:h-48"/> +</div> + +The reuse badge is a badge that indicates the reuse status of a repository. +The badge is based on the following criteria: + +### Level 1: Ready for Reuse (Bronze) + +The project meets the requirements for subsequent use. Packages are provided for further use. + +- [Packages](/concepts/implemented-checks/packages): There has been at least one package published within the last 6 months +- [CI-Pipelines](/concepts/implemented-checks/ci-pipeline): There has been at least one successful CI pipeline within the last 6 months + +### Level 2: Actively Reused (Silver) + +The project is used productively by at least 1 organization. + +- All criteria from level 1 +- [Subsequent use](/concepts/implemented-checks/subsequent-use): At least one organization is actively using the project + +### Level 3: Frequently Actively Reused (Gold) + +The project is used productively by at least 10 organizations. + +- All criteria from levels 1 and 2 +- [Subsequent use](/concepts/implemented-checks/subsequent-use): At least 10 organizations are actively using the project \ No newline at end of file diff --git a/src/pages/official-badges/security-badge.mdx b/src/pages/official-badges/security-badge.mdx new file mode 100644 index 0000000000000000000000000000000000000000..b3856ccc845fa6e1b57a0174f5c031eaf1e800bd --- /dev/null +++ b/src/pages/official-badges/security-badge.mdx @@ -0,0 +1,36 @@ +{/* Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH. +SPDX-License-Identifier: MIT */} + +import { Callout } from 'nextra/components' + +# Security Badge + +<Callout type="warning"> +**Status: In planning** +</Callout> + +<div className="grid grid-cols-none lg:grid-cols-3 gap-4 mt-8 justify-center"> + <img src="/assets/badges/SECURITY-1.svg" className="h-36 lg:h-48"/> + <img src="/assets/badges/SECURITY-2.svg" className="h-36 lg:h-48"/> + <img src="/assets/badges/SECURITY-3.svg" className="h-36 lg:h-48"/> +</div> + +The active maintained badge is a badge that indicates the security status of a repository. +The badge is based on the following criteria: + +### Level 1: Basic Security Practices (Bronze) +- Bug-Report process in place: TBD +- [Issue Reaction Time](/concepts/implemented-checks/issue-reaction-time): TBD +- Branch protection: TBD +- Vulnerability checks - CVE Age: TBD +- Vulnerability checks - Remediation time: TBD + +### Level 2: Advanced Security Practices (Silver) +- All criteria from level 1 +- Security Policy (SECURITY.md): TBD +- No release with known vulnerabilities: TBD + +### Level 3: Comprehensive Security Practices (Gold) +- All criteria from levels 1 and 2 +- Signed Releases: TBD +- Code-Review process in place: TBD \ No newline at end of file diff --git a/src/styles/globals.scss b/src/styles/globals.scss index cd7f3d825dd95e602f2e1dbd9ae57cc9905bed98..cb4ac2efb5c01af7ebe563e1abab88c3198e9fea 100644 --- a/src/styles/globals.scss +++ b/src/styles/globals.scss @@ -50,4 +50,8 @@ h3 { font-family: 'Space Grotesk', sans-serif; } +} + +footer { + @apply bg-gray-50 !important; } \ No newline at end of file diff --git a/theme.config.tsx b/theme.config.tsx index 98ea2afe972869203473fbdde5642b96b09c2d7a..5eb6d33250b0531ca7980919c77a78b6ea826712 100644 --- a/theme.config.tsx +++ b/theme.config.tsx @@ -5,8 +5,7 @@ import React from 'react' import { DocsThemeConfig, useConfig } from 'nextra-theme-docs' import Image from 'next/image' import { useRouter } from 'next/router' -import Link from 'next/link' -import { ExclamationCircleIcon } from '@heroicons/react/24/outline' +import Footer from './src/components/Footer' const config: DocsThemeConfig = { head() { @@ -45,7 +44,7 @@ const config: DocsThemeConfig = { logo: ( <span className="flex items-center space-x-2"> <Image - src="/badge-api-icon.png" + src="/assets/badge-programm.png" alt="Badge API Icon" width={220} height={80} @@ -53,7 +52,7 @@ const config: DocsThemeConfig = { /> <span> <span className="font-space-grotesk text-xl font-bold text-black"> - Badge API Dokumentation + Badge Programm Documentation </span> </span> </span> @@ -98,58 +97,7 @@ const config: DocsThemeConfig = { forcedTheme: 'light', }, footer: { - content: ( - <div className="flex w-full flex-col items-center text-sm sm:items-start"> - <div className="flex space-x-6"> - <Link - className="text-blue-600 hover:text-blue-400" - title="Impressum" - href="https://opencode.de/de/impressum" - target="_blank" - rel="noopener noreferrer" - > - Impressum - </Link> - <Link - className="text-blue-600 hover:text-blue-400" - title="Datenschutz" - href="https://opencode.de/de/datenschutz" - target="_blank" - rel="noopener noreferrer" - > - Datenschutz - </Link> - <Link - className="text-blue-600 hover:text-blue-400" - title="Leichte Sprache" - href="/leichte-sprache" - target="_blank" - rel="noopener noreferrer" - > - Leichte Sprache - </Link> - <Link - className="text-blue-600 hover:text-blue-400" - title="Datenschutz" - href="/declaration-on-accessibility" - > - Erklärung zur Barrierefreiheit - </Link> - <Link - className="text-blue-600 hover:text-blue-400" - title="Datenschutz" - href="mailto:info@opencode.de" - > - <ExclamationCircleIcon className="-mt-1 mr-1 inline h-4 w-4" /> - Barriere melden - </Link> - </div> - <p className="mt-4"> - © {new Date().getFullYear()} Zentrum für Digitale - Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH - </p> - </div> - ), + content: <Footer />, }, }