Skip to content
Snippets Groups Projects
Verified Commit a210835a authored by Sebastian Kawelke's avatar Sebastian Kawelke :upside_down:
Browse files

Updates docs and improves design

parent da0662a5
No related branches found
No related tags found
No related merge requests found
Showing
with 503 additions and 20 deletions
...@@ -4,11 +4,10 @@ ...@@ -4,11 +4,10 @@
SPDX-License-Identifier: MIT SPDX-License-Identifier: MIT
--> -->
## Development <div align="center">
<picture>
<img src="docs/assets/hero-image.png" alt="DevGuard by L3montree Logo" width="1000" height="490">
</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: ## openCode Badge Programm
```bash
npm i
NEXT_PUBLIC_API_BASE_URL=http://localhost:8080/api/v1 npm run dev
```
\ No newline at end of file
docs/assets/hero-image.png

396 KiB

<?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
<?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>
public/assets/overview.png

111 KiB

<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” &amp; </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
<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
public/assets/zendis.png

21.5 KiB

/* 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>
)
}
...@@ -62,10 +62,8 @@ export default function Hero() { ...@@ -62,10 +62,8 @@ export default function Hero() {
Source Software stärken Source Software stärken
</h1> </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"> <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 Das Badge Programm prüft openCode
des Badge Programms, der openCode Repositories und vergibt Badges, die im{' '}
Repositories prüft und Badges vergibt,
die im{' '}
<a <a
target="_blank" target="_blank"
rel="noreferrer noopener" rel="noreferrer noopener"
...@@ -75,7 +73,7 @@ export default function Hero() { ...@@ -75,7 +73,7 @@ export default function Hero() {
openCode Softwarekatalog openCode Softwarekatalog
</a>{' '} </a>{' '}
angezeigt werden und den Status der angezeigt werden und den Status der
Repositorys in Bezug auf Sicherheit, Repositories in Bezug auf Sicherheit,
Wartung und Wiederverwendung anzeigen. Wartung und Wiederverwendung anzeigen.
</p> </p>
<div className="mt-10 flex items-center gap-x-6"> <div className="mt-10 flex items-center gap-x-6">
......
// Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH. // Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH.
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
import { title } from 'process'
export default { export default {
index: { index: {
theme: { theme: {
...@@ -15,8 +17,14 @@ export default { ...@@ -15,8 +17,14 @@ export default {
display: 'hidden', display: 'hidden',
}, },
introduction: { title: 'Introduction' }, introduction: { title: 'Introduction' },
'official-badges': { title: 'Official Badges 🛡️' },
concepts: { title: 'Concepts' }, concepts: { title: 'Concepts' },
'api-docs': { title: 'API' }, 'api-docs': { title: 'API' },
docs: {
title: 'Documentation (EN)',
type: 'page',
href: '/introduction',
},
'live-demo': { 'live-demo': {
title: 'Zur Live Demo 🚀', title: 'Zur Live Demo 🚀',
type: 'page', type: 'page',
......
...@@ -263,7 +263,7 @@ The result is returned in [SARIF format](https://docs.github.com/en/code-securit ...@@ -263,7 +263,7 @@ The result is returned in [SARIF format](https://docs.github.com/en/code-securit
"badgeExplanation": { "badgeExplanation": {
"criteria": [ "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", "value": "1",
"status": "pass", "status": "pass",
"ruleId": "MANUAL/Project is open source", "ruleId": "MANUAL/Project is open source",
...@@ -426,7 +426,7 @@ The result is returned in [SARIF format](https://docs.github.com/en/code-securit ...@@ -426,7 +426,7 @@ The result is returned in [SARIF format](https://docs.github.com/en/code-securit
}, },
{ {
"kind": "pass", "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": { "properties": {
"badgeId": "OPEN-SOURCE", "badgeId": "OPEN-SOURCE",
"badgeLevel": "GOLD", "badgeLevel": "GOLD",
...@@ -550,7 +550,7 @@ The result is returned in [SARIF format](https://docs.github.com/en/code-securit ...@@ -550,7 +550,7 @@ The result is returned in [SARIF format](https://docs.github.com/en/code-securit
"id": "MANUAL/Project is open source", "id": "MANUAL/Project is open source",
"name": "Project is open source", "name": "Project is open source",
"fullDescription": { "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": { "help": {
"text": "This is a manual check" "text": "This is a manual check"
......
...@@ -4,6 +4,5 @@ ...@@ -4,6 +4,5 @@
export default { export default {
index: { title: 'Overview' }, index: { title: 'Overview' },
configuration: { title: 'Configuration' }, configuration: { title: 'Configuration' },
'official-badges': { title: 'Official Badges 🛡️' },
'implemented-checks': { title: 'Implemented Checks' }, 'implemented-checks': { title: 'Implemented Checks' },
} }
...@@ -145,7 +145,7 @@ badges: ...@@ -145,7 +145,7 @@ badges:
checks: checks:
- type: MANUAL - type: MANUAL
decisionJsonUrl: https://gitlab.opencode.de/open-code/badgebackend/manual-badges/-/raw/main/badges/open-source.json 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. 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.
......
{/* 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
{/* 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
...@@ -5,8 +5,12 @@ SPDX-License-Identifier: MIT */} ...@@ -5,8 +5,12 @@ SPDX-License-Identifier: MIT */}
The following checks are implemented and can be used to generate badges: 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) - [`CI_PIPELINE` ↗](/concepts/implemented-checks/ci-pipeline)
- [`COMMITS` ↗](/concepts/implemented-checks/commits) - [`COMMITS` ↗](/concepts/implemented-checks/commits)
- [`ELEPHANT_FACTOR` ↗](/concepts/implemented-checks/elephant-factor)
- [`ISSUE_REACTION_TIME` ↗](/concepts/implemented-checks/issue-reaction-time) - [`ISSUE_REACTION_TIME` ↗](/concepts/implemented-checks/issue-reaction-time)
- [`PACKAGES` ↗](/concepts/implemented-checks/packages) - [`PACKAGES` ↗](/concepts/implemented-checks/packages)
- [`RELEASES` ↗](/concepts/implemented-checks/releases) - [`PROTECTED_BRANCHES` ↗](/concepts/implemented-checks/protected-branches)
\ No newline at end of file - [`RELEASES` ↗](/concepts/implemented-checks/releases)
- [`SUBSEQUENT_USE` ↗](/concepts/implemented-checks/subsequent-use)
\ No newline at end of file
{/* 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
{/* 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
...@@ -7,7 +7,9 @@ SPDX-License-Identifier: MIT */} ...@@ -7,7 +7,9 @@ SPDX-License-Identifier: MIT */}
# Overview # 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 ### Fundamentals
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment

Consent

On this website, we use the web analytics service Matomo to analyze and review the use of our website. Through the collected statistics, we can improve our offerings and make them more appealing for you. Here, you can decide whether to allow us to process your data and set corresponding cookies for these purposes, in addition to technically necessary cookies. Further information on data protection—especially regarding "cookies" and "Matomo"—can be found in our privacy policy. You can withdraw your consent at any time.