{"id":30653035,"url":"https://github.com/retroachievements/raweb","last_synced_at":"2026-06-08T02:05:55.519Z","repository":{"id":37790298,"uuid":"121250848","full_name":"RetroAchievements/RAWeb","owner":"RetroAchievements","description":"The RetroAchievements.org platform. Includes core functionality for managing achievements, game data, and community features.","archived":false,"fork":false,"pushed_at":"2026-01-20T21:56:30.000Z","size":31509,"stargazers_count":371,"open_issues_count":37,"forks_count":116,"subscribers_count":22,"default_branch":"master","last_synced_at":"2026-01-21T00:51:18.069Z","etag":null,"topics":["laravel","retroachievements"],"latest_commit_sha":null,"homepage":"https://retroachievements.org","language":"PHP","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/RetroAchievements.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":null,"patreon":"retroachievements","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2018-02-12T13:37:42.000Z","updated_at":"2026-01-20T21:56:36.000Z","dependencies_parsed_at":"2023-12-26T22:31:46.907Z","dependency_job_id":"b1a013cd-fd7b-4dc3-882e-94215cd04441","html_url":"https://github.com/RetroAchievements/RAWeb","commit_stats":null,"previous_names":[],"tags_count":331,"template":false,"template_full_name":null,"purl":"pkg:github/RetroAchievements/RAWeb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RetroAchievements%2FRAWeb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RetroAchievements%2FRAWeb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RetroAchievements%2FRAWeb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RetroAchievements%2FRAWeb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RetroAchievements","download_url":"https://codeload.github.com/RetroAchievements/RAWeb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RetroAchievements%2FRAWeb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28647474,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T21:29:11.980Z","status":"ssl_error","status_checked_at":"2026-01-21T21:24:31.872Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["laravel","retroachievements"],"created_at":"2025-08-31T07:34:14.541Z","updated_at":"2026-01-22T00:01:23.321Z","avatar_url":"https://github.com/RetroAchievements.png","language":"PHP","funding_links":["https://patreon.com/retroachievements"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\" dir=\"auto\"\u003e\u003ca href=\"https://retroachievements.org\" rel=\"nofollow\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/RetroAchievements/RAWeb/master/public/assets/images/ra-icon.webp\" width=\"200\" alt=\"RetroAchievements Logo\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\n**RAWeb** is [RetroAchievements.org](https://retroachievements.org)'s platform application.\nIt is a Laravel application using [Inertia.js](https://inertiajs.com/) with React, TypeScript, and server-side rendering (SSR). The frontend is actively migrating from Blade/Livewire to React. Back-office administration is built with [Filament](https://filamentphp.com/).\n\n## Requirements\n\n- Local web server\n- [PHP 8.4](http://php.net/manual/en/)\n- [Composer](https://getcomposer.org/) PHP dependency manager\n- [MariaDB 10](https://mariadb.com/docs/server/)\n- [Node.js 24](https://nodejs.org/)\n- [pnpm 10](https://pnpm.io/)\n \nValidated to run on Windows, macOS, and Linux with any of the setup options below (Docker via Laravel Sail, VM with either nginx or Apache, Laravel Valet on macOS).\n\n### **[Docker Compose](https://docs.docker.com/compose/install/)** (Windows, Linux, macOS)\n\nRecommended. See [Laravel Sail documentation](https://laravel.com/docs/sail).\n\n### **[XAMPP](https://www.apachefriends.org/download.html)** (Windows, Linux, macOS)\n\nInstall the XAMPP version packaged with PHP 8.4 to run an Apache web server, MariaDB, and PHP on your system.\n\nYou might have to enable some extensions in `php.ini` (see the `ext-*` requirements in [composer.json](composer.json)):\n```\nextension=curl\nextension=gmp\nextension=mysqli\nextension=pdo_mysql\nextension=gd\nextension=intl\nextension=sockets\n```\n\n### **[Laravel Valet](https://laravel.com/docs/valet)** (macOS only)\n\nA [local valet driver](LocalValetDriver.php) is provided.\n\n## Installation\n\n```shell\ncomposer install\n```\n\n### Run setup script\n\n```shell\ncomposer setup\n```\n\n### Configure\n\nThe environment configuration file (`.env`) contains a sensible set of default values.\n\n**Docker/Laravel Sail**\n\nNo additional configuration is needed; the configuration automatically detects whether it's running the application via the Laravel Sail application container and adjusts hosts and ports accordingly.\n\nHowever, you might want to adjust the forwarded container port numbers to your liking (`APP_PORT`, `FORWARD_*`).\n\nNow is a good time to create the containers. Sail forwards commands to Docker Compose:\n\n```shell\nsail up\n# Daemonize:\nsail up -d\n```\n\n\u003e **Note**\n\u003e Mentions of `sail` commands assume that it has been aliased to the `./sail` executable according to Sail's docs.\n\u003e I.e. run `./sail up` if you haven't aliased it.\n\n**XAMPP/Valet** \n\nAdjust the local environment configuration (`.env`):\n\n- Enter the credentials of your local database instance (`DB_*`)\n- Change the application URL (`APP_URL`) - static assets URL (`ASSET_URL`) should be the same as `APP_URL`\n\n\u003e **Note**\n\u003e `APP_URL` varies depending on your setup. By default it's configured to use the forwarded application Docker container port.\n\u003e E.g. using an Apache vhost or linking a domain via Laravel Valet this should be adjusted accordingly:\n\n```dotenv\nAPP_URL=https://raweb.test\nASSET_URL=https://raweb.test\n```\n\n**Hybrid Docker setup**\n\nWhen running the application locally (i.e. web server and PHP via XAMPP/Valet) it's possible to use the provided Docker services, too.\n\nUse database and redis services:\n\n```dotenv\nDB_PORT=${FORWARD_DB_PORT}\nREDIS_PORT=${FORWARD_REDIS_PORT}\n```\n\n\u003e **Note**\n\u003e Connect with a database client of your choice using the forwarded ports\n\u003e or use phpMyAdmin which runs at http://localhost:64080 by default. \n\nUse mailpit as SMTP server for local mails testing:\n\n```dotenv\nMAIL_MAILER=smtp\n```\n\n\u003e **Note**\n\u003e Runs at http://localhost:64050 by default.\n\nUse minio as an AWS S3 drop-in replacement:\n\n```dotenv\nAWS_MINIO=true\n```\n\n\u003e **Note**\n\u003e In order to use S3 features you'll have to create a `local` bucket manually first.\n\u003e Runs at http://localhost:64041/buckets/add-bucket by default.\n\n### Build frontend assets\n\n```shell\npnpm install\npnpm build\n# Using Sail:\nsail pnpm install\nsail pnpm build\n```\n\n### Development workflow\n\nFor local development with hot module replacement:\n\n```shell\npnpm dev\n```\n\nBefore submitting a pull request, verify your changes pass all checks:\n\n```shell\n# Frontend\npnpm verify  # Runs linting, TypeScript checks, and Vitest tests\n\n# Backend\ncomposer fix                            # Fix code style issues\ncomposer analyse                        # Run PHPStan static analysis\ncomposer test -- --filter=TestFileName  # Run an individual test suite\ncomposer test -- --parallel             # Run all back-end tests in parallel\n```\n\nTo run specific frontend tests:\n\n```shell\npnpm test:run SomeComponent  # Run tests matching \"SomeComponent\"\n```\n\n### Create filesystem symlinks\n\n```shell\nphp artisan ra:storage:link --relative\n# Using Sail:\nsail artisan ra:storage:link --relative\n```\n\n### Setup database\n \n```shell\nphp artisan migrate\n# Using Sail:\nsail artisan migrate\n```\n\nSeed your database with additional test data:\n\n```shell\nphp artisan db:seed\n# Using Sail:\nsail artisan db:seed\n```\n\n### Open the application in your browser.\n\nDepending on the setup you chose the application should run.\n\n- Docker: http://localhost:64000\n- XAMPP: depending on Apache vhost configuration\n- Laravel Valet: e.g. https://raweb.test - depending on link / parked location and whether you chose to secure it or not \n\n## Usage\n\n### Developing achievements locally\n\nAdd a `host.txt` file next to `RAIntegration.dll` in your local RALibRetro's directory.\nThe file should contain the URL to your local RAServer instance. Any of the following will work:\n\n- `http://localhost:64000` when running the server via Docker, `composer start` or `artisan serve`.\n- `https://raweb.test` (example) when running the server via Valet\n- `http://raweb.test` (example) as a configured vhost\n\n## Security Vulnerabilities\n\nPlease see our [Security Policy](docs/SECURITY.md).\n\n## Contributing\n\nPlease see our [Contribution Guidelines](docs/CONTRIBUTING.md), [Translations Guide](docs/TRANSLATIONS.md) and [Code of Conduct](docs/CODE_OF_CONDUCT.md).\n\n## License\n\nRAWeb is open-sourced software licensed under the [GPL-3.0 License](LICENSE).\n\nConsole Icons by [yspixel.jpn.org](http://yspixel.jpn.org/icon/game/index.htm) and [Tatohead](https://github.com/Tatohead/Console-Iconset).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fretroachievements%2Fraweb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fretroachievements%2Fraweb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fretroachievements%2Fraweb/lists"}