RS UI is a Laravel + Inertia + React application for browsing partners, collections, and file-system-like paths backed by an external API.
- Laravel (PHP)
- Inertia.js + React + TypeScript
- Vite
- Tailwind CSS + Radix UI primitives
- Pest (PHP tests)
- PHP 8.5+
- Composer
- Node.js 20+
- npm
ddev composer install
ddev npm install
cp .env.example .env
ddev php artisan key:generate
ddev php artisan migrate
ddev npm run devIn a second terminal, run:
php artisan serveConfigure your external API endpoint in .env and ensure the related services.rs.v1.endpoint config resolves correctly. The application depends on an authenticated external session cookie (external_auth_cookie) and expiry timestamp (external_auth_expires) for API-backed actions.
# Frontend
ddev npm run dev
ddev npm run build
ddev npm run types
ddev npm run lint
ddev npm run format
# Backend/tests
ddev php artisan test
./vendor/bin/pest
vendor/bin/pint --dirty- Authenticated users enter the dashboard and navigate partners/collections.
- Collection browsing and file preview/download actions call external API-backed endpoints.
- Search pages call
SearchController, which delegates query execution and pagination toExternalApiService. - React pages render via Inertia responses from Laravel controllers.
GET /dashboard— partners indexGET /partners/{partner}— partner detailsGET /collections/{collection}— collection detailsGET /paths/{partner}/{collection}/{path?}— path browsingGET /preview/{path}— file previewGET /download/{path}— file download streamGET /search— search pageGET /api/search— API search endpointGET /api/search/autocomplete— autocomplete endpoint
app/
Http/Controllers/ # Inertia/API controllers
Services/ # External API integration layer
resources/js/
components/ # UI and feature components
pages/ # Inertia page components
hooks/ # Shared React hooks
tests/ # Pest feature/unit tests
- Test plan (planned tests only):
docs/testing-plan.md