Back to battles
easyupcoming

Emoji Picker

Searchable emoji picker with categories, skin tones, and recent usage.

20 min limit0 participants
javascriptcsshtml
PRD
# Emoji Picker PRD

## Overview
Build a searchable emoji picker component with category organization, skin tone selection, recently and frequently used sections, and keyboard navigation.

## Requirements
- Display emojis organized by category (smileys, animals, food, activities, travel, objects, symbols, flags)
- Search emojis by name or keyword with real-time filtering
- Skin tone selector with 6 skin tone options applied to supported emojis
- Recently used section displayed as the top row (last 20 emojis used)
- Frequently used section showing most-clicked emojis
- Click an emoji to copy it to clipboard
- Hover preview showing the emoji at larger size with its name
- Virtual scrolling for performance when rendering hundreds of emojis
- Category tabs with representative icons for quick navigation
- Keyboard navigation: arrow keys to move between emojis, Enter to select and copy
- Responsive grid layout that adapts to container width
- Favorites list: right-click or long-press to add/remove from favorites
- Multiple size options for the emoji grid (small, medium, large)
- Tooltip showing the emoji shortcode (e.g., :smile:, :wave:)
- Persist recently used and favorites to localStorage

## Tech Stack
- HTML, CSS, JavaScript (vanilla or any framework)
- Include a built-in emoji dataset (name, category, codepoint, keywords)

## Scoring Criteria
- **Functional (40%)**: Emoji display works, search works, categories work, copy to clipboard works
- **Quality (20%)**: Smooth scrolling performance, responsive grid, clean code
- **Fidelity (25%)**: All features present including skin tones, keyboard nav, favorites, virtual scroll
- **Speed (15%)**: Time bonus

Battle Stats

Time Limit20 min
Participants0
Statusupcoming

Rules

  • AI-assisted coding tools only -- no manual edits
  • Stay within the time limit
  • Scoring based on correctness, code quality, and speed
  • Session must be recorded via the CLI