Ключевая сложность — не дать одному человеку голосовать много раз, но и не отпугнуть читателей лишней авторизацией. Нужен механизм идентификации анонимного посетителя, cookie, отпечаток браузера или localStorage, на ваше усмотрение, с понятным сроком жизни и без ложных срабатываний, когда один человек заходит с разных устройств.
Вторая часть задачи — сторона редактора. Нужен экран или отчёт, где видно, сколько реакций набрала каждая статья, какое соотношение положительных и отрицательных оценок, и как это меняется по неделям или месяцам. Это простая аналитика вовлечённости для выбора тем. Обсудим формат хранения данных и способ вывода: таблица в панели, отдельная страница со сравнением статей или другой удобный вариант.
Что нужно в результате:
— виджет реакций на страницах статей;
— защита от повторного голосования одним посетителем;
— отчёт по популярности статей для редактора;
— работа без перезагрузки страницы.