Skip to content

Producdevity/EmuReady

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎮 EmuReady

The Ultimate Emulation Compatibility Platform

Visit EmuReady Discord

CI/CD Status Deployed on Vercel License TypeScript

GitHub Stars GitHub Forks Contributors Open Issues

Next.js TypeScript Tailwind CSS Prisma

Repo Size Last Commit Commit Activity Release


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

   


Overview

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.

Key Features

🎮 Core Functionality

  • 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.)

👥 Community Features

  • 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

🛡️ Moderation & Security

  • 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

📱 Modern UX/UI

  • 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

🔧 Admin Dashboard

  • 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

🚀 Technical Features

  • 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

🏗️ Architecture & Tech Stack

Next.js
Next.js 15
App Router + Turbopack
TypeScript
TypeScript
Full-Stack Type Safety
PostgreSQL
PostgreSQL
with Prisma ORM
Tailwind CSS
Tailwind CSS v4
Custom Design System
tRPC
tRPC
Type-Safe APIs
Clerk
Clerk
Authentication & RBAC
React Query
React Query
State Management
Vercel
Vercel
Edge Deployment

Database Schema

Core Entities

  • 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

Compatibility Reports

  • 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

Community Features

  • 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

Moderation & Security

  • 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

Trust & Reputation

  • TrustActionLog: Comprehensive audit trail of all trust score changes
  • TrustActions: Automated trust adjustments based on user actions (upvotes, listings, etc.)

Permission System

  • Permissions: Granular permission definitions with categories (CONTENT, MODERATION, USER_MANAGEMENT, SYSTEM)
  • RolePermissions: Dynamic role-permission assignments
  • PermissionActionLog: Complete audit trail for permission changes

Notifications

  • 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

PC-Specific

  • Cpu/Gpu: Hardware component database with brands and models
  • UserPcPresets: Saved PC configurations for quick listing creation

Configuration

  • CustomFieldDefinitions: Dynamic form field definitions per emulator
  • CustomFieldTemplates: Reusable field configuration templates
  • CustomFieldTemplateFields: Template-to-field relationships

User Preferences

  • UserDevicePreferences: Saved device preferences for quick selection
  • UserSocPreferences: System-on-Chip preferences
  • PcListingNotificationPreferences: PC listing-specific notification settings

Key Features & Systems

SEO & Performance Optimization

  • 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

Key Systems

Reports & Moderation

  • 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

Trust System

  • Community-driven reputation scoring
  • Automated monthly bonuses for active users
  • Action-based trust adjustments (upvotes, listings, etc.)
  • Comprehensive audit logging

Custom Fields System

  • Emulator-specific dynamic fields (text, textarea, boolean, select, range)
  • Template system for reusable field configurations
  • Runtime validation and form generation

Permission System

  • Hierarchical role structure with cascading permissions
  • Dynamic permission assignment and revocation
  • Complete audit trail for security compliance

🚀 Quick Start

📋 Prerequisites
⚡ One-Line Setup
git clone https://github.com/Producdevity/emuready.git && cd emuready && npm install && cp .env.example .env
📝 Step-by-Step Installation

1. Clone the repository

git clone https://github.com/Producdevity/emuready.git
cd emuready

2. Install dependencies

npm install

3. Set up environment variables

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...

4. Set up the database

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

5. Run the development server

npm run dev

Available Scripts

Development

  • npm run dev - Start development server with Turbopack
  • npm run dev:strict - Start with React strict mode enabled
  • npm run build - Build for production
  • npm run start - Start production server

Code Quality

  • npm run lint - Run ESLint
  • npm run lint:fix - Fix linting issues automatically
  • npm run format - Format code with Prettier
  • npm run types - Check TypeScript types
  • npm run check - Run lint and typecheck together
  • npm run prepare-deploy - Full deployment prep (format, lint, typecheck, test, build)

Testing

  • npm run test - Run unit tests with Vitest
  • npm run test:watch - Run tests in watch mode
  • npm run test:ci - Run tests for CI
  • npm run test:e2e - Run Playwright end-to-end tests (in progress)

Database (Prisma)

  • npx prisma generate - Generate Prisma client
  • npx prisma db push - Push schema changes to database
  • npx prisma db seed - Seed database with sample data
  • npx prisma studio - Open Prisma Studio GUI
  • npx prisma migrate dev - Create and apply migration
  • npx prisma migrate deploy - Apply migrations in production

Bundle Analysis

  • npm run analyze - Analyze bundle size
  • npm run clean - Clean build cache

API Documentation

  • npm run docs:generate - Generate OpenAPI documentation for mobile endpoints
  • npm run docs:watch - Watch mobile router files and regenerate docs on changes

Development Tools & Guidelines

Code Quality Standards

  • 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)

Contributing

Refer to the CONTRIBUTING.md file for detailed development guidelines.

License

This project is licensed under the GPL-3.0-or-later License - see the LICENSE file for details.

License Change Notice

🛡️ 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.

Security

Security Features

  • 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

Reporting Vulnerabilities

If you discover a security vulnerability, please:

  1. Do not create a public issue
  2. Direct message one of the maintainers on Discord
  3. Follow responsible disclosure practices
  4. Allow time for fixes before public disclosure

Support

Acknowledgements

  • 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

📈 Project Status

🚀 Actively Maintained & Growing

Active Development PRs Welcome E2E Tests

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