Thank you for your interest in contributing to RUXAILAB! This document provides guidelines and instructions for contributing to this open-source usability testing platform.
- Code of Conduct
- Getting Started
- Development Setup
- Contribution Workflow
- Code Standards
- Testing
- Reporting Issues
We are committed to providing a welcoming and inclusive environment for all contributors. Please be respectful and constructive in all interactions.
RUXAILAB is a Vue.js-based platform for usability testing and heuristic evaluation. Before contributing, familiarize yourself with:
- Node.js ≤ 24.12.0
- Python 3.11.8
- npm (comes with Node.js)
- Docker (optional, for Firebase Emulators)
This approach runs the entire application with Firebase emulators in Docker containers.
-
Clone the repository
git clone https://github.com/uramakilab/remote-usability-lab.git cd remote-usability-lab -
Set up environment variables
cp .env.example .env
Update
.envwith the following for local emulator development:DEBUG=true PORT=8000 VUE_APP_FIREBASE_API_KEY=YOUR_API_KEY VUE_APP_FIREBASE_AUTH_DOMAIN=YOUR_PROJECT_ID.firebaseapp.com VUE_APP_FIREBASE_STORAGE_BUCKET=YOUR_PROJECT_ID.appspot.com VUE_APP_FIREBASE_DB_URL=http://localhost:9000 VUE_APP_FIREBASE_PROJECT_ID=YOUR_PROJECT_ID VUE_APP_FIREBASE_MESSAGING_SENDER_ID=YOUR_SENDER_ID VUE_APP_FIREBASE_APP_ID=YOUR_APP_ID VUE_APP_I18N_LOCALE=en VUE_APP_I18N_FALLBACK_LOCALE=en
-
Build and run with Docker
docker compose build docker compose up
-
Access the application
- Application: http://localhost:8080
- Firebase Emulator UI: http://localhost:4000
For development with a real Firebase project:
-
Clone and install dependencies
git clone https://github.com/uramakilab/remote-usability-lab.git cd remote-usability-lab npm install -
Create Firebase project
- Go to Firebase Console
- Create a new project
- Enable Realtime Database, Firestore, Authentication, and Storage
-
Configure environment
- Get your Firebase config from Project Settings
- Copy
.env.exampleto.env - Fill in your Firebase credentials
-
Run development server
npm run serve
Fork the repository and clone your fork:
git clone https://github.com/YOUR_USERNAME/remote-usability-lab.git
cd remote-usability-labBranch from develop:
git checkout develop
git pull origin develop
git checkout -b feature/your-feature-nameBranch naming conventions:
feature/- New featuresfix/- Bug fixesdocs/- Documentation updatesrefactor/- Code refactoringtest/- Adding or updating tests
- Write clean, readable code
- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
Use clear, descriptive commit messages:
git add .
git commit -m "feat: add user profile customization"Commit message format:
feat:- New featurefix:- Bug fixdocs:- Documentation changesstyle:- Formatting, missing semicolons, etc.refactor:- Code restructuringtest:- Adding testschore:- Maintenance tasks
git push origin feature/your-feature-nameThen create a Pull Request on GitHub:
- Target the
developbranch - Provide a clear description of your changes
- Reference any related issues
- Wait for review and address any feedback
We use Prettier for code formatting. Configuration is in .prettierrc.
# Format all files
npm run format
# Check formatting
npm run format:checkWe use ESLint for code quality. Configuration is in eslint.config.mjs.
# Run linter
npm run lint
# Auto-fix issues
npm run lint:fix- Use Composition API for new components
- Follow Vue 3 style guide
- Use Vuetify components consistently
- Keep components small and focused
- Use proper prop validation
src/
├── app/
│ ├── components/ # Reusable components
│ ├── plugins/ # Vue plugins (Firebase, etc.)
│ ├── router/ # Vue Router configuration
│ └── views/ # Page components
├── features/ # Feature-specific modules
├── shared/ # Shared utilities and constants
└── store/ # State management
# Run all tests
npm run test:unit
# Run tests in watch mode
npm run test:unit:watch
# Run with coverage
npm run test:unit:coverage# Run E2E tests
npm run test:e2e
# Run in headed mode (see browser)
npm run test:e2e:headed- Write unit tests for utility functions and components
- Write E2E tests for critical user flows
- Aim for good coverage without over-testing
- Keep tests maintainable and readable
When reporting bugs, please include:
- Clear title describing the issue
- Steps to reproduce the bug
- Expected behavior vs actual behavior
- Environment details (OS, browser, Node version)
- Screenshots if applicable
- Error messages or console logs
Use the Bug Report template
For feature requests, include:
- Use case - Why is this feature needed?
- Proposed solution - How should it work?
- Alternatives considered - Other approaches you've thought about
Use the Feature Request template
For questions or general discussion, use GitHub Discussions.
- README.md - Project overview and setup
- Vue.js Documentation
- Vuetify Documentation
- Firebase Documentation
- Video Tutorial - Running RUXAILAB with Firebase Emulators
- General Questions: GitHub Discussions
- Bug Reports: GitHub Issues
- Security Issues: Contact the maintainers privately
Thank you for contributing to RUXAILAB! 🎉