Dugout Value
Baseball research on pitching, hitting, and projections, plus tools for comparing players, contracts, and trade value.
Turn your running GPX tracks into artwork, display them in a gallery, and share.
AI translation
러닝 GPX 기록의 선을 내 작품으로 만들어 작품방에 전시하고 공유해요.
Sports & fitnessTypeScript · HTMLGitHub @Frogrammer-devOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
드로잉 런을 위한 플랫포
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
요런 — 내 주변 길에서 찾는 드로잉 러닝 지도에 보이는 동네의 실제 길만 따라 한 번에 달릴 수 있는 그림 코스(하트·별·고양이 등)를 찾아 주고, GPS로 코스를 안내하며 기록한 뒤, 달린 선을 작품방에 걸어 보관·공유하는 러닝 웹 앱(PWA)입니다. 러닝 아트 프로그램 설계 명세서 v1.0 기준으로 보면, 15절 ‘장기 경로 생성’을 시제품으로 구현해 앱의 중심 기능으로 두었고, P0(GPX → 작품 → 작품방 → 저장·공유)는 그대로 이어 붙였습니다. • 위치(GPS)는 보안 연결(HTTPS) 또는 localhost에서만 동작합니다. 휴대폰에서 시험하려면 HTTPS로 배포하거나 npx next dev --experimental-https를 쓰세요. • 홈 화면에 추가하면 앱처럼 열립니다 (/manifest.webmanifest, 시작 주소 /routes). • Supabase 환경변수가 없어도 코스 찾기·달리기·임시 작품방·PNG는 동작합니다. 로그인 저장·공유는 아래 설정이 필요합니다.Read the full README ↗
지도에 보이는 동네의 실제 길만 따라 한 번에 달릴 수 있는 그림 코스(하트·별·고양이 등)를 찾아 주고, GPS로 코스를 안내하며 기록한 뒤, 달린 선을 작품방에 걸어 보관·공유하는 러닝 웹 앱(PWA)입니다.
지도에서 동네 맞추기 → 그림·거리 선택 → 코스 찾기 → 코스 골라 달리기(GPS 안내·기록) → 작품방에 걸기 → PNG/공유
러닝 아트 프로그램 설계 명세서 v1.0 기준으로 보면, 15절 ‘장기 경로 생성’을 시제품으로 구현해 앱의 중심 기능으로 두었고,
P0(GPX → 작품 → 작품방 → 저장·공유)는 그대로 이어 붙였습니다.
npm install
npm run dev # http://localhost:3000 → /routes 에서 코스 찾기
npx next dev --experimental-https를 쓰세요./manifest.webmanifest, 시작 주소 /routes).supabase/migrations/0001_init.sql을 Supabase 프로젝트에서 실행합니다.http://localhost:3000/auth/callback(및 배포 주소)을 추가하고 이메일 로그인 링크 수신을 시험합니다..env.example을 .env.local로 복사해 채웁니다. SUPABASE_SERVICE_ROLE_KEY는 서버의 공유 조회에서만 씁니다.src/lib/route/)osm.ts).
고속도로·자동차 전용·보행 금지·사유지는 제외, 계단은 옵션으로 제외, 큰길은 비용을 높여 덜 선호합니다.graph.ts).fit.ts).바탕 지도는 OpenFreeMap 벡터 지도(무료, API 키·가입 불필요, OpenStreetMap 데이터)를 MapLibre로 그립니다. 코스 찾기 화면은 글자·아이콘·건물을 뺀 단순 지도, 달리기 화면은 한국어 지명을 우선 표시하는 기본 지도(3D 건물 제외)입니다. 벡터 지도는 WebGL이 필요하며, 못 그리는 기기에서는 안내만 띄우고 코스 찾기·달리기는 그대로 동작합니다.
npm run eval:quality)실제 OSM 데이터 3개 지역(부산 광안리·서면, 서울 강남, 각 약 2.53km 영역) × 9개 그림, 38km 조건. 알고리즘 자체 점수와 별개로 잰 값입니다.
| 지표 | 처음 버전 | 현재 (큰길 위주) |
|---|---|---|
| 막대·가시 (코스당) | 2.04개 | 0.04개 |
| 그림과 무관한 급회전 (1km당) | 8.7회 | 5.3회 |
| 특징점(귀·꼭짓점) 보존 | 94% | 100% |
| 모양 이탈 95% 값 (모양 크기 대비) | 3.6% | 4.9% |
잔길을 빼서 선이 깔끔해지는 대신 모양에서 조금 더 벗어납니다(마지막 행). 바둑판 도로가 많은 동네(강남)에서 가장 잘 나오고, 길이 불규칙한 동네(광안리·서면)에서는 고양이 귀처럼 작은 특징이 약해집니다.
측정하려면 Overpass에서 받은 JSON(busan.json, seomyeon.json, gangnam.json)을 한 폴더에 두고 EVAL_DIR=<폴더> npm run eval:quality를 실행합니다.
그림: 하트 · 별 · 동그라미 · 네모 · 세모 · 다이아몬드 · 고양이 · 물고기 · 번개 (shapes.ts에 단위 좌표 외곽선을 추가하면 늘어납니다).
/run, src/lib/run/tracker.ts)npm run lab -- all --run experiment-01 --limit 24 --channel msedge로 동일 후보의 이진·회색 입력 비교와 블라인드 사람 평가 화면을 만듭니다. 결과는 eval/recognition/experiment-01/에 저장합니다. 선택형 SigLIP 2·CLIP 및 서버 VLM 실행, 평가 JSON 집계는 실험실 사용법을 참고하세요. 기본 실행은 외부 AI를 호출하지 않습니다.
푸시·PR마다 GitHub Actions가 타입 검사 → lint → 단위·품질 회귀 테스트 → 빌드 → 브라우저 E2E를 돌립니다. 층별 설명·원칙·명령은 docs/testing.md에 있습니다.
| 명령 | 내용 |
|---|---|
npm run typecheck · npm run lint | TypeScript 7 타입 검사 · ESLint (next core-web-vitals + typescript) |
npm test | 단위 테스트 (알고리즘·파서·계약·외부 서버 주고받기(MSW)·화면 조각·탐색 결정성) + 코스 품질 기준선 |
npm run test:quality | 고정한 실제 지도(강남 2곳)에서 코스 품질이 기준선보다 나빠지지 않았는지 (:update로 기준선 갱신) |
npm run test:e2e | Playwright: 작품방·코스 찾기·달리기·화면 이동 회귀·360px (외부 서버는 가짜 응답, 서버는 자동 기동) |
npm run test:e2e:live | 실제 바탕 지도 서버가 키 없이 뜨는지 (CI 제외) |
npm run test:db | DB 마이그레이션(RLS·RPC·권한) — PGlite |
npm run eval:make-set · npm run eval:calibrate | 사람 판정으로 점수 등급 기준선 보정 |
실제 부산 수영·광안리 일대(약 2.5km 영역, OSM 4,151 노드) 측정: 9개 그림 전체 탐색 1.4~4초(헤드리스 Edge), 모든 그림에서 연결된 닫힌 코스(유사도 8188, 3.16.2km, 같은 길 반복 0~0.6%).
src/lib/route/ osm(Overpass 질의·필터) · graph(투영·CSR 그래프·공간 색인·A*) · shapes · fit(탐색) · finder.worker
src/lib/run/ tracker(진행 추적·방향 안내·기록 필터·GPX) · storage(기기 보관)
src/components/ map/useLeafletMap · route/RouteFinderApp · run/RunApp · room/* · SceneSvg · ImportPanel
src/app/ / · /routes · /run · /room · /share/[token] · /api/* · manifest
src/lib/(gpx|art|contracts|room|render|draft|server) GPX → 작품 → 작품방 (명세 P0)
supabase/ 마이그레이션 + DB 검증 스크립트
e2e/ Playwright 테스트(specs·fixtures) + 수동 디자인 캡처 도구(tools)
tests/ 단위·화면 조각·품질 기준선 테스트, 공용 가짜 응답(mocks), 고정 지도 데이터(fixtures)
public/vendor/로 복사해 앱이 직접 제공합니다. npm install·npm run dev·npm run build 때 자동으로 복사됩니다 (scripts/copy-maplibre-worker.mjs).한국 길 데이터 설치·갱신 및 배포 방법: docs/local-roads.md.