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 emureadynpm installcp .env.example .envEdit 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 datanpm run dev6. 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





