The largest community-driven platform for tracking emulation compatibility across different devices and emulators. Built with primary focus on user experience, privacy, security, and performance.
Visit our website: https://emuready.com
Home Page Screenshot
Compatibility Listings Page Screenshot
Games Page Screenshot
EmuReady is a modern, full-stack web application that helps users share and discover emulation compatibility information across different hardware and software configurations. The platform features a comprehensive admin system, community moderation tools, and advanced filtering capabilities for emulation compatibility data.
- Compatibility Listings: Submit and browse game compatibility reports for specific device/emulator combinations
- Advanced Search & Filtering: Filter by system, device, emulator, performance, and custom criteria
- Performance Tracking: Standardized performance scales with visual indicators
- Community Voting: Upvote/downvote listings and comments for quality control
- Custom Fields: Dynamic emulator-specific fields (driver versions, settings, etc.)
- User Profiles: Track contributions, trust scores, badges, and listing history
- Comments System: Threaded discussions with nested replies and voting
- Trust System: Community-driven reputation scoring with automated monthly bonuses
- Verified Developers: Special status for emulator developers with domain verification
- Badge System: Achievement badges for milestones and contributions
- PC Listings: Separate compatibility reports for PC hardware configurations
- Notification System: Real-time notifications for comments, votes, and updates
- Multi-Level Admin System: Super Admin → Admin → Moderator → Developer → Author → User
- Reports System: Users can report inappropriate content with admin review workflow
- Shadow Banning: Hide content from banned users without notification
- Content Security: Input validation, sanitization, and CSP implementation
- Permission System: Dynamic role-based access control with audit logging
- Responsive Design: Optimized for mobile, tablet, and desktop with touch gestures
- Dark/Light/System Themes: Automatic and manual theme switching with persistence
- Progressive Web App: Installable with offline capabilities and service worker
- Virtual Scrolling: High-performance rendering for large datasets
- Modern Card Design: Glassmorphism effects, smooth animations, and micro-interactions
- Accessibility: ARIA labels, keyboard navigation, screen reader support
- Pull-to-Refresh: Mobile-native gesture for content updates
- Cookie Consent: GDPR-compliant cookie management with granular controls
- Swipeable Cards: Touch-friendly interface for mobile devices
- Comprehensive Management: Games, systems, devices, CPUs, GPUs, emulators, users, badges
- Approval Workflows: Review and approve/reject user-submitted content with override options
- Analytics & Reporting: Trust logs, permission logs, user statistics, SEO metrics
- Bulk Operations: Efficient management with confirmation dialogs for safety
- Real-time Monitoring: System performance, cache metrics, bundle sizes
- Reports Management: Review and act on user reports with filtering
- Ban Management: User bans with shadow banning and expiration dates
- Custom Fields: Dynamic field configuration per emulator
- Type-Safe APIs: Full-stack TypeScript with tRPC and Zod validation
- Real-time Updates: Live data synchronization with optimistic updates
- Image Optimization: Next.js Image with progressive loading and CDN integration
- Bundle Optimization: Dynamic imports, code splitting, and framer-motion wrapper
- SEO & Performance: Server-side rendering, metadata generation, and caching strategies
- Monitoring: Real-time SEO metrics, cache analytics, and performance tracking
- Testing Suite: Unit tests (Vitest) and E2E tests (Playwright - in progress)
- CI/CD Pipeline: Automated testing, linting, type checking, and Vercel deployment
- Users: Hierarchical role-based permissions (USER → AUTHOR → DEVELOPER → MODERATOR → ADMIN → SUPER_ADMIN), trust scoring, preferences, and activity tracking
- Games: Game catalog tied to Systems (consoles/platforms) with RAWG/TGDB API integration, approval workflow, and metadata
- Systems: Gaming platforms/consoles (e.g., Nintendo Switch, PlayStation, Xbox) with metadata and icons
- Devices: Mobile hardware specifications with brands, models, and System-on-Chip (SoC) information
- Emulators: Software emulators with custom field definitions, PC/mobile variants, and configuration templates
- Listings: Mobile device compatibility reports linking games, devices, and emulators with performance ratings
- PcListings: PC compatibility reports with CPU/GPU specifications and performance metrics
- CustomFieldValues: Dynamic field values for emulator-specific settings (drivers, configurations, etc.)
- PerformanceScale: Standardized performance rating system (1-5 scale) with visual indicators
- Comments: Threaded discussions on listings with nested replies
- Votes: Upvote/downvote system for listings and PC listings
- CommentVotes: Voting system for comment quality
- Badges: Achievement system for user contributions and milestones
- UserBadges: User-earned badges with timestamps
- ListingReports/PcListingReports: User reporting system for inappropriate content with categorized reasons
- UserBans: Ban management with shadow banning capabilities and expiration dates
- VerifiedDevelopers: Special status for emulator developers with domain verification
- DeveloperVerifications: Linking verified developers to their listings
- TrustActionLog: Comprehensive audit trail of all trust score changes
- TrustActions: Automated trust adjustments based on user actions (upvotes, listings, etc.)
- Permissions: Granular permission definitions with categories (CONTENT, MODERATION, USER_MANAGEMENT, SYSTEM)
- RolePermissions: Dynamic role-permission assignments
- PermissionActionLog: Complete audit trail for permission changes
- Notifications: In-app notification system with types and read status
- NotificationEvents: System-wide notification event definitions
- NotificationPreferences: User notification preferences by event type
- ListingNotificationPreferences: Granular notification settings per listing
- Cpu/Gpu: Hardware component database with brands and models
- UserPcPresets: Saved PC configurations for quick listing creation
- CustomFieldDefinitions: Dynamic form field definitions per emulator
- CustomFieldTemplates: Reusable field configuration templates
- CustomFieldTemplateFields: Template-to-field relationships
- UserDevicePreferences: Saved device preferences for quick selection
- UserSocPreferences: System-on-Chip preferences
- PcListingNotificationPreferences: PC listing-specific notification settings
- Server-side metadata generation with caching
- Dynamic sitemap generation for all public content
- Request deduplication to prevent duplicate database queries
- LRU cache with stale-while-revalidate strategy
- Performance monitoring and metrics tracking
- Bundle size optimization with dynamic imports
- User reporting with categorized reasons (spam, inappropriate content, etc.)
- Admin dashboard with filtering and bulk operations
- Shadow banning system
- Approval warnings for content from reported users
- Community-driven reputation scoring
- Automated monthly bonuses for active users
- Action-based trust adjustments (upvotes, listings, etc.)
- Comprehensive audit logging
- Emulator-specific dynamic fields (text, textarea, boolean, select, range)
- Template system for reusable field configurations
- Runtime validation and form generation
- Hierarchical role structure with cascading permissions
- Dynamic permission assignment and revocation
- Complete audit trail for security compliance
📋 Prerequisites
⚡ One-Line Setup
git clone https://github.com/Producdevity/emuready.git && cd emuready && npm install && cp .env.example .env
📝 Step-by-Step Installation
git clone https://github.com/Producdevity/emuready.git
cd emuready
npm install
cp .env.example .env
Edit the .env
file with your database credentials and configuration:
# Database
DATABASE_URL="postgresql://user:password@localhost:5432/emuready"
# Authentication (Clerk)
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="your_clerk_key"
CLERK_SECRET_KEY="your_clerk_secret"
# External APIs
RAWG_API_KEY="your_rawg_api_key"
TGDB_API_KEY="your_thegamesdb_api_key"
# Other configuration...
npx prisma generate
npm run db:migrate:dev # For development with migrations
# OR
npm run db:push # For quick schema sync without migrations
npm run db:seed # Optional: Seed with sample data
npm run dev
6. Open http://localhost:3000
npm run dev
- Start development server with Turbopacknpm run dev:strict
- Start with React strict mode enablednpm run build
- Build for productionnpm run start
- Start production server
npm run lint
- Run ESLintnpm run lint:fix
- Fix linting issues automaticallynpm run format
- Format code with Prettiernpm run types
- Check TypeScript typesnpm run check
- Run lint and typecheck togethernpm run prepare-deploy
- Full deployment prep (format, lint, typecheck, test, build)
npm run test
- Run unit tests with Vitestnpm run test:watch
- Run tests in watch modenpm run test:ci
- Run tests for CInpm run test:e2e
- Run Playwright end-to-end tests (in progress)
npx prisma generate
- Generate Prisma clientnpx prisma db push
- Push schema changes to databasenpx prisma db seed
- Seed database with sample datanpx prisma studio
- Open Prisma Studio GUInpx prisma migrate dev
- Create and apply migrationnpx prisma migrate deploy
- Apply migrations in production
npm run analyze
- Analyze bundle sizenpm run clean
- Clean build cache
npm run docs:generate
- Generate OpenAPI documentation for mobile endpointsnpm run docs:watch
- Watch mobile router files and regenerate docs on changes
- TypeScript: Strict mode
- ESLint: Enforced code standards
- Prettier: Consistent code formatting
- Husky: Pre-commit hooks for quality checks
- Testing: Vitest for unit tests, Playwright for E2E tests (in progress)
Refer to the CONTRIBUTING.md file for detailed development guidelines.
This project is licensed under the GPL-3.0-or-later License - see the LICENSE file for details.
🛡️ License Change: As of June 18, 2024, EmuReady transitioned from MIT License to GNU General Public License v3.0 or later (GPL-3.0-or-later). This ensures the software remains free and open-source while preventing proprietary commercial reuse.
- Content Security Policy (CSP): Strict CSP headers preventing XSS attacks
- Input Validation: Zod schemas for all user inputs
- SQL Injection Protection: Prisma ORM with parameterized queries
- Authentication: Clerk with secure session management
- Rate Limiting: API endpoint protection
- Shadow Banning: Discreet user moderation
- HTML Escaping: Prevention of XSS in user-generated content
If you discover a security vulnerability, please:
- Do not create a public issue
- Direct message one of the maintainers on Discord
- Follow responsible disclosure practices
- Allow time for fixes before public disclosure
- GitHub Issues: Report bugs and feature requests
- Discord: Join our community
- Discussions: GitHub Discussions
- Contributors: All our amazing contributors
- Emulation Community: For inspiration, feedback, and support
- Open Source Projects: The fantastic tools and libraries that make this possible
- RAWG API & The Games DB: For comprehensive game database integration
EmuReady is actively maintained and continuously improved with new features, performance optimizations, and community-driven enhancements.
📋 Check the Release Notes for detailed changelogs
🗺️ View our Roadmap for upcoming features
💬 Join the discussion in our Discord Community
Made with ❤️ by the EmuReady Team and Contributors
Built with modern web technologies and a passion for emulation preservation