{"id":44050352,"url":"https://github.com/groundsgg/b3","last_synced_at":"2026-02-07T23:09:59.559Z","repository":{"id":332848730,"uuid":"1132305445","full_name":"groundsgg/b3","owner":"groundsgg","description":"🌍 B3 is your all-in-one home for Minecraft schematics, heightmaps, and everything your builds need","archived":false,"fork":false,"pushed_at":"2026-02-04T21:31:40.000Z","size":54,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-05T09:40:32.173Z","etag":null,"topics":["fastasyncworldedit","go","golang","heightmaps","minecraft","schematics","worldedit"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/groundsgg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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":"2026-01-11T17:59:51.000Z","updated_at":"2026-01-21T20:23:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/groundsgg/b3","commit_stats":null,"previous_names":["groundsgg/b3"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/groundsgg/b3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/groundsgg%2Fb3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/groundsgg%2Fb3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/groundsgg%2Fb3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/groundsgg%2Fb3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/groundsgg","download_url":"https://codeload.github.com/groundsgg/b3/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/groundsgg%2Fb3/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29211827,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T22:58:45.823Z","status":"ssl_error","status_checked_at":"2026-02-07T22:58:45.272Z","response_time":63,"last_error":"SSL_read: 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":["fastasyncworldedit","go","golang","heightmaps","minecraft","schematics","worldedit"],"created_at":"2026-02-07T23:09:58.905Z","updated_at":"2026-02-07T23:09:59.554Z","avatar_url":"https://github.com/groundsgg.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eBlock3\u003c/h1\u003e\n\u003cp align=\"center\"\u003eB3 is your all-in-one home for Minecraft schematics, heightmaps, and everything your builds need.\u003c/p\u003e\n\u003cbr /\u003e\n\n\u003ch2\u003eTable of Contents\u003c/h2\u003e\n\n- [Configuration](#configuration)\n  - [Environment Variables](#environment-variables)\n  - [Auth Method: Basic Authentication](#auth-method-basic-authentication)\n    - [Format](#format)\n    - [Permission Levels](#permission-levels)\n    - [Password Hash](#password-hash)\n  - [Auth Method: OpenID Connect](#auth-method-openid-connect)\n    - [Required Scopes](#required-scopes)\n    - [Scope Mapping](#scope-mapping)\n    - [Supported b3\\_group Values](#supported-b3_group-values)\n- [License](#license)\n\n\n## Configuration\n\n### Environment Variables\n\nAll variables are read from the environment. Defaults are listed when present.\n\n| Variable | Default | Required | Notes |\n| --- | --- | --- | --- |\n| `LOGGING_LEVEL` | `info` | No | Sets the log level. |\n| `WEB_LISTEN_ADDR` | `:8080` | No | HTTP listen address. |\n| `WEB_BASE_URL` | `http://localhost:8080` | No | Public base URL used for redirects and CORS. |\n| `WEB_SESSION_KEY` | none (generated) | No | If unset, a random key is generated. Set in production to keep sessions stable. |\n| `AUTH_TYPE` | none | Yes | `basic_auth` or `oidc`. Controls which auth variables are required. |\n| `AUTH_BASIC_USERS` | none | Yes (basic_auth) | Comma-separated list: `name:permission-level:bcrypt-hash`. |\n| `AUTH_OIDC_DISCOVERY_URL` | none | Yes (oidc) | OIDC discovery URL. |\n| `AUTH_OIDC_CLIENT_ID` | none | Yes (oidc) | OIDC client ID. |\n| `AUTH_OIDC_CLIENT_SECRET` | none | Yes (oidc) | OIDC client secret. |\n\n### Auth Method: Basic Authentication\nBasic Authentication expects a list of users to be provided via the `AUTH_BASIC_USERS` environment variable.\n\nSee the provided [Docker Compose](/examples/basic_auth/compose.yml) example for a complete setup.\n\n#### Format\nEach user must be defined using the following format:\n```\n\u003cusername\u003e:\u003cpermission-level\u003e:\u003cbcrypt-hash\u003e\n```\nMultiple users must be separated by commas:\n```\nuser1:10:$2b$...,user2:5:$2b$...\n```\n\n#### Permission Levels\nPermission levels are defined numerically as follows:\n| Role | Level |\n|------|-------|\n|VIEWER| 5     |\n|EDITOR| 10    |\n|ADMIN | 20    |\n\n#### Password Hash\nPasswords must be provided as bcrypt hashes.\nA bcrypt hash can be generated using the following command:\n```shell\n$ b3 hash\nEnter Password: \u003cpassword\u003e\nHash: \u003chash\u003e\n```\n\n### Auth Method: OpenID Connect\nTo enable OpenID Connect (OIDC), the client ID (`AUTH_OIDC_CLIENT_ID`), client secret (`AUTH_OIDC_CLIENT_SECRET`), and discovery URL (`AUTH_OIDC_DISCOVERY_URL`) must be configured.\n\nSee the provided [Docker Compose](/examples/oidc/compose.yml) example for a complete setup.\n\n#### Required Scopes\nB3 requests the following scopes during authentication:\n- `openid`\n- `profile`\n- `b3`\n\nThe `b3` scope is **mandatory**. If it is not granted, the login attempt will be rejected.\n\n#### Scope Mapping\nIn the identity provider, a scope-to-claim mapping must be configured:\n- Scope: `b3`\n- Claim: `b3_group`\n\nIf the `b3_group` claim is not present in the UserInfo, authentication will fail.\n\n#### Supported b3_group Values\nThe following values are supported for the `b3_group` claim:\n- `viewer`\n- `editor`\n- `admin`\n\n## License\n\nThis project is licensed under the GNU Affero General Public License v3 (AGPLv3).\n\nIf you use this software to provide a service over a network, you must make the\ncomplete corresponding source code available to the users of that service,\nas required by the AGPL.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgroundsgg%2Fb3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgroundsgg%2Fb3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgroundsgg%2Fb3/lists"}