← все pet-проекты

Обложка: Hello Kitty Метро

Hello Kitty Метро

Офлайн-PWA со схемой московского метро на Canvas

  • React 19
  • TypeScript
  • Canvas 2D
  • Go

Проблема

Хотелось карманную схему московского метро, которая работает полностью офлайн, открывается мгновенно — и выглядит не как все.

Решение

Офлайн-PWA в стиле Hello Kitty: схема рисуется на Canvas по предрассчитанным координатам, маршрут считается прямо на клиенте в Web Worker. Ни одного сетевого запроса после установки.

Самое интересное — layout

Ориентир качества схемы — Яндекс.Метро: октолинейная геометрия (все линии под углами, кратными 45°), выпуклые кольца, радиалы-хорды, слитые пересадочные хабы. Для этого написан собственный решатель на Go: он берёт сырой граф станций и раскладывает его в красивую октолинейную схему. Качество меряется автоматически — quality_report.json с проверкой регрессий в CI.

Как устроено

Стек

React 19, TypeScript, Vite 7, Canvas 2D, Go, Vitest, ESLint 9.