| Left part | Right part | 
|---|---|
|  |  | 
|  |  | 
|  |  | 
|  |  | 
- Уровень back-end основан на Spring Boot.
- Уровень front-end построен на Angular 17
- Взаимодействие между уровнями back-end и front-end организовано посредством REST API.
- Main page (Стартовая страница)
- Sign up (Страница для регистрации)
- Log in (Страница для входа в аккаунт)
- Dashboard (Страница с выбором сервисов)
- Dots Manager (Страница с сервисом отслеживания попадания точки(Форма ввода координат, таблица с результатами, координатная плоскость))
- "Десктопный"
- "Планшетный"
- "Мобильный"
Набор полей ввода для задания координат точки и радиуса области в соответствии с вариантом задания:
Checkbox {'-2','-1.5','-1','-0.5','0','0.5','1','1.5','2'} для координаты по оси X, Text (-5 ... 3) для координаты по оси Y, и Checkbox {'-2','-1.5','-1','-0.5','0','0.5','1','1.5','2'} для задания радиуса области. Динамически обновляемую картинку, изображающую область на координатной плоскости в соответствии с номером варианта и точки, координаты которых были заданы пользователем. Клик по картинке должен инициировать сценарий, осуществляющий определение координат новой точки и отправку их на сервер для проверки её попадания в область. Цвет точек должен зависить от факта попадания / непопадания в область. Смена радиуса также должна инициировать перерисовку картинки.
- Все результаты проверки сохраняются в базе данных под управлением СУБД PostgreSQL.
- Для доступа к БД используется Spring Data.
- Аутентификация происходит с помощью JWT-токенов (Также реализованы refresh токены)
- Используется библиотека Java Mail для отправки электронных писем с помощью Spring
- Реализована кастомная пагинация с использованием PagingAndSortingRepository
- Используется Tailwind v3.3.5
- Используется Angular Guards (Доступ к "внутренним" страницам и сервисам запрещен неавторизированным пользователям)
- Angular Validating Form (Валидация полей ввода для регистрации, контакт формы и полей ввода для создания точки на графике)
- Angular Material modules (MatSortModule,MatTableModule). Вместо MatPaginatorModule используется кастомная пагинация.
- Регистрация просходит следующим образом
- Пользователь вводит свои данные. Email и Имя пользователя должны быть уникальны.
- На указанную пользователем почту приходит письмо с подтверждением регистрации. Пока пользователь не подтвердит регистрацию переходом по ссылке, содержащейся в письме, его аккаунт не будет активирован.
- После подтверждения регистрации, пользователь может войти в свой аккаунт.
 
- Таблица с данными точек (как и график ) содержит не все точки, хранящиеся в базе данных , а только то количесто, которое выберет пользователь (изначально выставлено значение 3).
- Jwt токены позволяют пользователю не проходить заново аутентификацию в течение 7 дней, после последней аутентификация. (Если пользователь пользуется приложением с того же браузера и не проводил очистку хранилища браузера)
- Контакт форма доступна пользователям без регистрации. Данные отправляются на email-организации(В данном случае на мою почту)
