Implement frontend and backend for Discord message reactions.
Requirements:
interface Reaction {
emoji: "👍" | "❤️" | "😂";
count: number;
hasUserReacted: boolean;
}
interface Message {
id: string;
content: string;
reactions: Reaction[];
}
Frontend Requirements:
1. UI Components
- Reaction display
- Toggle functionality
- Count visualization
- User reaction status
2. State Management
- Track reactions per message
- Handle optimistic updates
- Manage concurrent reactions
Backend Requirements:
1. API Design
```typescript
POST /api/messages/:messageId/reactions
{
emoji: string;
action: "add" | "remove";
}
GET /api/messages/:messageId/reactions
Response: Reaction[]
CREATE TABLE reactions (
message_id TEXT,
user_id TEXT,
emoji TEXT,
created_at TIMESTAMP,
PRIMARY KEY (message_id, user_id, emoji)
);
System Design Considerations:
Design a matchmaking system for online multiplayer games.
Core Components:
interface Player {
id: string;
skillRating: number;
region: string;
gamePreferences: GamePreferences;
}
interface MatchRequest {
player: Player;
maxWaitTime: number;
skillRange: number;
}
class MatchmakingSystem {
// Core functionality
queuePlayer(request: MatchRequest): void;
findMatch(player: Player): Player[];
updateSkillRating(player: Player, newRating: number): void;
}
Requirements:
Implementation Strategy: