RAWeb is RetroAchievements.org's platform application. It is a Laravel application using Inertia.js 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.
RAWeb runs in Docker via Laravel Sail, which provides PHP, MariaDB, Node.js, and all other services in containers. Prefer to run the application directly on your host machine instead? See the alternative environments guide.
composer installcomposer setupAmong other things, this creates your environment configuration file (.env) by copying .env.example, which contains a sensible set of default values. The configuration automatically detects whether it's running via the Laravel Sail application container and adjusts hosts and ports accordingly. You might want to adjust the forwarded container port numbers to your liking (APP_PORT, FORWARD_*).
Sail forwards commands to Docker Compose:
./vendor/bin/sail up
# Daemonize:
./vendor/bin/sail up -dNote Subsequent mentions of
sailcommands assume it has been aliased to./vendor/bin/sailaccording to Sail's docs. ie: run./vendor/bin/sail pnpm devif you haven't aliased it.
sail pnpm install
sail pnpm buildsail artisan ra:storage:link --relativesail artisan migrateSeed your database with additional test data:
sail artisan db:seedThe application runs at http://localhost:64000 by default.
For local development with hot module replacement:
sail pnpm devBefore submitting a pull request, verify your changes pass all checks:
# Frontend
sail pnpm verify # Runs linting, TypeScript checks, and Vitest tests
# Backend
sail composer fix # Fix code style issues
sail composer analyse # Run PHPStan static analysis
sail composer test -- --filter=TestFileName # Run an individual test suite
sail composer test -- --parallel # Run all back-end tests in parallelTo run specific frontend tests:
sail pnpm test:run SomeComponent # Run tests matching "SomeComponent"Sail also provides supporting services out of the box:
- Connect a database client of your choice to MariaDB using the forwarded port (64010 by default).
- Mailpit catches local outbound mail and runs at http://localhost:64050.
- MinIO acts as an AWS S3 drop-in replacement. Set
AWS_MINIO=truein.envand create alocalbucket manually at http://localhost:64041/buckets/add-bucket.
Add a host.txt file next to RAIntegration.dll in your local RALibRetro's directory.
The file should contain the URL to your local RAServer instance:
http://localhost:64000when running the server via Docker,composer startorartisan serve.
Please see our Security Policy.
Please see our Contribution Guidelines, Translations Guide and Code of Conduct.
RAWeb is open-sourced software licensed under the GPL-3.0 License.
Console Icons by yspixel.jpn.org and Tatohead.