{"id":24589286,"url":"https://github.com/bsstudio/bss-web-admin-backend","last_synced_at":"2026-04-24T04:00:55.760Z","repository":{"id":37014372,"uuid":"443609233","full_name":"BSStudio/bss-web-admin-backend","owner":"BSStudio","description":"BSS admin website backend service","archived":false,"fork":false,"pushed_at":"2026-04-22T06:12:49.000Z","size":3255,"stargazers_count":2,"open_issues_count":10,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-22T08:25:48.124Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://app.circleci.com/pipelines/github/BSStudio/bss-web-admin-backend","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BSStudio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-01-01T19:30:19.000Z","updated_at":"2026-04-22T06:12:51.000Z","dependencies_parsed_at":"2023-02-18T19:46:02.334Z","dependency_job_id":null,"html_url":"https://github.com/BSStudio/bss-web-admin-backend","commit_stats":null,"previous_names":[],"tags_count":124,"template":false,"template_full_name":null,"purl":"pkg:github/BSStudio/bss-web-admin-backend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BSStudio%2Fbss-web-admin-backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BSStudio%2Fbss-web-admin-backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BSStudio%2Fbss-web-admin-backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BSStudio%2Fbss-web-admin-backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BSStudio","download_url":"https://codeload.github.com/BSStudio/bss-web-admin-backend/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BSStudio%2Fbss-web-admin-backend/sbom","scorecard":{"id":122329,"data":{"date":"2025-08-16T00:54:37Z","repo":{"name":"github.com/BSStudio/bss-web-admin-backend","commit":"95f4c9f75e17d7eaf2ec454895e284d25c443764"},"scorecard":{"version":"v5.2.1","commit":"ab2f6e92482462fe66246d9e32f642855a691dc1"},"score":7,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#dangerous-workflow"}},{"name":"Security-Policy","score":4,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Warn: no linked content found","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#security-policy"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Warn: jobLevel 'packages' permission set to 'write': .github/workflows/docker.yml:29","Info: jobLevel 'contents' permission set to 'read': .github/workflows/docker.yml:28","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release.yml:16","Info: topLevel permissions set to 'read-all': .github/workflows/docker.yml:14","Info: topLevel permissions set to 'read-all': .github/workflows/release.yml:9","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:20"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#token-permissions"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/13 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#packaging"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: RenovateBot: renovate.json:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#dependency-update-tool"}},{"name":"Pinned-Dependencies","score":7,"reason":"dependency not pinned by hash detected -- score normalized to 7","details":["Warn: containerImage not pinned by hash: Dockerfile:1","Warn: containerImage not pinned by hash: Dockerfile:26","Warn: npmCommand not pinned by hash: .github/workflows/release.yml:29","Info:   7 out of   7 GitHub-owned GitHubAction dependencies pinned","Info:   7 out of   7 third-party GitHubAction dependencies pinned","Info:   0 out of   2 containerImage dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":2,"reason":"badge detected: InProgress","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#signed-releases"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#license"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: all commits (30) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#sast"}},{"name":"Branch-Protection","score":3,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'main'","Info: 'force pushes' disabled on branch 'main'","Info: 'branch protection settings apply to administrators' is required to merge on branch 'main'","Warn: could not determine whether codeowners review is allowed","Warn: 'up-to-date branches' is disabled on branch 'main'","Info: status check found to merge onto on branch 'main'","Warn: PRs are not required to make changes on branch 'main'; or we don't have data to detect it.If you think it might be the latter, make sure to run Scorecard with a PAT or use Repo Rules (that are always public) instead of Branch Protection settings"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#branch-protection"}},{"name":"Contributors","score":0,"reason":"project has 0 contributing companies or organizations -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#contributors"}},{"name":"CI-Tests","score":10,"reason":"30 out of 30 merged PRs checked by a CI test -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#ci-tests"}}]},"last_synced_at":"2025-08-16T02:44:26.658Z","repository_id":37014372,"created_at":"2025-08-16T02:44:26.658Z","updated_at":"2025-08-16T02:44:26.658Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32208477,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T03:15:14.334Z","status":"ssl_error","status_checked_at":"2026-04-24T03:15:11.608Z","response_time":64,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-24T08:14:38.890Z","updated_at":"2026-04-24T04:00:55.678Z","avatar_url":"https://github.com/BSStudio.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BSS Web admin backend\n\n![CircleCI](https://img.shields.io/circleci/build/github/BSStudio/bss-web-admin-backend/main?label=build)\n![GitHub Release Date](https://img.shields.io/github/release-date/BSStudio/bss-web-admin-backend)\n![GitHub Tag](https://img.shields.io/github/v/tag/BSStudio/bss-web-admin-backend)\n![GitHub branch checks state](https://img.shields.io/github/checks-status/BSStudio/bss-web-admin-backend/main)\n![Codecov branch](https://img.shields.io/codecov/c/gh/BSStudio/bss-web-admin-backend/main)\n![Swagger Validator](https://img.shields.io/swagger/valid/3.0?specUrl=https%3A%2F%2Fraw.githubusercontent.com%2FBSStudio%2Fbss-web-admin-backend%2Fmain%2Fserver%2Fweb%2Fsrc%2Fmain%2Fresources%2Fstatic%2Fopen-api.yaml)\n![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/BSStudio/bss-web-admin-backend)\n![GitHub](https://img.shields.io/github/license/BSStudio/bss-web-admin-backend)\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=BSStudio_bss-web-admin-backend\u0026metric=bugs)](https://sonarcloud.io/dashboard?id=BSStudio_bss-web-admin-backend)\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=BSStudio_bss-web-admin-backend\u0026metric=code_smells)](https://sonarcloud.io/dashboard?id=BSStudio_bss-web-admin-backend)\n[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=BSStudio_bss-web-admin-backend\u0026metric=duplicated_lines_density)](https://sonarcloud.io/dashboard?id=BSStudio_bss-web-admin-backend)\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=BSStudio_bss-web-admin-backend\u0026metric=ncloc)](https://sonarcloud.io/dashboard?id=BSStudio_bss-web-admin-backend)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=BSStudio_bss-web-admin-backend\u0026metric=sqale_rating)](https://sonarcloud.io/dashboard?id=BSStudio_bss-web-admin-backend)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=BSStudio_bss-web-admin-backend\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=BSStudio_bss-web-admin-backend)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=BSStudio_bss-web-admin-backend\u0026metric=reliability_rating)](https://sonarcloud.io/dashboard?id=BSStudio_bss-web-admin-backend)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=BSStudio_bss-web-admin-backend\u0026metric=security_rating)](https://sonarcloud.io/dashboard?id=BSStudio_bss-web-admin-backend)\n[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=BSStudio_bss-web-admin-backend\u0026metric=sqale_index)](https://sonarcloud.io/dashboard?id=BSStudio_bss-web-admin-backend)\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=BSStudio_bss-web-admin-backend\u0026metric=vulnerabilities)](https://sonarcloud.io/dashboard?id=BSStudio_bss-web-admin-backend)\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/10965/badge)](https://www.bestpractices.dev/projects/10965)\n\n## Project structure\n\n```mermaid\n---\ntitle: Project structure\n---\nclassDiagram\n    direction TB\n\n     namespace server {\n         class src\n         class web\n         class operation\n         class service\n         class model\n         class data\n         class common\n     }\n\n    integration ..\u003e client\n    client ..\u003e operation\n    integration ..\u003e data\n    web ..\u003e operation\n    web ..\u003e service\n    service ..\u003e data\n    operation ..\u003e model\n    model ..\u003e common\n    data ..\u003e common\n    service ..\u003e model\n    src ..\u003e web\n```\n\n\u003e Note: client can only access operation, model, common. No business code\n\n\u003e Note: integration can only access client (with everything mentioned above) and data. No business\n\u003e code\n\n## Development\n\n### Pre-requisites\n\nDownload sdkman to manage java and gradle versions.\n\n```shell\ngit clone git@github.com:BSStudio/bss-web-admin-backend.git\ncd bss-web-admin-backend\nsdk env install\n```\n\n### Lint\n\n```shell\n./gradlew spotlessCheck\n```\n\n### Apply lint\n\n```shell\n./gradlew spotlessApply\n```\n\n### Test\n\n```shell\n./gradlew test\n```\n\n### Integration test\n\n```shell\ndocker compose up -d\n./gradlew integrationTest\ndocker compose down\n```\n\n### Build\n\nDocker:\n\n```shell\ndocker build -t bss-web-admin-backend .\n```\n\nGradle:\n\n```shell\n./gradlew build\n```\n\n### Run\n\nDocker:\n\n```shell\ndocker run bss-web-admin-backend\n```\n\nDocker compose:\n\n```shell\ndocker compose up\n```\n\nThis will start the app, database, and 3rd party mocks.\n\nIf you want to look at metrics\n\n````shell\n# Set your git not to commit changes to the default Grafana config\ngit update-index --skip-worktree docker/grafana/grafana.db\ndocker compose -profile metrics up\n\n# If you want to commit changes to the default Grafana config\ngit update-index --no-skip-worktree docker/grafana/grafana.db\ngit add docker/grafana/grafana.db\ngit commit -m \"Update Grafana config\"\n# Ignore logs again\ngit update-index --skip-worktree docker/grafana/grafana.db\n````\n\n\nGradle:\n\n```shell\n./gradlew bootRun\n```\n\n## Developer docs\n\nPlease read the documentation for each module to understand the codebase.\n\n- [buildSrc](buildSrc/README.md)\n- [client](client/README.md)\n- [integration](integration/README.md)\n- [server](server/README.md)\n    - [client](server/client/README.md)\n    - [common](server/common/README.md)\n    - [data](server/data/README.md)\n    - [model](server/model/README.md)\n    - [operation](server/operation/README.md)\n    - [service](server/service/README.md)\n    - [web](server/web/README.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbsstudio%2Fbss-web-admin-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbsstudio%2Fbss-web-admin-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbsstudio%2Fbss-web-admin-backend/lists"}