Tinder-Clone/README.md
2026-02-24 04:40:00 +03:00

113 lines
5.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.
## Лицензия
Этот проект предназначен только для образовательных целей.