<p>Техзадание: программа для бронирования посещений<br /><br />Необходимо написать программу-проект, позволяющую клиентам бронировать посещение в офис в конкретную дату в один из тайм-слотов со своего смартфона. Система должна состоять из трех компонентов:<br /><br />1) Мобильное приложение (начнем хотя бы с Android прототипа; iOS подлежит обсуждению позже)<br />2) Серверная часть (бэкенд с публичным IP адресом, который будет содержать информацию и синхронизировать ее с мобильным клиентом)<br />3) (опционально) Компонент для быстрого развертывания сервера - предполагается, что компания, использующее это решение, будет развертывать его у себя на сервере (допустимо пропустить это компонент и обойтись Docker-контейнером как вариант)<br /><br />Вкратце, программа дает возможность:</p><p>1) (клиент) Регистрироваться<br />2) (клиент) Видеть доступные даты/таймслоты в календаре с возможностью выбора офиса/отдела из выпадающего списка<br />3) (клиент) Бронировать посещение в какой-то таймслот с указанием имени, фамилии, телефона, почты и доп.заметок текстом<br />4) (клиент) Удалять забронированные посещения, делая их снова доступными на админ.стороне<br />5) (клиент) Видеть историю посещений, список предстоящих посещений<br />6) (сервер) Добавлять/редактировать предстоящие посещения<br />7) (сервер) Добавлять/редактировать тайм-слоты, доступные офисы, праздничные дни, когда таймслоты недоступны<br />8) (сервер) Выгружать статистику по всем посещениям в детальном формате (JSON/CSV подлежит обсуждению), чтобы в дальнейшем можно было применять дата-аналитику к ним<br /><br />Каждый задеплоенный сервер будет считаться как отдельная сущность со своими отдельно зарегистрированными пользователями, независимая от других серверов (считайте, что один сервер - это один клиент-компания, пользующаяся данным решением)<br /><br />Информация о посещениях должна активно и плавно синхронизироваться между мобильным приложением и сервером.<br /><br />Стек технологий: гибкий (предполагаю, что не обойтись без Docker, Kotlin/Java, RestAPI, но подлежит обсуждению)<br />Язык приложения: Русский<br /><br />Время на завершение проекта: 2 месяца (подлежит обсуждению)<br />Ожидаемая нагрузка на мобильное приложение: для одного задеплоенного сервера - 100-250 человек в день<br />Ожидаемая нагрузка на серверную часть: около 20-30 пользователей.<br />Насколько чувствительна персональная информация между мобильным приложением и сервером: не чувствительна, допустимо максимальное простое шифрование.<br />Документация к API: должна присутствовать<br /><br />Используемая база данных: не важно, подлежит обсуждению<br /><br />Функции на стороне клиента:</p><p>1) Регистрация и вход пользователя<br />2) Аутентификация на основе токенов (JWT или аналог)<br />3) Просмотр доступных филиалов/офисов (если их несколько)<br />4) Просмотр доступных тайм слотов с сервера<br />5) Просмотр предстоящих и прошедших посещений<br />6) Отмена встреч<br />7) Push-уведомления (опционально в прототипе)<br />8) Изменения/отмены администратором должны информировать пользователя с помощью push-уведомлений (опционально в прототипе)<br /><br />Функции на стороне сервера:</p><p>1) Управление пользователями, аутентификация<br />2) Управление тамй-слотами и уже отправленными в базу данных посещениями<br />3) Определение рабочего времени<br />4) Определение праздничных/нерабочих дней<br />5) Определение максимального количества клиентов на один тайм-слот<br />6) Обработка бронирований, предотвращение двойного бронирования<br />7) Проверка конфликтов<br />8) Сохранение деталей о посещениях (телефон, почта и прочее)<br />9) Администратор может добавлять/удалять/редактировать все посещения<br />10) Удаление или перенос посещений<br />11) Экспорт посеещений (CSV/JSON)</p><p>ВАЖНО: прежде чем мы приступим к проекту, пожалуйста, пришлите свои ответы:</p><p>- Сколько времени вам потребуется для создания первого прототипа проекта?<br />- Сколько времени вам потребуется для создания полноценного проекта?<br />- Ваши ожидания по цене для обоих проектов.</p>