feat: add README

This commit is contained in:
Sergey Krylov 2026-02-24 04:34:05 +03:00
parent 5f25234962
commit 1730e29867

112
README.md Normal file
View File

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