a-shaforostov / books

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

This project was bootstrapped with Create React App.

Структура архіву: source/ - папка з вихідними файлами. build/ - зібраний проект documentation/ - зібрана документація data.json - файл з даними.

В файлі /source/src/controller.js закоментовані стрічки, що вмикають зв'язок з cerebral debugger Це зроблено для того, щоб уникнути повідомлень в консолі, що немає зв'язку з cerebral debugger Для використання cerebral debugger потрібно розкоментувати відключені рядки.

Команди для роботи с проектом: ВСІ команди виконуються з папки source. Папки з білдами будуть створені також в цій папці.

  1. Для встановлення залежностей npm install

  2. Для запуску проекту npm start

  3. Для збирання проекту npm run build Результат в папці build. Для запуску зібраного проекту потрібен сервер. Для завантаження і запуску сервера можна виконати команду npx ecstatic build --gzip -p 8087 --cache 25920000 В браузері: localhost:8087

  4. Для тестів npm test Використовується Jest. Тести написані для допоміжних функцій (utils.js)

  5. Для збирання документації 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 для відповідності вигляду чату.

  • Реалізовано видалення книги зі всіх бібліотек. При видаленні виданої книги, вона також видаляється зі всіх бібліотек.

About


Languages

Language:JavaScript 98.6%Language:HTML 1.4%