RU EN

proteinanalyse

Дневник разработки

О проекте

Изначальная мысль была довольно утилитарной: сделать что-то маленькое, понятное и сразу полезное в биоинформатике. Набор простых инструментов, которые можно реально использовать — GC-калькулятор, реверс-комплемент, ORF-поиск, перевод ДНК в белок, расчёт массы белка и т.д. Такие инструменты уже есть, но часто они сделаны лет десять назад, выглядят тяжело и местами неудобны. Захотелось сделать что-то лёгкое, быстрое и чистое, что просто работает в браузере.

Появилось ощущение, что можно собрать аудиторию биологов и студентов, если дать им бесплатные и удобные инструменты. Это «входная точка»: и если сайт помогает, то может сформироваться пул пользователей, которые уже привыкли к стилю.

Читать далее

Текущая реализация на: https://proteinanalysis.pages.dev

Оглавление

Изначальная концепция (MVP)

Что было

Первоначальная задача - создать простой одностраничный анализатор последовательностей.

Решение

Создан index.html с базовым функционалом:

  • Автоопределение типа последовательности (DNA/Protein)
  • Базовый анализ для обоих типов
  • Минималистичный дизайн

Плюсы

  • Быстрая реализация
  • Простота использования
  • Один файл - легко деплоить

Минусы

  • Ограниченные SEO возможности (только одна страница)
  • Нет специализированных инструментов
  • Сложно ранжироваться по разным ключевым словам

Подводные камни

  • Одна страница = один набор ключевых слов
  • Сложно конкурировать с более специализированными инструментами

Что сделано

  • Создан index.html с базовым функционалом
  • Реализовано автоопределение типа последовательности
  • Добавлен базовый анализ для DNA и Protein последовательностей
← Предыдущий этап: Изначальная концепция (MVP)

Переход к мультистраничной архитектуре

Что было

Осознание, что для SEO нужны отдельные страницы под разные ключевые слова.

Решение

Разбить функционал на 6 специализированных страниц:

  • /index.html - главная страница (общий анализатор)
  • /dna-gc-calculator.html - GC калькулятор
  • /reverse-complement.html - обратная комплементарная последовательность
  • /orf-finder.html - поиск ORF
  • /protein-mw-calculator.html - молекулярная масса белка
  • /sequence-translation.html - трансляция ДНК

Почему такое решение

  • Каждая страница оптимизирована под конкретные ключевые слова
  • Пользователи ищут конкретные инструменты ("GC calculator", "ORF finder")
  • Больше страниц = больше возможностей для ранжирования
  • Внутренние ссылки улучшают SEO

Плюсы

  • ✅ Лучшее SEO покрытие (6 страниц вместо 1)
  • ✅ Специализация под конкретные запросы
  • ✅ Внутренняя перелинковка
  • ✅ Пользователи находят именно то, что ищут

Минусы

  • ❌ Больше файлов для поддержки
  • ❌ Дублирование кода (если не использовать общие компоненты)

Подводные камни

  • Нужно было решить проблему дублирования кода
  • Важно было сохранить единообразие дизайна

Что сделано

  • Создано 6 специализированных страниц
  • Настроена навигация между страницами
Навигационное меню между страницами (RU)
Навигационное меню между страницами (RU)

Что было

Код дублировался между страницами (функции для GC%, reverse complement, translation и т.д.)

Решение

Создан common.js с общими функциями:

  • cleanSequence() - очистка последовательности
  • computeGC() - расчет GC%
  • reverseComplement() - обратная комплементарная последовательность
  • translateDNA() - трансляция ДНК
  • findORF() - поиск ORF
  • computeMW() - молекулярная масса
  • И другие...

Почему такое решение

  • DRY принцип (Don't Repeat Yourself)
  • Легче поддерживать - изменения в одном месте
  • Меньше размер кода
  • Единообразие результатов

Плюсы

  • ✅ Нет дублирования кода
  • ✅ Легкая поддержка
  • ✅ Единообразие функций
  • ✅ Можно переиспользовать в будущем

Минусы

  • ❌ Все страницы зависят от одного файла
  • ❌ Нужно загружать common.js даже если используется одна функция

Подводные камни

  • Важно было не перегрузить common.js лишним кодом
  • Нужно было сохранить совместимость между страницами

Что сделано

  • Создан common.js с общими функциями
  • Все страницы используют общую библиотеку
  • Устранено дублирование кода между страницами

Что было

Каждая страница могла иметь свой стиль, не было навигации между страницами.

Решение

  • Создан единый styles.css для всех страниц
  • Добавлена функция getNavigation() в common.js
  • Навигационное меню на каждой странице

Почему такое решение

  • Единообразный дизайн = профессиональный вид
  • Навигация улучшает UX и SEO (внутренние ссылки)
  • Пользователи могут легко переключаться между инструментами

Плюсы

  • ✅ Профессиональный внешний вид
  • ✅ Улучшенная навигация
  • ✅ Внутренние ссылки для SEO
  • ✅ Лучший UX

Минусы

  • ❌ Если нужно изменить дизайн - меняем везде
  • ❌ Навигация добавляет немного HTML на каждую страницу

Подводные камни

  • Нужно было сделать навигацию адаптивной для мобильных
  • Важно было не перегрузить страницы лишними элементами

Что сделано

  • Создан единый styles.css для всех страниц
  • Добавлена функция getNavigation() в common.js
  • Навигационное меню на каждой странице
Навигационное меню на странице (RU)
Навигационное меню на странице (RU)
← Предыдущий этап: Единый стиль и навигация

SEO оптимизация каждой страницы

Что было

Страницы были функциональными, но не оптимизированы для поисковых систем.

Решение

Для каждой страницы добавлено:

  • Уникальный <title> с ключевыми словами
  • <h1> с основным ключевым словом
  • Meta description и keywords
  • 150-200 слов SEO текста с синонимами и внутренними ссылками
  • Schema markup (JSON-LD)

Почему такое решение

  • Каждая страница должна ранжироваться по своим ключевым словам
  • SEO текст показывает релевантность страницы
  • Внутренние ссылки распределяют "вес" между страницами
  • Schema markup помогает поисковикам понять структуру

Плюсы

  • ✅ Лучшее ранжирование в поисковиках
  • ✅ Каждая страница оптимизирована под свои запросы
  • ✅ Больше возможностей для органического трафика
  • ✅ Профессиональный подход к SEO

Минусы

  • ❌ Больше текста на странице (но это хорошо для SEO)
  • ❌ Нужно поддерживать актуальность SEO текстов

Подводные камни

  • Важно было не переоптимизировать (keyword stuffing)
  • SEO текст должен быть естественным и полезным
  • Нужно было балансировать между SEO и UX

Что сделано

  • Добавлены уникальные <title> и <h1> для каждой страницы
  • Добавлены meta description и keywords
  • Добавлено 150-200 слов SEO текста на каждой странице
  • Добавлен Schema markup (JSON-LD) для лучшего понимания структуры поисковиками
← Предыдущий этап: SEO оптимизация каждой страницы

Добавление примеров последовательностей

Что было

Пользователям нужно было вводить последовательности вручную, чтобы понять, как работает инструмент.

Решение

На каждой странице добавлена кнопка "Load Example" с предустановленными примерами:

  • Sequence Analyzer (index.html):
  • DNA пример: ATGCGTACCTGACTGGAAGGCTTACGATGCTTGAAGACCTGA
  • Protein пример: MKTFFVAGLVLAGALAAPALA
  • GC Calculator: GCGGATCCGTCGATGCGGCCGTTAGCGCGATCATGGCCGCA
  • Reverse Complement: ATGACCGTAAGCTTGGATCCGATTAAGC
  • ORF Finder: ATGAAACGTTTGACCTGAAGGTTCTACTGGAATAG
  • Protein MW Calculator: MQDRVKRPMNAFIVWSRDQRRKMALEN
  • DNA Translation: ATGGCTTCTGACCTGAAGGACATCGTGAACTGG

Почему такое решение

  • Пользователи могут сразу увидеть, как работает инструмент
  • Не нужно искать тестовые последовательности
  • Улучшает UX и снижает барьер входа

Плюсы

  • ✅ Улучшенный UX
  • ✅ Быстрое понимание функционала
  • ✅ Нет необходимости искать примеры

Минусы

  • ❌ Немного больше кода на каждой странице

Подводные камни

  • Важно было выбрать репрезентативные примеры
  • Примеры должны демонстрировать ключевой функционал каждой страницы

Что сделано

  • Добавлена кнопка "Load Example" на каждой странице
  • Подобраны репрезентативные примеры для каждого инструмента
Главная страница с примером анализа ДНК (RU)
Главная страница с примером анализа ДНК (RU)
GC калькулятор с примером последовательности (RU)
GC калькулятор с примером последовательности (RU)
Reverse complement с примером (RU)
Reverse complement с примером (RU)
ORF finder с найденным ORF (RU)
ORF finder с найденным ORF (RU)
Protein MW калькулятор с примером (RU)
Protein MW калькулятор с примером (RU)
DNA translation с примером трансляции (RU)
DNA translation с примером трансляции (RU)
← Предыдущий этап: Добавление примеров последовательностей

Добавление новых инструментов и улучшение навигации

Что было

Сайт имел 6 страниц, но для увеличения органического трафика нужно было добавить больше специализированных инструментов. Навигация с 11 кнопками была перегружена.

Решение

  • Добавлено 5 новых специализированных страниц:
  • Codon Usage Calculator - анализ частоты использования кодонов
  • FASTA Validator - валидация формата FASTA файлов
  • RNA to Protein Translator - перевод RNA последовательностей в белки
  • Peptide Length Calculator - расчет длины пептидов
  • Amino Acid Composition Tool - анализ состава аминокислот
  • Улучшена навигация:
  • Основные 6 инструментов остались в главной навигации
  • Дополнительные 5 инструментов вынесены в выпадающее меню "More Tools"
  • Добавлена поддержка touch-устройств для мобильных

Почему такое решение

  • Больше страниц = больше возможностей для ранжирования в поисковиках
  • Каждая новая страница оптимизирована под свои ключевые слова
  • Компактная навигация улучшает UX
  • Выпадающее меню позволяет сохранить чистый интерфейс

Плюсы

  • ✅ Увеличено количество страниц с 6 до 11 (+83%)
  • ✅ Каждая страница имеет уникальные SEO-мета и тексты
  • ✅ Компактная навигация не перегружает интерфейс
  • ✅ Все инструменты остаются доступны
  • ✅ Улучшенная поддержка мобильных устройств

Минусы

  • ❌ Больше страниц для поддержки
  • ❌ Нужно обновлять sitemap при добавлении новых страниц

Подводные камни

  • Важно было сохранить единообразие дизайна на всех новых страницах
  • Выпадающее меню должно работать на всех устройствах (десктоп и мобильные)
  • Нужно было решить проблему с закрытием меню при перемещении курсора

Что сделано

  • Создано 5 новых HTML страниц с полным функционалом
  • Добавлены примеры последовательностей на каждую страницу
  • Обновлена навигация в common.js с выпадающим меню
  • Добавлены CSS стили для dropdown меню
  • Реализована поддержка touch-устройств
  • Обновлен sitemap.xml (теперь 11 страниц)
  • Все новые страницы добавлены в Google Search Console verification