Форум JavaScript тематики

Реализуйте форум JavaScript тематики, в котором пользователи смогут задавать вопросы по JavaScript, обсуждать решения и делиться опытом. Сайт должен поддерживать регистрацию с разделением по ролям: пользователь, модератор, администратор.

Продумайте структуру базы данных для хранения пользователей, категорий, тем, постов и голосов. Реализуйте регистрацию и авторизацию пользователей. Настройте серверную часть для работы с API. Все операции по чтению данных (вывод категорий, тем, постов, профилей) должны выполняться через SSR для индексации поисковиками. Все операции по записи (добавление, редактирование, удаление, модерация, голосование) - через AJAX-запросы без перезагрузки страницы.

Основные возможности проекта

Регистрация и роли

На сайте должна быть реализована система регистрации и авторизации с разделением по ролям:

Главная страница (SSR)

На главной странице форума должен быть выведен список всех категорий. Каждая категория должна содержать:

Страница генерируется на сервере для полной индексации поисковиками.

Страница категории (SSR + AJAX)

На странице категории должен быть выведен список тем с пагинацией (по 30 тем на страницу). Страница генерируется на сервере (SSR), но добавление новых тем происходит через AJAX. Для каждой темы должно быть указано:

Темы должны быть отсортированы по дате последнего поста (сначала новые). Также на странице должна быть кнопка "Создать новую тему" для зарегистрированных пользователей (через AJAX).

Страница темы (SSR + AJAX)

На странице темы пользователи размещают свои посты. Страница генерируется на сервере (SSR), но новые посты добавляются через AJAX. Каждая тема начинается с заголовка и первого поста автора темы:

Каждый пост должен содержать:

Возможности для автора поста (AJAX):

Возможности для модератора (AJAX):

Рейтинг постов (AJAX)

На сайте должна быть реализована система рейтинга постов через AJAX:

Создание новой темы (AJAX)

Зарегистрированные пользователи могут создавать новые темы через AJAX без перезагрузки страницы. Форма создания темы содержит:

Страница профиля (SSR + AJAX)

На странице профиля пользователь может просматривать и редактировать свои данные. Профиль генерируется на сервере (SSR), редактирование происходит через AJAX.

Пользователи могут просматривать профили других пользователей (только просмотр, без редактирования).

Личный кабинет пользователя (SSR)

В личном кабинете пользователь может управлять своими темами и постами. Страница генерируется на сервере (SSR).

Админ-панель (AJAX)

В админ-панели администратор может управлять пользователями и категориями. Все операции выполняются через AJAX без перезагрузки страницы.

Взаимодействие с сервером

Гибридный подход:

Дополнительные возможности