diff --git a/README.md b/README.md new file mode 100644 index 0000000..7d7889d --- /dev/null +++ b/README.md @@ -0,0 +1,112 @@ +# 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. + +## Лицензия + +Этот проект предназначен только для образовательных целей.