New
Apps 1,334Makers 1,332This week 1,334
Promote your app−30%
Janggi AI screenshot 1
0views in
the last 30 days

Janggi AI

Play Korean chess (janggi) against AI at your level and analyse game records.

Built with Claude Code

by nakyung123 · Unclaimed · added Oct 29, 2026
no ratings0 comments

장기 AI

CI License

React TypeScript Vite Vitest WebAssembly

브라우저에서 장기 AI 와 대국하고, 끝난 판을 수마다 분석하는 웹 앱입니다. AI 엔진은 WebAssembly 로 브라우저 안에서 실행하며, 로그인한 사용자는 백엔드를 통해 기보를 서버에 저장할 수 있습니다. 운영 중입니다.

서비스 janggi-ai.vercel.app · 백엔드 저장소 janggi-backend

장기 AI 대국 화면

주요 기능

기능 하는 일
대국 18급부터 9단까지 27단계 중 상대를 고릅니다. 상차림 4가지, 규칙 3가지(표준 · 현대 · 전통), 시계(5분 + 초읽기 30초 3회)를 고를 수 있습니다
기보 끝난 판이 목록에 남습니다(최근 100판). 다시 열어 한 수씩 되짚고, 파일로 저장하거나 불러옵니다
복기 AI 가 판 전체를 다시 분석해 수마다 등급, 승률 변화, AI 가 고른 수를 보여 주고, 한 판의 정확도를 숫자 하나로 알려 줍니다
로그인 구글로 로그인하면 기보가 서버에도 저장되어 다른 기기에서 볼 수 있습니다

급수는 장기 급수의 이름을 빌린 이 앱 안의 단계입니다. 공인 급수가 아닙니다.

기술 구성

사용자 브라우저            React 화면 · WebAssembly AI 엔진
   │
   ▼
Vercel                     정적 파일 배포 · /api 요청 전달
   │
   ▼
Cloud Run                  Spring Boot API (janggi-backend)
   │
   ▼
Neon PostgreSQL            이벤트 · 계정 · 기보
  • 브라우저 안의 AI 엔진 - Fairy-Stockfish 에 장기 전용 NNUE 신경망을 얹어 WebAssembly 로 실행합니다. 그래서 백엔드가 멈춰도 대국과 복기는 됩니다. 로그인, 서버 기보 저장, 사용 기록 전송만 되지 않습니다.
  • 멀티스레드 실행 환경 - 엔진이 여러 스레드로 탐색하려면 SharedArrayBuffer 가 필요하고, 브라우저는 응답 헤더 두 개(Cross-Origin-Opener-Policy, Cross-Origin-Embedder-Policy)가 있어야 이를 허용합니다. 이 헤더를 vite.config.ts 와 vercel.json 에 넣었습니다.
  • 같은 출처로만 통신 - CSP 의 connect-src 'self' 로 브라우저가 이 사이트 주소로만 요청하게 막았습니다. 백엔드는 Vercel 이 /api 아래로 전달해 같은 출처로 부릅니다.

프로젝트 구조

janggi-frontend/
├── src/
│   ├── janggi/        장기 규칙 · 기보 · 복기 · 시계 (화면과 엔진을 모름)
│   ├── engine/        Fairy-Stockfish 실행 · 급수 표
│   ├── hooks/         규칙과 화면을 잇는 상태
│   ├── components/    화면 (board · play · games · layout · common)
│   ├── server/        백엔드 호출 (로그인 · 기보 올리기)
│   ├── report/        오류 · 제보 · 측정
│   └── updates/       업데이트 내역과 버전
├── public/            개인정보처리방침 · 소개 쪽 · 받은 엔진 파일
├── scripts/           엔진과 신경망 받기 · 엔진 점검
└── docs/images/       README 스크린샷

로컬 실행

Node.js 20.19 이상 또는 22.12 이상이 필요합니다(Vite 8 의 요구 사항).

git clone https://github.com/nakyung123/janggi-frontend.git
cd janggi-frontend
npm install
npm run dev             # http://localhost:5173

처음 실행할 때 엔진과 신경망을 public/engine/ 에 받습니다. 용량이 커서 저장소에는 넣지 않았습니다. 신경망 받기가 실패하면 https://fairy-stockfish.github.io/nnue/ 에서 janggi-9991472750de.nnue 를 받아 public/engine/ 에 넣습니다. 파일 이름은 바꾸지 않습니다.

npm test                # 테스트 (Vitest)
npm run build           # 프로덕션 빌드
npm run preview         # 빌드 결과를 응답 헤더까지 갖춰서 확인
npm run verify-engine   # 브라우저 없이 엔진만 점검

파일을 직접 열거나(file://) 응답 헤더를 지정할 수 없는 곳(GitHub Pages)에 올리면 엔진이 시작되지 않습니다. 개발 서버와 미리보기는 /api 요청을 localhost:8080 으로 넘깁니다. 백엔드를 띄우지 않아도 대국과 복기는 되고, 로그인과 기보 저장만 실패합니다.

관련 문서

문서 담은 것
DESIGN.md 화면 · 색 · 컴포넌트 규칙
NOTICE.md 제3자 저작물과 라이선스
개인정보처리방침 수집하는 정보, 보관 기간, 지우는 방법
janggi-backend 백엔드 저장소
이슈 버그 제보와 기능 제안

라이선스

GPL v3 이상. 전문은 LICENSE 에 있습니다.

src/janggi/glyphs.ts 의 기물 글자는 위키미디어 공용 그림의 2차적 저작물이라 CC BY-SA 3.0 을 따릅니다. 엔진 · 신경망 · 글꼴 · 아이콘의 출처와 라이선스는 NOTICE.md 에 있습니다.

Description taken from the repository README.

Ratings

–
0 ratings
5 0
4 0
3 0
2 0
1 0

Rate this app

Sign in to rate

Comments 0

Sign in to comment

No comments yet.

Related apps

#janggi · #board-game · #korean