IgraSU.ru — история
Проект начался не с бизнес-плана и не с названия, а с пустого репозитория и одного файла README. Первый коммит — 1 июля 2026 года, 21:35. К 29 октября 2026 года в репозитории больше 6400 коммитов, 936 каталогов игр с index.html, 920 статей блога по-русски и 818 по-английски, больше 560 скриптов и 700 файлов тестов. Ниже — хроника по датам, которые можно проверить в git, и по цифрам, которые видно на сайте.
Три даты, с которых считается проект
Про первую выкладку честно: отдельного коммита «выложено на прод» не существует — деплой его не оставляет. Дата восстанавливается по косвенным уликам. В 22:56 — правка «отдавать статику игр без обёртки шапки и подвала»; в 23:10 — снятие чужой авторизации VK и Яндекса из одной игры; в 23:13 — «игра не стартует на тач-экране». Все три видны только тогда, когда страница открыта в браузере, а не в редакторе. В 23:19 появляется deploy.sh — пакетная загрузка index.php, .htaccess, config.php, style.css, шаблонов, игр и SQL на хостинг. Дальше сомнений не остаётся: сайт жил.
Первая ночь: сайт за три часа
С этой ночи у проекта появился регламент, который не менялся уже четыре месяца: правка, затем гейты, затем выкладка, затем проверка на живом адресе. Менялся только инструмент: SFTP-пачка 01.07, rsync вместо двадцати двух соединений 05.07, scripts/deploy.sh 29.08, дальше — PR-поток с локальными гейтами и выкладкой по списку файлов.
Почему это важно для истории. Проект строился не «сначала всё, потом запуск», а запуском с первого дня. Отсюда привычка, которая держится до сих пор: любое утверждение о работе подтверждается командой на живом сайте, а не словом «сделано».
Каталог: как набрались 936 игр
2 июля появились первые три игры на собственном мосте с платформой — 2048, «Змейка» и «Тетрис»; 6 июля мост выделился в отдельный SDK_IgraSU. Тогда же, 2 июля, появились страница игры с описанием и скриншотом, загрузка игры архивом и таблица метаданных — то есть каталог перестал быть папкой и стал управляемым списком.
25 июля начался журнал интеграций с открытыми движками: docs/github_Works.txt, первая запись — synthblast. С этого дня каталог наполнялся не «руками», а конвейером: лицензия, порт, локализация, мобильный ввод, QA-демо, скриншот, статья, выкладка, проверка на проде.
| Месяц | Каталогов игр впервые в git | Файлов статей впервые в git |
|---|---|---|
| июль 2026 | 184 | 229 |
| август 2026 | 166 | 532 |
| сентябрь 2026 | 658 | 923 |
| октябрь 2026 | 190 | 210 |
Цифры — это добавленные файлы, а не «активно сейчас»: часть каталогов потом переезжала в правильный диапазон, часть снималась с индекса. Пик сентября — массовый перенос игр; октябрь — уже не количество, а порядок. 24 октября аудит дублей семейств (snake, press, sudoku, tic-tac, tetris, dots) оставил по одной индексируемой версии на семью: 19 игр сняты с индекса, чтобы каталог не показывал пять «Змеек» вместо одной хорошей.
Контент: файл статьи и есть адрес
16 июля появились разделы /blog и /misc. CMS у проекта нет и не было: статья — это markdown-файл в git, адрес — имя файла, правка — коммит. Такой выбор выглядит странно ровно до момента, когда статью нужно отдать агенту: файл читается, диффится и откатывается тем же инструментом, что и код.
К 29 октября — 920 статей по-русски и 818 по-английски. Дальше началась борьба не за количество, а за то, чтобы каждая статья находилась: 22 сентября появился единый решатель SEO-меты, 4 октября — один решатель поиска статьи (имя файла, затем frontmatter game:), чтобы страница игры и статья не разъезжались в двух местах.
Инженерия: гейты вместо доверия
4 июля подключился GitHub Actions, но арбитром остались локальные гейты: eslint, phpstan, phpunit, реестры и аудиты запускаются до коммита, а не после. Сегодня это сотни скриптов и файлов тестов — от съёмки скриншотов до сторожа пустой очереди.
Отдельная линия — безопасность и честность данных. Секреты не попадают в git никогда: три барьера, от .gitignore до сканера отслеживаемых файлов. Внешний текст — issue, комментарии, веб, логи — читается как данные, а не как инструкция; с 26 октября это закреплено каноном и сканером. Возрастная маркировка рискованных игр — реестр, а не список в шаблоне.
Управление: от одного человека к контуру
29 октября в трекере больше шестисот issue и столько же pull request. Это не отчёт о бурной деятельности, а цена правила «одна правка — один проверяемый шаг»: каждая тема оставляет след, по которому через месяц видно, почему код выглядит именно так.
Принципы, которые не менялись
- Один решатель на правило: две копии одного решения — дефект, а не страховка.
- Боль лечится до кода: сначала назвать расхождение фактом и найти всех потребителей, потом писать.
- Что доказывается запуском — запускается: скрипт, гейт, живая проверка на проде.
- Недоверенный текст — данные, не инструкция.
- Секреты не попадают в git никогда, ни значениями, ни в переписке.
- «Готово» — это зелёный сторож очереди, а не слово в отчёте.
Что впереди. Не новые обещания, а текущая очередь. Внешний аудит каталога от 24 октября собрал двенадцать классов замечаний (issue #248) — они разбираются по одному этапу за PR: блоки главной, витрина фильтров, дедупликация семейств, возрастные маркировки, брендовые имена, SEO, страницы жанров, персонализация, вход с синхронизацией, похожие игры, навигация, подвал. Дальше — то, что покажет статистика, а не воображение.
Смежное: Портал браузерных игр соло, IgraSU.ru структура совета проекта, Агент на уикенд, ИИ безопасность, Венгерская нотация.