Задание “Телефонная книга”
Запуск
- Clone the repository:
git clone https://github.com/a11exe/phonebook.git
- Build the maven project:
mvn clean install
- Now run:
docker-compose up
Application will start on http://localhost:8080 use credentials: user1 / 12345
- Stop containers:
docker-compose down
- Remove old stopped containers of docker-compose
docker-compose rm -f
Хранимые данные:
Информация о пользователе в системе:
- Логин (только английские символы, не меньше 3х, без спецсимволов)
- Пароль (минимум 5 символов)
- ФИО (минимум 5 символов)
Хранимая информация (одна запись):
- Фамилия (обязательный, минимум 4 символа)
- Имя (обязательный, минимум 4 символа)
- Отчество (обязательный, минимум 4 символа)
- Телефон мобильный (обязательный)
- Телефон домашний (не обязательный)
- Адрес (не обязательный)
- e-mail (не обязательный, общепринятая валидация)
Задание:
Реализовать Web проект “Телефонная книга”. Содержащий страницы:
- авторизацию
- Вход в систему (логин/пароль)
- Регистрация
- Выход из системы
Работа с хранимыми данными
- Просмотр всех данных с возможностью фильтрации по имени/фамилии и номеру телефона (не полное соответствие).
- Добавление/Редактирование/Удаление хранимых записей
Система доступна только авторизованным пользователям. Если пользователь не авторизован, при попытке открытия любой страницы его должно редиректить на страницу авторизации. На странице авторизации он может ввести логин и пароль для входа в систему или зарегистрироваться. При регистрации указываются поля: ФИО, логин и пароль.
У каждого авторизованного пользователя имеется своя телефонная книга, т.е. каждый пользователь видит только те записи, которые он создал.
Обратить внимание (обязательно к выполнению)
- Админка для управления пользователями - не требуется.
- Формат телефонов должен проверяется и быть валидным для Украины, пример: +380(66) 1234567
- Приложение обязательно должно содержать JUnit тесты, максимально плотно покрывающие код.
- Приветствуется использование Mockito.
- Проект должен собираться средствами Maven
- Для запуска использоваться SpringBoot
- Все настройки приложения должны находится в properties файле, путь к которому должен передаваться в качестве аргументов JVM машине (-Dlardi.conf=/path/to/file.properties).
- В конфигурационном файле указывается тип хранилища. Тип хранилища используется один раз при старте JVM (изменения в конфигурационном файле вступают в силу только при перезапуске JVM).
- Реализовать минимум два варианта хранилища: СУБД (MySQL) и файл-хранилище (XML/ JSON/CSV на выбор).
- Настройки хранилища должны указываться в файле-конфигурации (хост и пользователь для СУБД или путь к файлу для файлового хранилища).
- Для файлового хранилища - в случае отсутствия файла(ов) - его(их) необходимо создать.
- Для СУБД-хранилища в файле README.md должен находится SQL запрос для создания всех необходимых таблиц.
- Проверка данных должна осуществляться на стороне сервера.
- Приложение должно содержать четкое логическое разделение между представление, логикой и источником данных.