{
  "schema": "tesign-radar/item/1",
  "generated_at": "2026-09-17T01:56:13.055Z",
  "lang": "ko",
  "slug": "halcyon-video",
  "url": "https://tesign.com/item/halcyon-video/",
  "alternates": {
    "ko": {
      "html": "https://tesign.com/item/halcyon-video/",
      "json": "https://tesign.com/item/halcyon-video/index.json",
      "markdown": "https://tesign.com/item/halcyon-video/index.md"
    },
    "en": {
      "html": "https://tesign.com/en/item/halcyon-video/",
      "json": "https://tesign.com/en/item/halcyon-video/index.json",
      "markdown": "https://tesign.com/en/item/halcyon-video/index.md"
    }
  },
  "name": "Halcyon Video",
  "use_label": "미디어 서버용 3D 대여점",
  "one_liner": "Jellyfin·Plex·Emby 서버(또는 OTT 목록)를 1990년대 비디오 대여점 3D 매장으로 바꿔, 걸어 다니며 영화를 고르게 하는 앱",
  "text": {
    "why": "영화 고르기가 포스터 목록을 끝없이 넘기는 일이 된 지 오래인데, Halcyon은 그 카탈로그를 '들어가서 구경하는 가게'로 바꿉니다. 라이브러리는 통로, 장르는 코너가 되고 케이스를 꺼내 뒷면을 읽고 카운터에서 대여하는 절차까지 재현하며, 키보드·게임패드·TV 리모컨·휴대폰으로 조작합니다. 공개 데모는 가입·미디어 서버·API 키 없이 바로 열리고, 로컬은 start.cmd/start.command/start.sh 한 번 또는 ghcr.io 도커 이미지로 띄웁니다.",
    "take": "영화 고르는 시간을 '목록 스크롤'에서 '가게 구경'으로 되돌리는, 한 사람이 만드는 취향 프로젝트입니다.",
    "build": [
      "거실 TV용 HTPC 키오스크(설치 스크립트 제공)나 라즈베리파이용 2.5D 모드 화면을 꾸릴 수 있고, 브랜드 에디터로 이름·색·엠블럼을 바꿔 '우리 집 비디오 가게'처럼 재도장할 수 있습니다."
    ],
    "who": [
      {
        "role": "Jellyfin·Plex·Emby 자체 호스팅 사용자",
        "situation": "거실 TV용 탐색 화면"
      },
      {
        "role": "HTPC·라즈베리파이 사용자",
        "situation": "키오스크 모드와 2.5D 모드"
      },
      {
        "role": "레트로 게임 수집가",
        "situation": "RomM 연동 게임 코너"
      }
    ],
    "start": [
      {
        "command": false,
        "text": "git clone https://github.com/halcyon-video/halcyon-video"
      },
      {
        "command": false,
        "text": "cd halcyon-video"
      },
      {
        "command": false,
        "text": "npm install"
      },
      {
        "command": false,
        "text": "npm run dev"
      },
      {
        "command": false,
        "text": "# 또는 Docker: docker run -d --name halcyon --network host --restart unless-stopped ghcr.io/halcyon-video/halcyon-video"
      }
    ],
    "caveat": [
      "라이선스 GPL-3.0. 공개 데모는 가입·서버·API 키 없이 열리지만 재생은 꺼져 있고, 개인 파일을 진열하려면 Jellyfin·Plex·Emby 중 하나가 필요합니다(폴더 스캐너 없음).",
      "브라우저에서 3D를 그리는데 렌더러가 기기 성능에 맞춰 규모를 줄이고, 저사양 기기는 2.5D 모드나 Remote Play를 쓸 수 있으며, 데스크톱 번들과 Apple TV 클라이언트는 미출시, Roku는 미지원입니다.",
      "1인 개발 프로젝트로 풀 리퀘스트를 받지 않으며(버그 리포트만), 선택형 후원(Ko-fi) 링크가 매장 안에 있습니다."
    ]
  },
  "cta": {
    "type": "try",
    "label": "TRY",
    "url": "https://halcyon-video.github.io/halcyon-video"
  },
  "ready": "browser",
  "categories": [
    "media"
  ],
  "categories_confirmed": true,
  "tags": [
    "jellyfin",
    "plex",
    "emby",
    "threejs",
    "retro",
    "self-hosted"
  ],
  "platform": [
    "web",
    "windows",
    "macos",
    "linux"
  ],
  "license": {
    "spdx": "GPL-3.0",
    "scope": "copyleft",
    "scope_text": "사용·수정은 자유. 배포하면 소스 공개 의무(카피레프트).",
    "url": "https://spdx.org/licenses/GPL-3.0.html",
    "note": null,
    "open_source": true
  },
  "language": "TypeScript",
  "source_urls": {
    "canonical": "https://halcyon-video.github.io/halcyon-video",
    "github": "https://github.com/halcyon-video/halcyon-video",
    "huggingface": null,
    "app_store": null,
    "sightings": [
      {
        "source": "github",
        "url": "https://github.com/halcyon-video/halcyon-video",
        "posted_at": "2026-09-04T15:00:00.000Z",
        "hn_url": null
      }
    ]
  },
  "numbers": {
    "as_of": "2026-09-16T21:00:00.000Z",
    "stars": 861,
    "stars_unit": "GitHub stars",
    "stars_checked_at": "2026-09-15T19:35:03.388Z",
    "stars_observed_since_check": 0,
    "star_delta_24h": null,
    "star_delta_7d": null,
    "star_delta_30d": 27,
    "star_delta_unit": "GitHub stars gained in the window, GH Archive events summed to as_of",
    "spark_14d": [
      null,
      6,
      9,
      12,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ],
    "hf_likes": null,
    "hf_likes_observed_at": null,
    "hn_points": null,
    "hn_points_observed_at": null,
    "store": null,
    "method": "별 총합 = GitHub에서 마지막으로 확인한 값(stars_checked_at) + 그 뒤 GH Archive에서 관측한 증가. 24h·7d·30d 증가는 GH Archive 시간별 이벤트를 기준 시각(as_of)까지 합한 값. 우리 점수는 없습니다."
  },
  "ranks": null,
  "activity": {
    "pushed_at": "2026-09-15T19:33:42.000Z",
    "owner_type": "Organization",
    "open_issues": 73,
    "contributors": 4,
    "releases_count": 48,
    "latest_release": {
      "tag": "v0.20.0",
      "published_at": "2026-09-15T19:21:49.000Z",
      "prerelease": false
    },
    "checked_at": "2026-09-15T19:35:03.388Z",
    "core_checked_at": "2026-09-15T19:35:03.388Z"
  },
  "signals": [
    {
      "kind": "back",
      "label": "과거 기록",
      "value": null
    }
  ],
  "images": {
    "og": "https://tesign.com/img/halcyon-video-7e3962be22.jpg",
    "cover": "https://tesign.com/img/halcyon-video-7e3962be22.jpg",
    "cover_width": 1920,
    "cover_height": 820,
    "gallery": [
      "https://tesign.com/img/halcyon-video-7e3962be22.jpg",
      "https://tesign.com/img/halcyon-video-053c1556a5.jpg",
      "https://tesign.com/img/halcyon-video-0953ac794f.jpg",
      "https://tesign.com/img/halcyon-video-76a6f9aa47.jpg"
    ],
    "alt": "Halcyon Video 매장 내부 3D 장면: 파란색·흰색 인테리어, 'MOVIES' 간판, 비디오 케이스가 가득한 선반, 'Previously Viewed' 진열대, 천장에 매달린 CRT TV",
    "tier": 2
  },
  "dates": {
    "first_seen_at": "2026-09-13T09:39:32.403Z",
    "source_created_at": "2026-08-03T22:26:10.000Z",
    "discovery_hours": 971.2228897222222,
    "launch_signal_at": "2026-09-04T15:00:00.000Z",
    "kept_at": "2026-09-14T19:27:43.628Z",
    "first_published_at": "2026-09-14T19:27:43.752Z",
    "updated_at": "2026-09-15T04:36:56.877Z",
    "ingestion_mode": "backfill"
  },
  "notes": [
    "이 파일은 tesign.com 항목 페이지와 같은 빌드에서 같은 데이터로 만들어졌습니다. 소개 글은 편집자가 쓴 것이고, 숫자는 저장된 관측값입니다.",
    "JSON의 null은 관측하지 않았다는 뜻입니다 — 0이 아닙니다. 마크다운에서는 [확인 필요]로 적습니다.",
    "별 총합 = GitHub에서 마지막으로 확인한 값(stars_checked_at) + 그 뒤 GH Archive에서 관측한 증가. 24h·7d·30d 증가는 GH Archive 시간별 이벤트를 기준 시각(as_of)까지 합한 값. 우리 점수는 없습니다.",
    "과거 데이터를 되짚어 채운 항목입니다. 라이브 발견이 아닙니다.",
    "요약이며 법적 조언이 아닙니다."
  ]
}
