{{- /* 1. Host & Production Environment Guard */ -}} {{- $host := "score-board.nemo.zone" -}} {{- if and .Req .Req.Host -}} {{- $host = lower .Req.Host -}} {{- else if .Host -}} {{- $host = lower .Host -}} {{- end -}} {{- $isProdHost := or (eq $host "score-board.nemo.zone") (and (hasSuffix ".nemo.zone" $host) (not (contains ".dev." $host))) -}} {{- /* 2. Path & Query Parsing */ -}} {{- $reqPath := "/" -}} {{- $rawQuery := "" -}} {{- if and .Req .Req.URL -}} {{- $reqPath = .Req.URL.Path -}} {{- $rawQuery = lower .Req.URL.RawQuery -}} {{- end -}} {{- /* 3. Language Resolution: explicit ?hl= first, then Accept-Language, default ko for bots */ -}} {{- $hlParam := "" -}} {{- if or (contains "hl=ko" $rawQuery) (contains "lang=ko" $rawQuery) -}} {{- $hlParam = "ko" -}} {{- else if or (contains "hl=ja" $rawQuery) (contains "lang=ja" $rawQuery) -}} {{- $hlParam = "ja" -}} {{- else if or (contains "hl=en" $rawQuery) (contains "lang=en" $rawQuery) -}} {{- $hlParam = "en" -}} {{- end -}} {{- $acceptLang := "" -}} {{- if and .Req .Req.Header -}} {{- $acceptLang = lower (.Req.Header.Get "Accept-Language") -}} {{- end -}} {{- $isJa := or (eq $hlParam "ja") (and (eq $hlParam "") (hasPrefix "ja" $acceptLang)) -}} {{- $isEn := or (eq $hlParam "en") (and (eq $hlParam "") (not $isJa) (not (contains "ko" $acceptLang)) (ne $acceptLang "")) -}} {{- $isKo := and (not $isJa) (not $isEn) -}} {{- /* 4. Sport Preset Parsing (All 19 creatable sports) */ -}} {{- $preset := "" -}} {{- if eq $reqPath "/create" -}} {{- if contains "preset=tennis" $rawQuery -}}{{- $preset = "tennis" -}} {{- else if contains "preset=badminton" $rawQuery -}}{{- $preset = "badminton" -}} {{- else if or (contains "preset=table_tennis" $rawQuery) (contains "preset=tabletennis" $rawQuery) -}}{{- $preset = "table_tennis" -}} {{- else if contains "preset=pickleball" $rawQuery -}}{{- $preset = "pickleball" -}} {{- else if contains "preset=basketball" $rawQuery -}}{{- $preset = "basketball" -}} {{- else if contains "preset=soccer" $rawQuery -}}{{- $preset = "soccer" -}} {{- else if contains "preset=handball" $rawQuery -}}{{- $preset = "handball" -}} {{- else if contains "preset=volleyball" $rawQuery -}}{{- $preset = "volleyball" -}} {{- else if contains "preset=baseball" $rawQuery -}}{{- $preset = "baseball" -}} {{- else if or (contains "preset=ice_hockey" $rawQuery) (contains "preset=icehockey" $rawQuery) -}}{{- $preset = "ice_hockey" -}} {{- else if contains "preset=rugby" $rawQuery -}}{{- $preset = "rugby" -}} {{- else if or (contains "preset=american_football" $rawQuery) (contains "preset=americanfootball" $rawQuery) -}}{{- $preset = "american_football" -}} {{- else if contains "preset=lacrosse" $rawQuery -}}{{- $preset = "lacrosse" -}} {{- else if contains "preset=billiards" $rawQuery -}}{{- $preset = "billiards" -}} {{- else if contains "preset=darts" $rawQuery -}}{{- $preset = "darts" -}} {{- else if or (contains "preset=board_game" $rawQuery) (contains "preset=boardgame" $rawQuery) -}}{{- $preset = "board_game" -}} {{- else if or (contains "preset=party_quiz" $rawQuery) (contains "preset=partyquiz" $rawQuery) -}}{{- $preset = "party_quiz" -}} {{- else if or (contains "preset=chess_clock" $rawQuery) (contains "preset=chessclock" $rawQuery) -}}{{- $preset = "chess_clock" -}} {{- else if or (contains "preset=generic_counter" $rawQuery) (contains "preset=genericcounter" $rawQuery) -}}{{- $preset = "generic_counter" -}} {{- end -}} {{- end -}} {{- /* 5. Canonical & Alternate URLs */ -}} {{- $canonicalPath := "/" -}} {{- if and (eq $reqPath "/create") (ne $preset "") -}} {{- $canonicalPath = printf "/create?preset=%s" $preset -}} {{- else if eq $reqPath "/create" -}} {{- $canonicalPath = "/create" -}} {{- end -}} {{- $baseCanonicalUrl := printf "https://score-board.nemo.zone%s" $canonicalPath -}} {{- $hasQuery := ne $preset "" -}} {{- $enAlternateUrl := printf "%s?hl=en" $baseCanonicalUrl -}} {{- $jaAlternateUrl := printf "%s?hl=ja" $baseCanonicalUrl -}} {{- if $hasQuery -}} {{- $enAlternateUrl = printf "%s&hl=en" $baseCanonicalUrl -}} {{- $jaAlternateUrl = printf "%s&hl=ja" $baseCanonicalUrl -}} {{- end -}} {{- $canonicalUrl := $baseCanonicalUrl -}} {{- if eq $hlParam "en" -}} {{- $canonicalUrl = $enAlternateUrl -}} {{- else if eq $hlParam "ja" -}} {{- $canonicalUrl = $jaAlternateUrl -}} {{- end -}} {{- $isPublicPage := and $isProdHost (or (eq $reqPath "/") (eq $reqPath "/index.html") (eq $reqPath "/create")) (not (contains "code=" $rawQuery)) (not (contains "id=" $rawQuery)) -}} {{- $pageTitle := "점수판 | 함께 보고 기록하는 점수판" -}} {{- $pageDesc := "운동이나 게임할 때, 손가락 터치로 점수를 올리고 친구들과 편하게 공유해보세요." -}} {{- if $isKo -}} {{- if eq $preset "tennis" -}} {{- $pageTitle = "테니스 점수판 만들기 | 점수판" -}} {{- $pageDesc = "15-30-40 점수, 듀스, 세트제 및 타이브레이크 자동 룰을 지원하는 무료 실시간 테니스 전자 점수판입니다." -}} {{- else if eq $preset "badminton" -}} {{- $pageTitle = "배드민턴 점수판 만들기 | 점수판" -}} {{- $pageDesc = "21점 랠리포인트, 연장 듀스, 세트 자동 전환 및 서브권을 지원하는 무료 실시간 배드민턴 전자 점수판입니다." -}} {{- else if eq $preset "table_tennis" -}} {{- $pageTitle = "탁구 점수판 만들기 | 점수판" -}} {{- $pageDesc = "11점 세트제, 2점 차 듀스, 2점 서브권 전환 룰을 지원하는 무료 실시간 탁구 전자 점수판입니다." -}} {{- else if eq $preset "pickleball" -}} {{- $pageTitle = "피클볼 점수판 만들기 | 점수판" -}} {{- $pageDesc = "11점 2점 차, 3게임 2선승 랠리 및 사이드아웃 규칙을 지원하는 무료 실시간 피클볼 전자 점수판입니다." -}} {{- else if eq $preset "basketball" -}} {{- $pageTitle = "농구 점수판 만들기 | 점수판" -}} {{- $pageDesc = "쿼터제 타이머, 24초 샷클락, 팀 파울과 타임아웃을 지원하는 무료 실시간 농구 전자 점수판입니다." -}} {{- else if eq $preset "soccer" -}} {{- $pageTitle = "축구·풋살 점수판 만들기 | 점수판" -}} {{- $pageDesc = "전후반 러닝타임 타이머와 골 카운트를 지원하는 무료 실시간 축구 전자 점수판입니다." -}} {{- else if eq $preset "handball" -}} {{- $pageTitle = "핸드볼 점수판 만들기 | 점수판" -}} {{- $pageDesc = "전·후반 30분 타이머와 2분 퇴장 페널티 기록을 지원하는 무료 실시간 핸드볼 전자 점수판입니다." -}} {{- else if eq $preset "volleyball" -}} {{- $pageTitle = "배구·족구 점수판 만들기 | 점수판" -}} {{- $pageDesc = "25점 5세트 랠리포인트와 듀스 규칙을 지원하는 무료 실시간 배구·족구 전자 점수판입니다." -}} {{- else if eq $preset "baseball" -}} {{- $pageTitle = "야구·소프트볼 점수판 만들기 | 점수판" -}} {{- $pageDesc = "9이닝 볼·스트라이크·아웃 카운트와 베이스 주자 표시를 지원하는 무료 실시간 야구 전광판입니다." -}} {{- else if eq $preset "ice_hockey" -}} {{- $pageTitle = "아이스하키 점수판 만들기 | 점수판" -}} {{- $pageDesc = "3피리어드 20분 타이머와 페널티 박스 기록을 지원하는 무료 실시간 아이스하키 점수판입니다." -}} {{- else if eq $preset "rugby" -}} {{- $pageTitle = "럭비 점수판 만들기 | 점수판" -}} {{- $pageDesc = "전·후반 40분 타이머와 트라이·컨버전·페널티 득점 규칙을 지원하는 무료 실시간 럭비 점수판입니다." -}} {{- else if eq $preset "american_football" -}} {{- $pageTitle = "미식축구 점수판 만들기 | 점수판" -}} {{- $pageDesc = "4쿼터 15분 타이머와 40초 플레이 클락, 터치다운·필드골 득점을 지원하는 무료 미식축구 점수판입니다." -}} {{- else if eq $preset "lacrosse" -}} {{- $pageTitle = "라크로스 점수판 만들기 | 점수판" -}} {{- $pageDesc = "4쿼터 15분 타이머와 80초 샷클락을 지원하는 무료 실시간 라크로스 전자 점수판입니다." -}} {{- else if eq $preset "billiards" -}} {{- $pageTitle = "당구 점수판 만들기 | 점수판" -}} {{- $pageDesc = "3쿠션·4구 목표 점수 설정, 이닝별 득점 및 초시계(초읽기)를 지원하는 무료 실시간 당구 점수판입니다." -}} {{- else if eq $preset "darts" -}} {{- $pageTitle = "다트 점수판 만들기 | 점수판" -}} {{- $pageDesc = "501·301 카운트다운 및 크리켓 룰, 레그·세트 자동 판정을 지원하는 무료 실시간 다트 점수판입니다." -}} {{- else if eq $preset "board_game" -}} {{- $pageTitle = "보드게임 점수판 만들기 | 점수판" -}} {{- $pageDesc = "2~4인 이상 다자간 턴제 점수 기록과 라운드 집계를 지원하는 무료 보드게임 점수판입니다." -}} {{- else if eq $preset "party_quiz" -}} {{- $pageTitle = "파티·퀴즈 점수판 만들기 | 점수판" -}} {{- $pageDesc = "레크리에이션, 팀 대항 퀴즈 대회에서 여러 팀의 점수를 실시간으로 올리고 공유하는 점수판입니다." -}} {{- else if eq $preset "chess_clock" -}} {{- $pageTitle = "체스 클록·대국 시계 만들기 | 점수판" -}} {{- $pageDesc = "체스, 바둑, 장기 대국을 위한 블리츠·래피드 턴제 타이머 및 피셔 초읽기 시계입니다." -}} {{- else if eq $preset "generic_counter" -}} {{- $pageTitle = "다목적 카운터·점수판 만들기 | 점수판" -}} {{- $pageDesc = "운동, 게임, 인원 계수 등 어떤 상황에서든 터치로 간편하게 숫자를 세고 공유하는 카운터입니다." -}} {{- else if eq $reqPath "/create" -}} {{- $pageTitle = "새 점수판 만들기 | 점수판" -}} {{- $pageDesc = "종목별 맞춤 규칙과 19가지 스포츠 프리셋으로 새 점수판을 무료로 만들어보세요." -}} {{- end -}} {{- else if $isJa -}} {{- if eq $preset "tennis" -}} {{- $pageTitle = "テニススコアボードの作成 | スコアボード" -}} {{- $pageDesc = "15-30-40カウント、デュース、タイブレークルールに対応したリアルタイム電子スコアボード。" -}} {{- else if eq $preset "badminton" -}} {{- $pageTitle = "バドミントンスコアボードの作成 | スコアボード" -}} {{- $pageDesc = "21点ラリーポイント、延長デュース、サーブ権表示に対応したリアルタイム電子スコアボード。" -}} {{- else if eq $preset "table_tennis" -}} {{- $pageTitle = "卓球スコアボードの作成 | スコアボード" -}} {{- $pageDesc = "11点制マッチ、デュース、2点サーブ権交代ルールに対応したリアルタイム電子スコアボード。" -}} {{- else if eq $preset "pickleball" -}} {{- $pageTitle = "ピックルボールスコアボードの作成 | スコアボード" -}} {{- $pageDesc = "11点先取、2点差デュース、サイドアウトルールに対応したリアルタイム電子ピクルボールスコアボード。" -}} {{- else if eq $preset "basketball" -}} {{- $pageTitle = "バスケットボールスコアボードの作成 | スコアボード" -}} {{- $pageDesc = "クォータータイマー、24秒ショットクロック、チームファウルに対応した電子スコアボード。" -}} {{- else if eq $preset "soccer" -}} {{- $pageTitle = "サッカー・フットサルスコアボードの作成 | スコアボード" -}} {{- $pageDesc = "前後半タイマーとゴールカウントに対応したリアルタイムサッカースコアボード。" -}} {{- else if eq $preset "handball" -}} {{- $pageTitle = "ハンドボールスコアボードの作成 | スコアボード" -}} {{- $pageDesc = "前後半30分タイマーと2分間退場ペナルティ記録に対応したリアルタイムハンドボールスコアボード。" -}} {{- else if eq $preset "volleyball" -}} {{- $pageTitle = "バレーボールスコアボードの作成 | スコアボード" -}} {{- $pageDesc = "25点ラリーポイントとデュースルールに対応したリアルタイムバレーボールスコアボード。" -}} {{- else if eq $preset "baseball" -}} {{- $pageTitle = "野球・ソフトボールスコアボードの作成 | スコアボード" -}} {{- $pageDesc = "9イニングBSOカウントとランナー表示に対応したリアルタイム野球スコアボード。" -}} {{- else if eq $preset "ice_hockey" -}} {{- $pageTitle = "アイスホッケースコアボードの作成 | スコアボード" -}} {{- $pageDesc = "3ピリオド20分タイマーとペナルティ時間管理に対応したアイスホッケースコアボード。" -}} {{- else if eq $preset "rugby" -}} {{- $pageTitle = "ラグビースコアボードの作成 | スコアボード" -}} {{- $pageDesc = "前後半40分タイマーとトライ・コンバージョン・ペナルティ得点に対応したラグビースコアボード。" -}} {{- else if eq $preset "american_football" -}} {{- $pageTitle = "アメリカンフットボールスコアボードの作成 | スコアボード" -}} {{- $pageDesc = "4クォーター制タイマー、プレイクロック、タッチダウン得点に対応したアメフトスコアボード。" -}} {{- else if eq $preset "lacrosse" -}} {{- $pageTitle = "ラクロススコアボードの作成 | スコアボード" -}} {{- $pageDesc = "4クォーター制タイマーとショットクロックに対応したラクロススコアボード。" -}} {{- else if eq $preset "billiards" -}} {{- $pageTitle = "ビリヤードスコアボードの作成 | スコアボード" -}} {{- $pageDesc = "3クッション・4ツ玉目標点数、イニング別スコアとショットクロックに対応したビリヤードスコアボード。" -}} {{- else if eq $preset "darts" -}} {{- $pageTitle = "ダーツスコアボードの作成 | スコアボード" -}} {{- $pageDesc = "01ゲーム(501/301)とクリケットルール、レグ・セット管理に対応したリアルタイムダーツスコアボード。" -}} {{- else if eq $preset "board_game" -}} {{- $pageTitle = "ボードゲームスコアボードの作成 | スコアボード" -}} {{- $pageDesc = "複数人のターン制スコア記録とラウンド集計に対応したボードゲームスコアボード。" -}} {{- else if eq $preset "party_quiz" -}} {{- $pageTitle = "パーティー・クイズスコアボードの作成 | スコアボード" -}} {{- $pageDesc = "レクリエーションやチーム対抗クイズ大会のリアルタイム得点共有スコアボード。" -}} {{- else if eq $preset "chess_clock" -}} {{- $pageTitle = "チェスクロック・対局時計の作成 | スコアボード" -}} {{- $pageDesc = "チェス・将棋・囲碁の対局に使えるフィッシャー方式対応のデジタル対局時計。" -}} {{- else if eq $preset "generic_counter" -}} {{- $pageTitle = "汎用カウンター・スコアボードの作成 | スコアボード" -}} {{- $pageDesc = "スポーツ、ゲーム、人数カウントなどタップで手軽に記録・共有できる汎用カウンター。" -}} {{- else if eq $reqPath "/create" -}} {{- $pageTitle = "新規スコアボードの作成 | スコアボード" -}} {{- $pageDesc = "19種類の競技プリセットと種目別ルールで新しいスコアボードを無料作成。" -}} {{- else -}} {{- $pageTitle = "スコアボード | みんなで見て記録するスコアボード" -}} {{- $pageDesc = "運動やゲームのとき、指のタップで点数を加算し、友だちと気軽に共有しましょう。" -}} {{- end -}} {{- else -}} {{- if eq $preset "tennis" -}} {{- $pageTitle = "Create Tennis Score Board | Score Board" -}} {{- $pageDesc = "Keep tennis score with 15-30-40, deuce, advantage, and tiebreak rules on a free real-time digital scoreboard." -}} {{- else if eq $preset "badminton" -}} {{- $pageTitle = "Create Badminton Score Board | Score Board" -}} {{- $pageDesc = "Real-time badminton scoreboard with 21-point rally scoring, deuce, and serve indicators." -}} {{- else if eq $preset "table_tennis" -}} {{- $pageTitle = "Create Table Tennis Score Board | Score Board" -}} {{- $pageDesc = "Official 11-point table tennis scorekeeper with deuce and alternating serve tracking." -}} {{- else if eq $preset "pickleball" -}} {{- $pageTitle = "Create Pickleball Score Board | Score Board" -}} {{- $pageDesc = "Free real-time pickleball digital scoreboard supporting 11-point side-out and rally scoring rules." -}} {{- else if eq $preset "basketball" -}} {{- $pageTitle = "Create Basketball Score Board | Score Board" -}} {{- $pageDesc = "Digital basketball scorekeeper with quarter timer, 24-second shot clock, and team fouls." -}} {{- else if eq $preset "soccer" -}} {{- $pageTitle = "Create Soccer Score Board | Score Board" -}} {{- $pageDesc = "Running timer and goal counter for soccer and futsal matches." -}} {{- else if eq $preset "handball" -}} {{- $pageTitle = "Create Handball Score Board | Score Board" -}} {{- $pageDesc = "Free real-time handball scoreboard with halves timer and 2-minute penalty tracking." -}} {{- else if eq $preset "volleyball" -}} {{- $pageTitle = "Create Volleyball Score Board | Score Board" -}} {{- $pageDesc = "25-point rally scoring with deuce and sets support for volleyball and footvolley." -}} {{- else if eq $preset "baseball" -}} {{- $pageTitle = "Create Baseball Score Board | Score Board" -}} {{- $pageDesc = "9-inning scoreboard with BSO count, outs, and base runner indicators for baseball and softball." -}} {{- else if eq $preset "ice_hockey" -}} {{- $pageTitle = "Create Ice Hockey Score Board | Score Board" -}} {{- $pageDesc = "3-period hockey timer, goal tracking, and penalty box management." -}} {{- else if eq $preset "rugby" -}} {{- $pageTitle = "Create Rugby Score Board | Score Board" -}} {{- $pageDesc = "Halves timer with try, conversion, penalty, and drop goal scoring for rugby union and league." -}} {{- else if eq $preset "american_football" -}} {{- $pageTitle = "Create American Football Score Board | Score Board" -}} {{- $pageDesc = "Quarter clock, play clock, down and distance, and football scoring." -}} {{- else if eq $preset "lacrosse" -}} {{- $pageTitle = "Create Lacrosse Score Board | Score Board" -}} {{- $pageDesc = "Quarter timer, shot clock, and penalty timer for men's and women's lacrosse." -}} {{- else if eq $preset "billiards" -}} {{- $pageTitle = "Create Billiards Score Board | Score Board" -}} {{- $pageDesc = "Target score, innings, and shot clock timer for 3-cushion, 4-ball, and pocket billiards." -}} {{- else if eq $preset "darts" -}} {{- $pageTitle = "Create Darts Score Board | Score Board" -}} {{- $pageDesc = "X01 countdown (501/301), Cricket, and leg/set tracking for steel and soft tip darts." -}} {{- else if eq $preset "board_game" -}} {{- $pageTitle = "Create Board Game Scorekeeper | Score Board" -}} {{- $pageDesc = "Multiplayer turn-based score tracking and round calculator for tabletop board games." -}} {{- else if eq $preset "party_quiz" -}} {{- $pageTitle = "Create Party & Quiz Score Board | Score Board" -}} {{- $pageDesc = "Real-time multi-team scoreboard for trivia contests, game nights, and party events." -}} {{- else if eq $preset "chess_clock" -}} {{- $pageTitle = "Create Chess Clock & Game Timer | Score Board" -}} {{- $pageDesc = "Digital chess timer with Fischer increments for blitz, rapid chess, Go, and board games." -}} {{- else if eq $preset "generic_counter" -}} {{- $pageTitle = "Create Generic Counter & Scorekeeper | Score Board" -}} {{- $pageDesc = "Versatile tap counter and tally scorekeeper for games, workouts, and attendance." -}} {{- else if eq $reqPath "/create" -}} {{- $pageTitle = "Create New Score Board | Score Board" -}} {{- $pageDesc = "Create a free digital scoreboard with 19 sport presets and custom game rules." -}} {{- else -}} {{- $pageTitle = "Score Board | Easy scorekeeper for games" -}} {{- $pageDesc = "Keep score easily with simple taps and share with friends." -}} {{- end -}} {{- end -}} {{$pageTitle}} {{- if $isPublicPage -}} {{- else -}} {{- end -}}
{{- if $isKo }}

Nemo Score Board · 실시간 디지털 점수판

종목별 맞춤 점수 규칙, 보기 모드, 스마트폰 원격 제어 모드 및 실시간 동기화를 지원하는 무료 전자 점수판입니다.

지원 종목 프리셋 바로 만들기

NEMO 홈으로 이동

{{- else if $isJa }}

Nemo Score Board · リアルタイム電子スコアボード

種目別スコアルール、表示ビュー、スマホリモコン操作をサポートする無料Webスコアボード。

対応競技プリセット

NEMOホームへ

{{- else }}

Nemo Score Board · Real-time Digital Scorekeeper

Free online scoreboard supporting tennis, badminton, table tennis, basketball, soccer, and volleyball with mobile remote control and full-screen display view.

Create Sport Score Board

NEMO Home Hub

{{- end }}
Score Board
{{- if $isKo -}}불러오는 중...{{- else if $isJa -}}読み込み中...{{- else -}}Loading...{{- end -}}