Форум города N

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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