This project was bootstrapped with Create React App.
Структура архіву:
- client/ - папка з файлами клієнта.
- server/ - папка з файлами сервера.
- screenshots/ - декілька скріншотів.
- test-session.json - файл з даними сесії, який можна завантажити.
Команди для роботи с проектом:
Для старту серверів:
- docker-compose up
Якщо сервер на іншому комп'ютері або на віртуальній машині, то адресу серверу потрібно передати як env variable. Наприклад:
- REACT_APP_HOST=192.168.0.83 docker-compose up
В браузері:
- localhost:8080
Як запустити проект локально описано в файлі README_LOCAL.md
Опис роботи
В проекті використовується два окремих сервера:
- На порту 8080 - сервер статики для SPA додатку
- На порту 3002 - websoket API сервер
Використання двох мікросервісів дозволяе користуватися додатком, навіть якшо частина ресурсів недоступна. Додаток кешується на стороні браузера. Якщо сервер статики не доступний, сайт все одно працює з кешу. Якщо не доступний API сервер, у користувача залишається можливість працювати із збереженими сесіями. Отже додаток в обмеженому режимі може працювати без доступу до серверів взагалі.
При виконанні завдання використовано:
- create-react-app
- react
- cerebral для керування станом
- semantic-ui для інтерфейсу
- jest для тестів
- eslint з налаштуваннями create-react-app
В проекті реалізовані всі обов'язкові й додаткові завдання.
Додатково реалізовано:
-
Динамічний перелік користувачів. Користувачі можуть додаватися до сесіїї та покидати сесію в будь який час. Якщо гравець приєднався під час розгляду історії, він може бачити хід голосування, але не може прийняти в ньому участь (про що йому повідомляється). Такий гравець починає голосування з наступної історії. Якщо гравець покидає сесію і вже встиг дати оцінку поточній історії, то оцінка зараховується. Якщо гравець покидає сесію не надавши оцінки, то історія оцінюється без нього.
-
Збереження сесії. Всі дані сесії зберігаються в json
-
Перегляд збереженої сесії. Користувач може відкрити збережену сесію. Він може переглядати історії з результатами голосування, переглядати статистику. Список користувачів у збереженій сесії містить всіх гравців, які дали оцінку принаймні одній історії.