Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DNA Local

Образовательный инструмент для локального анализа сырых ДНК-данных. Полностью клиентский — ничего не загружается на сервер.

Что это

Privacy-first веб-приложение: загружаете файл с результатами ДНК-теста (23andMe, AncestryDNA, MyHeritage), браузер анализирует его локально в Web Worker и показывает образовательные находки (спорт, метаболизм, фармакогенетика, клинические варианты со строгим режимом). Данные никуда не уходят.

Не является медицинским изделием. Только для образовательных целей.

Модель приватности

  • 100% клиентская обработка: файл читается через FileReader, анализируется в Web Worker — в UI передаются только матчи (ген, категория, текст), не сырые генотипы.
  • Ноль сторонних ресурсов: нет Google Fonts, CDN, аналитики. JSZip вендорится локально (app/vendor/).
  • Работает полностью офлайн после первой загрузки.
  • Строгий CSP: connect-src 'none' — сеть закрыта для страницы.
  • Никакого localStorage / sessionStorage / IndexedDB с ДНК.
  • Кнопка «Сбросить / очистить» завершает Worker и обнуляет DOM.

Детали и ограничения: docs/THREAT-MODEL.md.

Запуск локально

# Самый простой способ — Python (есть в macOS/Linux):
cd app/
python3 -m http.server 8080
# Открыть: http://localhost:8080

# Или через Node (если установлен):
npx serve app/

Прямое открытие app/index.html через file:// может не запустить Web Worker в Chrome (ограничение CORS для Workers на file://). Используйте локальный HTTP-сервер.

Развёртывание

Готовый конфиг nginx с hardened CSP: docs/nginx-dna.ykv.lv.conf.

Скопируйте содержимое app/ в директорию деплоя:

rsync -av app/ user@server:/home/user/deployments/dna-local/

Важно: в конфиге отключены access_log (посещения ДНК-инструмента — чувствительные метаданные).

Структура файлов

app/
  index.html          — единственная страница, CSP-совместимый HTML
  styles.css          — все стили (без внешних шрифтов)
  app.js              — UI-логика (consent gate, drag-drop, рендеринг)
  worker.js           — парсинг + анализ (весь доступ к генотипам здесь)
  data/
    panel.seed.json   — панель вариантов v0.1-seed (13 SNP + APOE combo)
  vendor/
    jszip.3.10.1.min.js  — вендоренная локально (без CDN)
data/
  panel.seed.json     — оригинал панели
docs/
  DISCLAIMER.md       — текст дисклеймеров (источник для UI)
  nginx-dna.ykv.lv.conf  — конфиг nginx
  THREAT-MODEL.md     — модель угроз

Поддерживаемые форматы

Провайдер Формат Колонки
23andMe TSV (с # заголовком) rsid chr pos genotype
AncestryDNA TSV rsid chr pos allele1 allele2
MyHeritage CSV (quoted) RSID,CHROMOSOME,POSITION,RESULT
Все .zip Внутри любой из форматов выше

Phase 1 (текущая)

  • 13 SNP панель (спорт, метаболизм, алкоголь, фармакогенетика, клинические) + APOE combo
  • Строгий режим для клинических вариантов: без match = "не оценивается" (не "норма")
  • Палиндромные SNP: показываются с предупреждением о неоднозначности цепи
  • Blocking consent gate с текстом из DISCLAIMER.md
  • Persistent disclaimer chip для каждой клинической строки

Phase 2 (запланировано)

  • Y-гаплогруппы и мтДНК гаплогруппы
  • Расширенная панель ~150 SNP
  • Подмножество ClinVar патогенных вариантов
  • Нормализация цепи по провайдеру (важно для палиндромных)
  • Сравнение с партнёром

Лицензия

MIT. Не является медицинским изделием.

About

Privacy-first, client-side DNA insights — your raw DNA file never leaves the browser. Educational, not medical.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages