🛒 BuySell — Marketplace на Spring Boot Полнофункциональное учебное приложение с авторизацией, UI, загрузкой изображений и админ-панелью
📌 Описание проектаBuySell — веб-приложение, позволяющее пользователям: ✔ размещать товары ✔ просматривать объявления ✔ загружать изображения ✔ искать товары ✔ авторизоваться и регистрироваться
А также включает: 🔒 систему ролей, 🔐 защиту CSRF, ⚙️ админ-панель и 🎨 оформленный UI.
Проект был создан с нуля в процессе обучения, и я прошёл весь путь — от установки Spring Boot до продвинутой настройки Spring Security и админского функционала.
🚀 Функционал проекта 👤 Пользовательский функционал
Регистрация и вход в систему
Личный кабинет
Просмотр всех товаров
Поиск товаров по названию
Просмотр страницы товара
Создание своих объявлений
Загрузка до 3 изображений
🛡 Админ-панель (ROLE_ADMIN)
Просмотр всех пользователей
Управление ролями
Блокировка / разблокировка пользователей
Модерация товаров
Удаление товаров
Статистика
🎨 UI / Frontend
Проект включает собственный UI-дизайн:
аккуратные формы логина и регистрации
оформленный список товаров
карточки товаров
админ-панель в едином стиле
удобная навигация
FreeMarker (FTLH) используется для шаблонов, оформленных вручную.
🧠 Чему я научился в процессе разработки 🔧 1. Spring Boot (от нуля до продвинутого уровня)
Настройка приложения, зависимостей, свойств
Работа с контроллерами, сервисами, репозиториями
MVC-архитектура в реальном проекте
🗄 2. Работа с базой данных (JPA + MySQL)
Создание сущностей (User, Product, Image, Role)
Маппинг связей: OneToMany, ManyToOne, ElementCollection
Поиск, фильтрация, сохранение данных
Миграции структуры
🔐 3. Spring Security (старый и новый подходы) Изучил и внедрил:
WebSecurityConfigurerAdapter (устаревший способ)
SecurityFilterChain + AuthenticationManager (новый подход)
Настройка ролей: ROLE_USER, ROLE_ADMIN
Кастомная логика аутентификации через email
Корректная работа CSRF
CustomUserDetailsService
Исправил проблемы:
Invalid CSRF Token
Response already committed
Bad Credentials
Ошибки FreeMarker
🖥 4. Шаблоны FreeMarker (FTLH)
Условные конструкции <#if>, циклы <#list>
Безопасные проверки (?exists, !'')
Вставка CSRF токена
Передача моделей из контроллеров
Создание UI для пользователей и админов
📁 5. Загрузка файлов
Обработка multipart-запросов
Сохранение изображений на диск
Привязка изображений к товарам
Отображение фото в карточках
⚙️ 6. Навыки Debug и чтение логов
Анализ stacktrace
Исправление ошибок шаблонов
Работа с логами Spring Security
Понимание работы фильтров и цепочек Security
🗂 Стек технологий Категория Технологии Backend Java 17, Spring Boot 3, Spring MVC Security Spring Security 6, BCrypt Templates FreeMarker (FTLH) Database MySQL, Spring Data JPA Utils Lombok, MultipartFile Build Maven 🏛 Архитектура проекта BuySell ├── controllers # Контроллеры HTTP ├── services # Бизнес-логика ├── repositories # Работа с БД ├── models # Сущности JPA ├── configurations # Spring Security и прочие конфиги ├── templates # FTLH шаблоны (UI) └── static # CSS, JS, изображения
📸 Скриншоты (добавишь сам)
Места под изображения:
- login page
- registration page
- product list
- product view
- admin panel
Настроить application.properties
Создать базу MySQL
Запустить:
mvn spring-boot:run
Перейти в браузере:
📚 Итог
В процессе разработки я:
✔ Создал полноценное приложение уровня портфолио ✔ Освоил Spring Boot, Security, JPA и FreeMarker ✔ Реализовал админ-панель ✔ Построил UI вручную ✔ Научился разбираться в сложных ошибках ✔ Прошёл весь путь от нуля до структурированного backend-проекта
Учился по гайдам с ютуба