dashboard/frontend/src/data/services.js

132 lines
2.9 KiB
JavaScript

import {
Terminal,
Wrench,
Database,
HardDrive,
Server,
Download,
GitBranch,
Zap,
Monitor,
FolderCode,
Sparkles,
KeyRound,
} from "lucide-react";
/**
* 서비스 카테고리 설정
* 대시보드에 표시될 서비스들을 카테고리별로 그룹화합니다.
*/
export const serviceCategories = [
{
id: "infrastructure",
title: "인프라 관리",
icon: Monitor,
services: [
{
id: "portainer",
title: "Portainer",
desc: "Docker 컨테이너 관리",
icon: Database,
url: "https://portainer.caadiq.co.kr",
},
{
id: "dozzle",
title: "Dozzle",
desc: "실시간 로그 뷰어",
icon: Terminal,
url: "https://dozzle.caadiq.co.kr",
},
],
},
{
id: "data-storage",
title: "데이터 & 저장소",
icon: Database,
services: [
{
id: "cloudbeaver",
title: "CloudBeaver",
desc: "데이터베이스 관리",
icon: Database,
url: "https://cloudbeaver.caadiq.co.kr",
},
{
id: "rustfs",
title: "RustFS",
desc: "S3 호환 스토리지",
icon: HardDrive,
url: "https://rustfs.caadiq.co.kr",
},
{
id: "vaultwarden",
title: "Vaultwarden",
desc: "비밀번호 관리",
icon: KeyRound,
url: "https://vaultwarden.caadiq.co.kr",
},
],
},
{
id: "development",
title: "개발 도구",
icon: FolderCode,
services: [
{
id: "forgejo",
title: "Forgejo",
desc: "Git 저장소 관리",
icon: GitBranch,
url: "https://forgejo.caadiq.co.kr",
},
{
id: "jenkins",
title: "Jenkins",
desc: "CI/CD 파이프라인",
icon: Server,
url: "https://jenkins.caadiq.co.kr/login",
},
{
id: "hoppscotch",
title: "Hoppscotch",
desc: "API 테스트 도구",
icon: Zap,
url: "https://hoppscotch.caadiq.co.kr",
},
],
},
{
id: "productivity",
title: "생산성 & 유틸리티",
icon: Sparkles,
services: [
{
id: "it-tools",
title: "IT-Tools",
desc: "개발자 도구 모음",
icon: Wrench,
url: "https://it-tools.caadiq.co.kr",
},
{
id: "ffmpeg-downloader",
title: "FFmpeg Downloader",
desc: "동영상 다운로드 도구",
icon: Download,
url: "https://ffmpeg.caadiq.co.kr",
},
],
},
];
/**
* 기존 호환성을 위한 평면 서비스 목록
* 백엔드 상태 체크 등에서 사용됩니다.
*/
export const serviceList = serviceCategories.flatMap(
(category) => category.services,
);
// 각 카테고리 내 서비스들을 title 기준 알파벳순으로 자동 정렬
serviceCategories.forEach((category) => {
category.services.sort((a, b) => a.title.localeCompare(b.title));
});