{"id":23782565,"url":"https://github.com/roydejong/bssb.app","last_synced_at":"2025-06-16T08:32:08.212Z","repository":{"id":38390398,"uuid":"311774073","full_name":"roydejong/bssb.app","owner":"roydejong","description":"Website and API for Server Browser, a Beat Saber mod (https://bssb.app)","archived":false,"fork":false,"pushed_at":"2025-04-01T15:16:35.000Z","size":70612,"stargazers_count":6,"open_issues_count":4,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-01T16:37:11.107Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/roydejong.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}},"created_at":"2020-11-10T20:15:17.000Z","updated_at":"2025-04-01T15:16:38.000Z","dependencies_parsed_at":"2025-03-23T16:36:12.633Z","dependency_job_id":null,"html_url":"https://github.com/roydejong/bssb.app","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/roydejong/bssb.app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roydejong%2Fbssb.app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roydejong%2Fbssb.app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roydejong%2Fbssb.app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roydejong%2Fbssb.app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/roydejong","download_url":"https://codeload.github.com/roydejong/bssb.app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roydejong%2Fbssb.app/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260126395,"owners_count":22962639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-01T12:16:11.621Z","updated_at":"2025-06-16T08:32:08.206Z","avatar_url":"https://github.com/roydejong.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bssb.app\n\n🌐 **Website and API application powering the Beat Saber Server Browser mod (https://bssb.app)**\n\n[![Build and Deploy](https://github.com/roydejong/bssb.app/workflows/Build%20and%20Deploy/badge.svg)](https://github.com/roydejong/bssb.app/actions?query=workflow%3A%22Build+and+Deploy%22)\n\n## Overview\n\nThis is the PHP source code powering the website and API that is used\nby [BeatSaberServerBrowser](https://github.com/roydejong/BeatSaberServerBrowser).\n\n### Features\n\n- 📝 Receives and stores game information from players hosting matches\n- 😎 Lets mod users browse and filter compatible and relevant games\n- 🌐 Provides a public site where you can view games and stats\n\n## 🐋 Setup: Docker\n\nThe easiest way to run the application is using Docker. You can use the provided `docker-compose.yml` file to set up the\napplication.\n\n### Requirements\n\n- Docker\n- Docker Compose\n\n### Installation\n\nClone the repository, then run the following command to start the application:\n\n```bash\ndocker-compose up -d\n```\n\nYou can set the following environment variables (in an `.env` file, or in your shell environment) to control the\nconfiguration of the application:\n\n| Variable                  | Description                                                                                                                        |\n|---------------------------|------------------------------------------------------------------------------------------------------------------------------------|\n| `MYSQL_PASSWORD`          | Password for the MySQL database user. MUST be set to a non-empty value.                                                            |\n| `SENTRY_DSN`              | To enable error reporting to [Sentry](https://sentry.io/welcome/), set this to your Data Source Name (DSN).                        |\n| `CACHE_ENABLED`           | Enable compilation / view caching. Recommended for production.                                                                     |\n| `HASHIDS_SALT`            | Salt for calculating hashids. Randomize to prevent iteration of IDs in URLs.                                                       |\n| `STEAM_WEB_API_KEY`       | [Steam Web API Key](https://steamcommunity.com/dev) for authenticating users via Steam. If empty, Steam integration will not work. |\n| `MASTER_SERVER_BLACKLIST` | Comma-separated list of master server hosts to block/ignore announce messages from.                                                |\n| `TWITTER_API_KEY`         | Optional Twitter API Key for automating news posts to Twitter.                                                                     |\n| `TWITTER_API_KEY_SECRET`  | Optional Twitter API Secret Key for automating news posts to Twitter.                                                              |\n\n## 🤓 Setup: Manual\n\nIf you can't or don't want to use Docker, you can set up the application manually.\n\n### Requirements\n\n- Web server (recommended: nginx)\n- PHP 8.4+ with extensions:\n    - `curl`, `dom`, `json`, `mbstring`, `pdo`, `xml`\n- [Composer](https://getcomposer.org/)\n- MySQL (or compatible) database\n- Redis\n- [node-sass](https://sass-lang.com/install/)\n\n### Installation\n\nClone the repository (suggested path: `/var/www/bssb.app`) and install the dependencies with Composer:\n\n```bash\ncomposer install --no-dev\n```\n\nConfigure nginx to direct all requests to `public/index.php`, example config:\n\n```nginx\nserver {\n    server_name bssb.app;\n    root /var/www/bssb.app/public;\n\n    autoindex off;\n    server_tokens off;\n\n    index index.php;\n    error_page 404 = /index.php;\n\n    location / {\n        try_files $uri $uri/ /index.php$is_args$args;\n    }\n\n    location ~ \\.php$ {\n        fastcgi_pass unix:/run/php/php8.3-fpm.sock;\n        fastcgi_index index.php;\n        include fastcgi.conf;\n    }\n}\n``` \n\nSeed or migrate the database:\n\n```bash\nvendor/bin/phinx migrate\n```\n\n### Configuration\n\nCreate a `config.php` in the application root directory, using the provided `config.sample.php` as a template:\n\n| Setting                   | Description                                                                                                                                |\n|---------------------------|--------------------------------------------------------------------------------------------------------------------------------------------|\n| Sentry DSN                | To enable error reporting to [Sentry](https://sentry.io/welcome/), set this to your Data Source Name (DSN).                                |\n| `cache_enabled`           | Enable compilation / view caching. Recommended for production.                                                                             |\n| `response_cache_enabled`  | Enable caching of web / API responses. Recommended for production.                                                                         |\n| `hashids_salt`            | Salt for calculating hashids. Randomize to prevent iteration of IDs in URLs.                                                               |\n| `steam_web_api_key`       | [Steam Web API Key](https://steamcommunity.com/dev) for authenticating users via Steam. If empty, Steam integration will not work.         |\n| `master_server_blacklist` | Array of master server hosts to block/ignore announce messages from. Defaults to none.                                                     |\n| `allow_multiple_results`  | Controls whether match results should be locked after receiving them the first time. Defaults to `false`.                                  |\n| `allow_boring`            | Controls whether games that are unlikely to be relevant should be allowed (games announced from LAN, localhost, etc). Defaults to `false`. |\n| `twitter_api_key`         | Optional Twitter API Key for automating news posts to Twitter.                                                                             |\n| `twitter_api_key_secret`  | Optional Twitter API Secret Key for automating news posts to Twitter.                                                                      |\n| dbConfig                  | [Instarecord database configuration](https://github.com/SoftwarePunt/instarecord?tab=readme-ov-file#configuration).                        |\n\n### Cron\n\nTo enable cron jobs, by adding the following line to the crontab:\n\n```\n* * * * * cd /var/www/bssb.app \u0026\u0026 vendor/bin/crunz schedule:run\n```\n\n### CSS\n\nTo generate stylesheets:\n\n``\nsass --update public/static/\n``","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froydejong%2Fbssb.app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froydejong%2Fbssb.app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froydejong%2Fbssb.app/lists"}