Недавно мне пришла в голову возродить свой старый каталог source-портов и графических модификаций для старых игр. Новая версия должна была стать максимально опенсорсной и открытой, чтобы любой пользователь мог править как содержание сайта, так и его код, а мне бы оставалось заниматься только премодерацией изменений. Если вам интересно, что из этого вышло, как я создал самому себе проблемы и как потом их решал — добро пожаловать под кат.
А давайте разместим все данные на гитхабе, и по этим данным будем генерировать статический сайт? Сплошные плюсы же!
Тем более, что я давненько хотел поупражняться в написании генерации статического сайта на Java. Решено! В одном репозитории храним данные, во втором — генератор статического сайта. Поеха… Хотя нет, стоп, сначала нужно принять ещё одно решение.
Хранить описания игры или модификации в файлах формата «JSON/XML/впишите свой вариант» — идея вроде и замечательная, но у нас же в требованиях стоит “… любой пользователь...”, а какой-нибудь JSON может и напугать. Ну ладно, фигня вопрос — давайте хранить данные в пачке текстовых или Markdown-файлов. Один файл — одна сущность, у MD-файлов на github есть превью — лепота! А чтобы ещё упростить ситуацию, подробно распишем в документации, что за что отвечает. Часть этой информации:
И что я хочу сказать — редактировать уже имеющуюся информацию в таком режиме действительно довольно удобно. Но есть один нюанс...
Редактировать данные оказалось удобно, а вот заводить новую модификацию — не очень, потому что было необходимо за один раз создать от 4 до 14 файлов. И делать это с помощью интерфейса гитхаба чертовски неудобно. Первой мыслью было накидать многошаговые инструкции, описывающие добавление новой информации от и до.
Увы, вердикт пользователей сайта был однозначен: неудобно! А если пользователям неудобно на сайте, который должен жить за счёт пользовательской активности… сами понимаете, проекту кирдык.
Ну что поделать, решение было в общем то очевидным: написать формочки для заведения новой информации путём создания пулл-реквеста со всеми необходимыми файлами, а также для загрузки скриншотов к уже существующим описаниям. По старой памяти, из-за желания запустить проект поскорее, а так же из-за того, что PHP уже был на хостинге — для этих формочек был использован PHP.
После добавления удобных формочек процесс пошёл: первые недели после размещения информации о сайта в своём видеоблоге и на сайте Old-Games.RU новые моды и порты добавляли с такой скоростью, что я просто не успевал заниматься премодерацией!
Кроме добавления информации мне было скинуто и некоторое число замечаний и пожеланий по интерфейсу и функциональности, часть из которых я уже реализовал, а часть всё ещё ждёт своего часа.
Одной из частых претензий стал внешний вид сайта — и это понятно, ведь я задействовал дефолтную тему Bootstrap 4 с мыслью «это же временно, потом натяну красивый скин». Шутку про "нет ничего более постоянного, чем временное" даже воспроизводить не хочется.
Потом активность конечно пошла на спад, но какое-то количество активных пользователей на сайте всё ещё есть и сайт продолжает наполнять информацией. На момент старта в середине февраля на сайте было 227 модов к 86 играм, а на момент этой публикации — 323 мода к 130 играм.
Во-первых, рассказать очередную историю с очевидной моралью «интерфейс удобный и приятный программисту совсем не обязательно будет удобен пользователю сайта». Не смотря на банальность тезиса — его стоит периодически напоминать.
А во-вторых — позвать любителей покопаться в коде или порисовать и поверстать интерфейсы. Может быть быть вас заинтересует тематика сайта и вы захотите немного помочь в его развитии ;-)
Если вам это интересно, то весь исходный код сайта живёт на гитхабе.
К сожалению, не доступен сервер mySQL