РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
61 of 77 menu

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

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

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

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

  • Главная страница со списком всех тем с пагинацией (SSR).
  • Страница темы с постами пользователей (SSR).
  • Три роли: пользователь, модератор, администратор.
  • Пользователи могут создавать темы и отвечать в них (AJAX).
  • Возможность редактировать и удалять свои посты в течение N минут (AJAX).
  • Модераторы могут управлять постами и банить пользователей (AJAX).
  • Администраторы могут назначать модераторов, закреплять и закрывать темы (AJAX).
  • Регистрация и профили пользователей (SSR для просмотра, AJAX для редактирования).
  • Админ-панель для управления пользователями, темами и постами (AJAX).

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

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

  • При регистрации пользователь должен указать: email, логин, пароль, ФИО, дату рождения.
  • Авторизация по логину и паролю.
  • Восстановление пароля через email.
  • Валидация всех полей на стороне сервера.
  • Три роли пользователей:
    • Пользователь - может создавать темы, отвечать в темах, редактировать и удалять свои посты в течение N минут.
    • Модератор - может редактировать и удалять любые посты, банить пользователей на время или навсегда.
    • Администратор - назначает модераторов, закрепляет и закрывает темы, управляет пользователями.
  • При регистрации все пользователи получают роль "пользователь".
  • Назначить модератором или администратором может только администратор.

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

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

  • Название темы (ссылка на страницу темы).
  • Автор темы.
  • Количество постов в теме.
  • Дата последнего поста.
  • Если тема закреплена - она всегда на первом месте.
  • Если тема закрыта - отображается специальная метка "Закрыта".

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

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

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

  • Заголовок темы.
  • Первый пост автора (вопрос).
  • Все последующие посты (ответы).

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

  • Текст поста.
  • Дата и время публикации.
  • Имя автора (ссылка на профиль).

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

  • Редактировать свой пост в течение N минут после публикации.
  • Удалить свой пост в течение N минут после публикации.
  • По истечении N минут редактирование и удаление недоступны.

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

  • Редактировать любой пост.
  • Удалять любой пост.
  • Отправлять пользователя в бан (на время или навсегда).

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

  • Закрыть тему (запретить новые сообщения).
  • Открыть тему (разрешить новые сообщения).
  • Закрепить тему (всегда на первом месте).
  • Открепить тему.

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

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

  • Просмотр: логин, ФИО, email, дата рождения, дата регистрации.
  • Редактирование: ФИО, email, пароль (с подтверждением старого) - через AJAX.
  • Количество созданных тем.
  • Количество написанных постов.
  • Дата последнего визита.

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

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

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

  • Список всех своих тем с пагинацией.
  • Список всех своих постов с пагинацией.
  • Фильтр по темам (показать только мои темы).
  • Статистика: общее количество тем и постов.

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

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

  • Список всех пользователей с пагинацией (по 20 пользователей).
  • Для каждого пользователя: логин, email, роль, статус (активен, забанен), дата регистрации.
  • Действия: назначить модератором, разжаловать из модераторов, назначить администратором, разжаловать из администраторов, забанить, разбанить, удалить.
  • При бане указать срок (на время или навсегда).
  • Фильтр по роли (показать только пользователей, модераторов, администраторов).

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

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

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

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

  • Поиск по темам (по названию).
  • Поиск по постам (по тексту).
  • Количество просмотров темы.
  • Уведомления о новых ответах в теме (на email).
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить