This project was bootstrapped with Create React App.
Структура архіву: source/ - папка з вихідними файлами. build/ - зібраний проект documentation/ - зібрана документація data.json - файл з даними.
В файлі /source/src/controller.js закоментовані стрічки, що вмикають зв'язок з cerebral debugger Це зроблено для того, щоб уникнути повідомлень в консолі, що немає зв'язку з cerebral debugger Для використання cerebral debugger потрібно розкоментувати відключені рядки.
Команди для роботи с проектом: ВСІ команди виконуються з папки source. Папки з білдами будуть створені також в цій папці.
-
Для встановлення залежностей npm install
-
Для запуску проекту npm start
-
Для збирання проекту npm run build Результат в папці build. Для запуску зібраного проекту потрібен сервер. Для завантаження і запуску сервера можна виконати команду npx ecstatic build --gzip -p 8087 --cache 25920000 В браузері: localhost:8087
-
Для тестів npm test Використовується Jest. Тести написані для допоміжних функцій (utils.js)
-
Для збирання документації npm run doc Використовується jsdoc. Результат зборки documentation/index.html
При виконанні завдання використовано:
- create-react-app
- react
- cerebral для керування станом
- semantic-ui для інтерфейсу
- jss для стилів
- jest для тестів
- jsdoc для генерування документації
- eslint з налаштуваннями create-react-app
- sha-1 для збереження хешів паролів
- react-dnd для drag & drop
- react-loadable для лінивого завантаження додатку. Одразу завантажується тільки loader
- google-maps карти, додатково використовується сервіс Places для пошуку бібліотек Також використані нативні сервіси Geolocation API та Credentials API Книги в тестовому файлі взяті з сайту https://www.bookclub.ua/
Версії: node 8.9.4 npm 5.6.0
- Авторизація в системі *
Для входу в систему використовується Credentials API.
Доступні два облікових записи для перевірки. login: test@gmail.com, password: netflix login: test2@gmail.com, password: netflix
Якщо користувач дозволяє збереження паролів, тоді при наступному вході він буде автоматично авторизований і побачить повідомлення про це. Якщо для сайту збережено декілька облікових записів, то користувачу буде запропоновано обрати з них. Якщо немає збережених паролів або користувач не обирає жодного, то він залишається не авторизованим. Щоб відключити автоматичний вхід, необхідно вийти з системи (кнопка "Вихід"). Якщо користувач авторизується за допомогою кнопки "Вхід" або відкриває захищений розділ сайту, то система намагається використати збережений пароль, а в разі невдачі відкриває вікно входу. Паролі збережені у вигляді хешу sha-1.
Додаткові функції, що не вимагалися завданням:
-
Реалізована можливість переглянути на карті найближчі бібліотеки, що отримуються сервісом Google Places. Отже, можна побачити всі бібліотеки, а не тільки ті, що внесені в систему.
-
Реалізовано приблизний пошук книг. Якщо користувач при пошуку помиляється в назві або авторі, то йому буде виведений список схожих книг.
Наприклад, якщо зробити пошук тексту "чорний горобець", то в список буде виведена книга "Червоний горобець". Поріг співпадіння, на який налаштований пошук - 80%. Отже, "синій горобець" вже нічого не поверне.
-
Реалізовано збереження бесіди в файл після завершення розмови. Дані зберігаються в файл .png для відповідності вигляду чату.
-
Реалізовано видалення книги зі всіх бібліотек. При видаленні виданої книги, вона також видаляється зі всіх бібліотек.