cs-tool-dashboard
9
总安装量
9
周安装量
#31783
全站排名
安装命令
npx skills add https://github.com/supercent-io/skills-template --skill cs-tool-dashboard
Agent 安装分布
claude-code
8
codex
7
gemini-cli
7
clawdbot
6
windsurf
6
Skill 文档
CS Tool Dashboard Development Guide
Project Overview
ê²ì í´ë¼ì´ì¸í¸ â FAQ íì´ì§ â 문ì í¼ â ê´ë¦¬ì ëìë³´ë íë¦ì CS ìì¤í
Tech Stack
- Frontend: React/Next.js + TypeScript + Tailwind CSS
- Backend: Firebase Cloud Functions (Node.js)
- Database: Firestore
- Auth: Firebase Authentication
- Storage: Firebase Storage (첨ë¶íì¼)
- Email: SendGrid ëë Firebase Extensions
Core Features
1. User Side – FAQ Page
- ê²ìë³ FAQ ê²ì/íí°ë§
- ì¹´í ê³ ë¦¬ í (ìí ì¤í¬ë¡¤)
- ê²ì ê²°ê³¼ íì´ë¼ì´í¸
- 문ì íì´ì§ ì°ê²°
2. User Side – Contact Form
- ê³ì¸µí ì¹´í ê³ ë¦¬ ëë¡ë¤ì´ (ìµë 3ë¨ê³)
- íì íë: ì´ë©ì¼, OS, ê²ìë²ì , ì¹´í ê³ ë¦¬, ì¤ëª
- 첨ë¶íì¼ ì ë¡ë (ì´ë¯¸ì§/ìì, 5MB ì í)
- ê°ì¸ì ë³´ì²ë¦¬ë°©ì¹¨ ëì
3. Admin Side – Dashboard
- í°ì¼ 리ì¤í¸ (íí°, ì ë ¬, íì´ì§ë¤ì´ì )
- í°ì¼ ìì¸ (3-column ë ì´ìì)
- ëµë³ ìì± ë° ì´ë©ì¼ ë°ì¡
- í°ì¼ ìí ê´ë¦¬ (pending â in_progress â resolved â closed)
- ì¤ìê° ì ë°ì´í¸ (onSnapshot)
Data Models
FAQ Collection
interface FAQItem {
id: string;
gameId: string;
category: string;
question: string;
answer: string;
keywords: string[];
order: number;
isActive: boolean;
createdAt: Timestamp;
updatedAt: Timestamp;
}
Ticket Collection
interface Ticket {
id: string;
gameId: string;
email: string;
os: 'iOS' | 'Android';
gameVersion: string;
category: string;
subCategory: string;
subSubCategory?: string;
description: string;
attachments: string[];
status: 'pending' | 'in_progress' | 'resolved' | 'closed';
priority: 'low' | 'medium' | 'high';
assignee: string | null;
createdAt: Timestamp;
updatedAt: Timestamp;
history: TicketHistory[];
}
Category Hierarchy
const categories = {
account: {
label: 'ê³ì ',
subCategories: {
save: 'ê³ì ì ì¥',
profile: 'íë¡í ì¸ë¶ ì ë³´ ë³ê²½',
appeal: 'ì°¨ë¨/ì ì§ ì´ìì 기'
}
},
account_recovery: {
label: 'ê³ì 복구',
subCategories: {
restore: 'ê³ì ì 복구íë ¤ í©ëë¤',
security: 'ê³ì ì ë³´ì 문ì /í´í¹'
}
},
player_report: {
label: 'íë ì´ì´ ì ê³ ',
subCategories: {
cheating: 'ë¶ì íì',
harassment: 'ë¶ì ì í ì¸í/ê´´ë¡í',
inappropriate_name: 'ë¶ì ì í ì¬ì©ì ì´ë¦'
}
},
billing: {
label: 'ì²êµ¬ ë° ê²°ì ',
subCategories: {
gem_purchase: 'ë³´ì/ì½ì¸ 구매',
real_purchase: 'ì¤ì 구매',
refund: 'íë¶',
subscription: '구ë
ê´ë ¨ 문ì '
}
},
bug_report: {
label: 'ë²ê·¸ ì ê³ ',
subCategories: {
ads: 'ê´ê³ ',
events: 'ì´ë²¤í¸',
characters: 'ìºë¦í°',
chat: 'ì±í
',
items: 'ìì´í
/무기/ì
ê·¸ë ì´ë'
}
},
technical: {
label: '기ì 문ì ',
subCategories: {
crash: 'í¬ëì ëë ëê¹',
lag: 'ë íì ëë ì°ê²° í´ì '
},
// 3ë¨ê³: ë¹ë
frequency: ['ë¨ í ë²', 'ê°ë', 'ì주', 'íì']
}
};
Folder Structure
cs-tool-dashboard/
âââ apps/
â âââ web/ # FAQ + 문ì í¼ (Next.js)
â âââ admin/ # ê´ë¦¬ì ëìë³´ë (Next.js)
âââ packages/
â âââ ui/ # ê³µíµ ì»´í¬ëí¸
â âââ firebase-config/ # Firebase ì¤ì
â âââ types/ # ê³µì íì
âââ functions/ # Cloud Functions
âââ firebase.json
Instructions
When developing FAQ page:
- gameIdë¡ FAQ íí°ë§ 구í
- ê²ìì keywords ë°°ì´ + question íë ëì
- ì¹´í ê³ ë¦¬ íì ëì ì¼ë¡ Firestoreìì ë¡ë
- 모ë°ì¼ ì°ì ë°ìí ëìì¸
When developing Contact form:
- react-hook-form + zodë¡ ì í¨ì± ê²ì¦
- ì¹´í ê³ ë¦¬ ì íì íì ì¹´í ê³ ë¦¬ ëì ë ëë§
- íì¼ ì ë¡ëë Firebase Storage, 5MB ì í
- ì ì¶ ì Cloud Function í¸ì¶ â Firestore ì ì¥
When developing Admin dashboard:
- Firebase Authë¡ ê´ë¦¬ì ì¸ì¦ (role: ‘admin’)
- onSnapshotì¼ë¡ ì¤ìê° í°ì¼ 리ì¤í¸ ë기í
- ëµë³ ì ì¡ ì SendGridë¡ ì´ë©ì¼ ë°ì¡
- í°ì¼ ìí ë³ê²½ ì history ë°°ì´ì 기ë¡
Constraints
- TypeScript íì
- Firebase SDK v9+ (modular syntax)
- íêµì´ 주ì, ìì´ ì½ë
- 30+ ê²ì ì§ì (gameIdë¡ ë¶ê¸°)
- íì¥ì± ê³ ë ¤í ì¤ê³