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