Разработка приложения «Калькулятор» на Flutter и сайта-визитки на Hugo
Требуется разработать мобильное приложение «Калькулятор» как для размещения его на Google Play Store (без Apple App Store), так и на разрабатываемом сайте-визитке. При разработке калькулятора должна использоваться единая кодовая база, реализующая приложение с одинаковым интерфейсом и функционалом как для сайта, так и на смартфонах на базе Android.
Особенности приложения:
1) Интерактивный элемент, который может проявлять динамику при прикосновении к нему пальца или курсора мыши. Пример реализации можно посмотреть в приложении M.A. Ford Machining Calculator. По сути, это конкурент, функционал будет таким же;
2) Сбор информации о работе приложения и отправка данных на удаленный сервер;
3) Взаимодействие с пользователями путем отправки пушей и сообщений.
2. Внешний интерфейс:
Веб-сайт: генератор статических сайтов Hugo с Tailwind CSS. Будет куплен готовый шаблон вэбсайта. Нужно будет причесать и добавить сам калькулятор. Для примера: https://blist.vercel.app/en/
Мобильное приложение: Flutter (на Webview), готовый дизайн будет в Figma (разработка дизайна не требуется);
Бэкэнд: Django.
Дополнительные библиотеки:
Пакет Flutter Webview для встраивания Калькулятора с сайта в мобильное приложение;
Библиотеки Dart для 3D-рендеринга (например, flutter_3d);
Механизмы автономного хранения во Flutter (например, SharedPreferences, Hive или SQLFlite) для хранения состояния и истории калькулятора при отсутствии подключения к сети Интернет.
3. Функциональные требования:
Веб-сайт должен:
- Иметь адаптивный дизайн, чтобы сайт корректно отображался на различных устройствах и экранах;
- Быть оптимизирован для SEO (карта сайта, мета-теги, заголовки, альтернативный текст для изображений и т.п.);
- Использовать URL-адреса для разных языков (например, /en/, /es/) для разных версий сайта. Весь контент, включая метатеги, можно перевести на выбранный язык;
- Иметь возможность добавления дополнительных страниц и разделов в будущем;
- Иметь возможность добавления изображений, видео и других медиафайлов на страницы сайта;
- Иметь формы обратной связи, позволяющие посетителям отправлять сообщения или запросы;
- Иметь как светлую, так и темную тему, которая переключается на любой странице сайта;
- Иметь интеграцию с инструментами аналитики, такими как Google Analytics и Яндекс Метрика, для отслеживания посещаемости и поведения пользователей;
- Оптимизировать загрузку страниц и ресурсов сайта для достижения быстрой загрузки и отзывчивости.
- Выполнять расчеты, согласно введенной пользователями информации на стороне клиента;
- Предоставлять пользователям возможность использовать приложение без обязательной регистрации;
- Позволять пользователю взаимодействовать с интерактивным элементом в приложении как под средством курсора мыши, так и пальцем;
- Получать пуши и сообщения с иллюстрациями от разработчиков;
- Получать сообщения с возможностью выбора варианта из нескольких предоставленных (проведение опросов);
- Иметь возможность передачи сообщений разработчику;
- Хранить пуши и сообщения в истории уведомлений;
- Иметь интеграцию с Google Analytics и Firebase Crashlytics, чтобы собирать отчеты об использовании приложения, ошибках и сбоях;
- Хранить состояние и историю калькулятора в автономном режиме (offline) с последующей передачей информации на удаленный сервер при подключении;
- Собирать и передавать данные о пользовательских действиях на удаленный сервер для целей аналитики с последующей очисткой БД для целей минимизации занимаемого места и ускорения работы приложения;
- Подгружать историю уведомлений по запросу пользователя;
- Поддерживать несколько языков;
- Иметь выбор между темной и светлой темой;
- Иметь возможность установки системы измерений (метрическая или дюймовая);
- Иметь возможность перехода в Play Store для оценки приложения;
- Иметь возможность выбора клавиатуры (компактная или полная);
- Иметь функцию «Поделиться»;
- Иметь onboarding в приложении.
- Иметь механизм аутентификации для администратора и модераторов панели;
- Иметь различные уровни доступа;
- Обеспечивать безопасность передачи данных между клиентом и сервером;
- Иметь интерфейс для создания и отправки целевых сообщений пользователям на основе заданных фильтров (например, страна, геолокация, язык, местное время). Сообщения отправляются только тем пользователям, которые соответствуют указанным фильтрам;
- Обеспечить возможность отслеживания статуса доставки сообщений (например, успешно доставлено, ошибка доставки);
- Взаимодействовать с базами данных (ошибок, логов, действий пользователей) и выводить информацию на основе заданных фильтров;
- Иметь систему сбора и визуализации аналитических данных, связанных с использованием приложения;
- Предоставить возможность просмотра статистики по выбранным метрикам в виде графиков, диаграмм и таблиц;
- Иметь возможность масштабирования БД;
- Иметь адаптивный дизайн, чтобы панель администратора могла корректно отображаться на различных устройствах и экранах.
Веб-сайт: размещен на статической хостинговой платформе, такой как Netlify, Vercel, GitHub Pages или Cloudflare Pages через GitHub;
Мобильное приложение: Google Play Store;
Бэкэнд: на удаленном VPS сервере через контейнеризацию Docker.
5. Тестирование:
Работа сайта и приложения должны быть протестированы на различных ОС, браузерах, моделей смартфонов и версий Android.
6. Другие требования:
- Кодовая база должна быть подготовлена к масштабируемости для включения дополнительных функций в будущем;
- Кодовая база должна быть написана по всем канонам современной разработки с использованием современных библиотек, с приоритетом на «открытый код»;
- Кодовая база должна быть чистой, хорошо прокомментированной и соответствовать принципу DRY;
- Иметь механизм резервного копирования и резервного хранения данных сайта для предотвращения потери информации;
- Должна быть предоставлена документация для руководства по настройке, развертыванию и резервному копированию и восстановлению;
- Связывание с GitLab для организации CI/CD;
- Обязательно проработать стратегии синхронизации данных в автономном режиме и механизмы разрешения конфликтов;
- Обеспечить безопасность обмена данными и доступа к элементам системы.
1) Стоимость отдельно для приложения, сайта и панели администратора с бэкендом;
2) Сроки начала работ и требуемое время на разработку;
3) Ссылки на реализованные работы, которые можно посмотреть в Интернет;
Без ответа на эти вопросы, отклики сразу отправляю в Архив.
фильтр 1 + 2