feat: add README
This commit is contained in:
parent
5f25234962
commit
1730e29867
112
README.md
Normal file
112
README.md
Normal 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.
|
||||
|
||||
## Лицензия
|
||||
|
||||
Этот проект предназначен только для образовательных целей.
|
||||
Loading…
x
Reference in New Issue
Block a user