# Tinder Clone Образовательный проект - клон приложения Tinder, реализованный на Java с использованием Jakarta Servlet API. > 📚 **Создан в рамках курса**: [Свой Тиндер на Java](https://www.youtube.com/playlist?list=PL5PnotADCJBdY2ULFhcQnrmlfGJ6JEN_A) ## Описание проекта Это веб-приложение, имитирующее функциональность популярного приложения для знакомств Tinder. Проект разработан в учебных целях для демонстрации навыков разработки на Java EE/Jakarta EE. ## Основной функционал - **Регистрация и аутентификация пользователей** - **Управление профилями** (создание, просмотр, редактирование) - **Система ролей** (ADMIN, USER) - **Мультиязычность** (поддержка русского и английского языков) - **Фильтрация и безопасность** (AuthFilter, ErrorFilter) - **Валидация данных** ## Технологический стек - **Java 17+** - **Jakarta Servlet API** - **JSP (JavaServer Pages)** - **JSTL (Jakarta Standard Tag Library)** - **Lombok** (для генерации кода) - **SLF4J** (для логирования) - **Maven/Gradle** (сборка проекта) ## Архитектура проекта Проект следует многослойной архитектуре: ``` src/ru/charm/back/ ├── controller/ # Контроллеры и фильтры ├── dao/ # Объекты доступа к данным (in-memory storage) ├── dto/ # Объекты передачи данных ├── mapper/ # Мапперы между сущностями ├── model/ # Модели данных и исключения ├── service/ # Бизнес-логика ├── utils/ # Утилитные классы └── validator/ # Валидаторы ``` ## Основные компоненты ### Модели данных - **Profile** - основная сущность пользователя - **Gender** - enum (MALE, FEMALE) - **Role** - enum (ADMIN, USER) - **Status** - enum (ACTIVE, INACTIVE) ### Контроллеры - **RegistrationController** - регистрация новых пользователей - **LoginController** - аутентификация - **ProfileController** - управление профилями - **CredentialsController** - управление учетными данными - **ContentController** - контент приложения - **LanguageController** - переключение языков ### Фильтры - **AuthFilter** - фильтр аутентификации - **ErrorFilter** - обработка ошибок - **HiddenHttpMethodFilter** - поддержка HTTP методов - **LanguageFilter** - фильтр языковых настроек ## Установка и запуск ### Требования - JDK 17 или выше - Apache Tomcat 10+ - IDE (IntelliJ IDEA рекомендуется) ### Запуск проекта 1. Клонировать репозиторий 2. Открыть проект в IDE 3. Настроить Tomcat Server 4. Развернуть проект на сервере 5. Открыть `http://localhost:8080/Tinder_Clone/` в браузере ## Структура данных Проект использует in-memory хранилище на основе `ConcurrentHashMap` для хранения профилей пользователей. При запуске создаются два тестовых пользователя: - **Admin**: ivanov@mail.ru / 123 - **User**: sidorova@mail.ru / 456 ## Особенности реализации - **Singleton паттерн** для DAO и Service слоев - **Функциональное программирование** с использованием Stream API - **Безопасность** через фильтры и валидацию - **Интернационализация** через resource bundles - **RESTful подход** в контроллерах ## Возможности для развития - Интеграция с реальной базой данных (PostgreSQL, MySQL) - Добавление WebSocket для real-time функциональности - Реализация системы лайков и мэтчей - Добавление загрузки фотографий - Интеграция с социальными сетями - Разработка мобильного приложения ## Автор Проект разработан в образовательных целях как часть курса по веб-разработке на Java. ## Лицензия Этот проект предназначен только для образовательных целей.