An open-source platform for user research, usability testing, and accessibility evaluation.
Plan studies, collect participant feedback, and turn research data into actionable insights.
RUXAILAB is an open-source platform designed to support user experience (UX) research, usability testing, and accessibility evaluation. It provides tools for creating studies, collecting participant responses, and analyzing research results.
The platform integrates with Firebase and optional external services to support its core functionality and additional research capabilities.
- Study management: Create and manage user research studies.
- Usability testing: Collect participant responses and evaluate user interactions.
- Accessibility evaluation: Support accessibility assessment and heuristic evaluation.
- Data collection: Store and manage research data using Firebase services.
- Data visualization: Explore research results through dashboards and charts.
- External integrations: Connect to services for eye tracking, sentiment analysis, PDF generation, and video calls.
- Internationalization: Support multiple languages through the application's localization configuration.
| Technology | Purpose |
|---|---|
| Vue.js | Frontend framework |
| Vuetify | UI components and application interface |
| Firebase Authentication | User authentication |
| Cloud Firestore | Document database |
| Firebase Realtime Database | Real-time data storage |
| Firebase Storage | File storage |
| Firebase Cloud Functions | Server-side functionality |
| Firebase Emulator Suite | Local development and testing |
Additional services may use their own technology stacks. Refer to their respective repositories for implementation details and setup instructions.
Before setting up RUXAILAB, ensure that you have installed:
- Node.js — version
22.22.1as specified for this project. - npm, included with Node.js.
- Git.
- A Firebase project, or the Firebase Emulator Suite for local development.
Some optional integrations require additional runtimes, dependencies, or services. Consult their repositories if you plan to use them.
-
Clone the repository:
git clone https://github.com/ruxailab/ruxailab.git cd ruxailab -
Install the project dependencies:
npm install
-
Create a local environment configuration file:
cp .env.example .env
-
Configure the required environment variables in
.env. For Firebase development, provide the appropriate project configuration or enable the local emulators. -
Start the development server:
npm run serve
The application should now be available at the local URL displayed in your terminal.
Note: Do not commit your
.envfile or any private credentials to version control.
RUXAILAB uses environment variables to configure Firebase, localization, Cloud Functions, external services, and local emulators.
The root .env.example file documents the supported configuration variables. Copy it to .env and set the values required by your development environment.
Environment-specific configuration
RUXAILAB supports environment-specific configuration files. You can use different environment variables for development, testing, and production environments.
For example:
.env # Default environment variables
.env.development # Development-specific variables
.env.production # Production-specific variables
.env.test # Test-specific variables
Create the files you need and configure the appropriate values for each environment. Environment-specific files should contain only the variables that need to differ from the default configuration.
Do not commit files containing private credentials or environment-specific secrets to version control.
Configure the Firebase project used by the application:
VUE_APP_FIREBASE_API_KEY=
VUE_APP_FIREBASE_AUTH_DOMAIN=
VUE_APP_FIREBASE_STORAGE_BUCKET=
VUE_APP_FIREBASE_DB_URL=
VUE_APP_FIREBASE_PROJECT_ID=
VUE_APP_FIREBASE_MESSAGING_SENDER_ID=
VUE_APP_FIREBASE_APP_ID=These variables identify the Firebase project and its associated services. Use the values provided by your Firebase project configuration.
Set the default language and fallback language:
VUE_APP_I18N_LOCALE="en"
VUE_APP_I18N_FALLBACK_LOCALE="en"Both variables default to English.
Configure the URL used to access Firebase Cloud Functions:
VUE_APP_CLOUD_FUNCTIONS_URL=For local development with the Firebase Functions Emulator, the example configuration is:
VUE_APP_CLOUD_FUNCTIONS_URL="http://127.0.0.1:5002/{PROJECT_ID}/{REGION}"Adjust the project identifier and URL to match your environment.
RUXAILAB supports local Firebase emulators for development and testing. The available emulator settings allow you to enable services independently.
VUE_APP_USE_EMULATORS="false"
VUE_APP_USE_AUTH_EMULATOR="false"
VUE_APP_USE_FIRESTORE_EMULATOR="false"
VUE_APP_USE_FUNCTIONS_EMULATOR="false"
VUE_APP_USE_STORAGE_EMULATOR="false"
VUE_APP_USE_DATABASE_EMULATOR="false"Enable the appropriate settings when using the local emulators. The general emulator flag and individual service flags should be configured consistently with the application's emulator initialization logic.
VUE_APP_FIREBASE_EMULATOR_HOST="localhost"
VUE_APP_FIRESTORE_EMULATOR_PORT="8081"
VUE_APP_AUTH_EMULATOR_PORT="9099"
VUE_APP_FUNCTIONS_EMULATOR_PORT="5002"
VUE_APP_STORAGE_EMULATOR_PORT="9199"
VUE_APP_DATABASE_EMULATOR_PORT="9000"These values define the host and ports used by the application to connect to local Firebase services. If your emulator configuration uses different ports, update the environment variables accordingly.
For installation and configuration instructions, refer to the Firebase Emulator Suite documentation.
RUXAILAB can connect to external services for eye tracking, sentiment analysis, PDF generation, and video-call functionality. These integrations may require separate repositories and services to be configured and running.
| Integration | Repository | Environment Variable |
|---|---|---|
| Eye tracking frontend | web-eye-tracker-front | VUE_APP_EYE_LAB_FRONTEND_URL |
| Eye tracking backend | eye-tracker-api | VUE_APP_EYE_LAB_BACKEND_URL |
| Speech-to-text sentiment analysis | sentiment-analysis-api | VUE_APP_TRANSCRIPTION_SENTIMENT_API_BASE_URL |
| Speech-to-text Transcriptions | transcription-api | VUE_APP_TRANSCRIPTION_API_BASE_URL |
| Facial sentiment analysis | facial-sentiment-analysis-api | VUE_APP_FACIAL_SENTIMENT_API_BASE_URL |
| PDF generation | laravel-pdf-generator | VUE_APP_LARAVEL_PDF |
| Video-call token server | video-call-server | VUE_APP_LIVEKIT_TOKEN_SERVER_URL |
The eye tracking integration uses a frontend application that serves as calibration tool and a backend API to process data.
Configure their URLs in .env:
VUE_APP_EYE_LAB_BACKEND_URL=
VUE_APP_EYE_LAB_FRONTEND_URL=For local development, the example values are:
VUE_APP_EYE_LAB_BACKEND_URL="http://127.0.0.1:3000"
VUE_APP_EYE_LAB_FRONTEND_URL="http://localhost:8080"Repositories:
Follow the setup instructions in each repository to run the services.
The transcription API provides the integration endpoint for speech-to-text functionality.
Configure the base URL:
VUE_APP_TRANSCRIPTION_API_BASE_URL=Repository: transcription-api.
The transcription and sentiment analysis API provides the integration endpoint for audio transcription and related sentiment analysis functionality.
Configure the base URL:
VUE_APP_TRANSCRIPTION_SENTIMENT_API_BASE_URL=Repository: sentiment-analysis-api.
The facial sentiment analysis integration uses a separate API from the transcription and sentiment analysis service.
Configure the base URL:
VUE_APP_FACIAL_SENTIMENT_API_BASE_URL=Set this variable to the URL of the facial sentiment analysis API in your environment.
Repository: facial-sentiment-analysis-api.
RUXAILAB supports an external Laravel-based PDF generation service.
Configure the relevant URL:
VUE_APP_LARAVEL_PDF=The example configuration in .env.example uses:
VUE_APP_LARAVEL_PDF=http://localhost:8000/apiRepository: laravel-pdf-generator.
RUXAILAB can use LiveKit for video-call functionality. The configuration includes the LiveKit server endpoint and a separate token server.
VUE_APP_LIVEKIT_ENABLED=true
VUE_APP_LIVEKIT_URL=ws://localhost:7880
VUE_APP_LIVEKIT_TOKEN_SERVER_URL=http://localhost:3001The variables serve different purposes:
VUE_APP_LIVEKIT_ENABLED: enables or disables the integration.VUE_APP_LIVEKIT_URL: specifies the LiveKit server endpoint.VUE_APP_LIVEKIT_TOKEN_SERVER_URL: specifies the URL of the service responsible for providing LiveKit tokens.
The LiveKit server and the token server are separate services. The video-call-server repository contains the token server implementation.
Repository: video-call-server.
- External integrations are optional unless a feature you intend to use depends on them.
- Configure only the services required for your development environment.
- Start each external service according to its repository instructions.
- Ensure the configured URLs are reachable from the application.
- Use the correct endpoints and ports for your environment.
- Do not commit secrets, private tokens, or production credentials to version control.
RUXAILAB uses Firebase Cloud Functions for server-side functionality.
If you need to work on the Cloud Functions, navigate to the directory containing the Functions project and follow its dependency and deployment instructions.
Common Firebase CLI commands include:
firebase emulators:start
firebase deploy --only functionsThe first command starts the configured local emulators. The second deploys Cloud Functions to the selected Firebase project.
Warning: Deploying functions can affect a shared or production environment. Verify the active Firebase project before deploying.
Cloud Functions have their own environment variables, configured separately from the frontend variables. The example configuration file is located at functions/.env.example.
Before running the functions locally, copy the example file to create your local environment configuration:
cp functions/.env.example functions/.env
Update functions/.env with the values required for your local development environment.
Important: Do not commit .env files containing private credentials, API keys, or other sensitive values to version control.
For additional information, see the Firebase Cloud Functions documentation.
The following commands are commonly used during development. Refer to the project's package.json for the definitive list of available scripts.
| Command | Description |
|---|---|
npm install |
Installs project dependencies. |
npm run serve |
Starts the local development server. |
npm run build-dev |
Builds the application using development mode. |
npm run build-prod |
Builds the application using production mode. |
npm run lint |
Runs the configured linting checks, if available. |
Contributions to RUXAILAB are welcome.
Before submitting a pull request:
- Fork the repository and create a feature branch.
- Install the dependencies and configure your development environment.
- Make your changes following the existing project conventions.
- Run the relevant tests and checks available for the project.
- Submit a pull request describing the changes and their purpose.
For larger changes, consider opening an issue first to discuss the proposed implementation.
See the repository's LICENSE file for the applicable license and terms of use.