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