Skip to content
This repository has been archived by the owner on Jan 31, 2025. It is now read-only.
/ ANT Public archive

Разработка мобильного клиента, работающего под управлением ОС Android для храма

License

Notifications You must be signed in to change notification settings

FredNekrasov/ANT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ANT

Цель: удобный доступ к информации о храме через мобильное приложение.

Задачи:

  1. Разработать дизайн и интерфейс мобильного клиента, опираясь на веб-сайт храма.
  2. Интегрировать функционал для просмотра информации о новостях, расписании служб, контактной информации и других разделов, представленных на сайте храма.
  3. Оптимизировать производительность приложения для плавной работы на устройствах под управлением операционной системы Android.
  4. Провести тестирование приложения на различных устройствах, чтобы гарантировать стабильную работу и отзывчивость.

Практическая значимость проекта:

  1. Улучшение доступности информации: Мобильный клиент позволит увеличить доступность информации о храме для широкой аудитории пользователей мобильных устройств, что способствует привлечению новых посетителей и повышению осведомленности об объекте.
  2. Удобство пользования: Приложение обеспечивает удобный и простой способ получения актуальной информации о храме, его истории, событиях и расписании богослужений, что способствует повышению интереса и участия пользователей.
  3. Технологический прогресс: Разработка мобильного приложения демонстрирует использование современных технологий для улучшения взаимодействия организации с пользователем, что актуально в современном мире цифровизации.

Функциональные требования:

  1. Просмотр информации о храме, его истории и деятельности.
  2. Просмотр расписания богослужений.
  3. Отображение последних новостей и событий, связанных с храмом.
  4. Синхронизация с действующим сайтом www.hramalnevskogo.ru для актуализации информации.

Нефункциональные требования:

  1. Приложение должно быть разработано под управлением операционной системы Android версии 8.0 и выше.
  2. Интерфейс приложения должен быть интуитивно понятным и удобным для использования.
  3. Приложение должно быть стабильным, быстрым и безопасным.
  4. Должна быть предусмотрена возможность работы в офлайн-режиме для доступа к ранее загруженным данным.
  5. Приложение должно поддерживать различные разрешения экранов смартфонов и планшетов.

Архитектура, диаграммы и использованные технологии

Web API

Диаграмма классов

image

ANTWebAPI состоит из классической трехслойной архитектуры:

  1. data access layer(DAL) в основном отвечает за взаимодействие с базами данных, обеспечивает удобный, безопасный доступ к данным для других слоев.
  2. business logic layer(BLL) управляет бизнес-правилами и логикой приложения. Он обеспечивает: валидацию входных данных перед их использованием/сохранением, обработку транзакций и логику принятия решений.
  3. presentation layer(PL) отвечает за взаимодействие с клиентами. Данный слой обрабатывает запросы от клиента, отправляет их в бизнес-логику, получает ответы и передает их клиенту.

По диаграмме можно увидеть, что BLL использует интерфейсы, которые помогают инкапсулировать детали реализации DAL, обеспечивая безопасность и ясность использования только необходимых методов. Это позволяет слою бизнес-логики взаимодействовать с DAL без привязки к конкретной реализации, что упрощает изменения в слое доступа к данным. К тому же использование интерфейсов позволяет легко заменять одну реализацию DAL на другую (например, для тестирования или при изменении базы данных) без изменения кода BLL. PL же в свою очередь непосредственно вызывает необходимые функции без промежуточного уровня, потому что изменения в слое презентации, как правило, происходят реже, чем в слое бизнес-логики, что уменьшает необходимость в абстракции интерфейса для связи с BLL. При разработке данного web api следовал принципам kiss, solid и dry, но, скорее всего, не получилось следовать dry, т.к. есть места с бойлерплейтом.

Использованные технологии:

  • язык программирования - C#, .NET 8.
  • ASP.NET Core расширяет .NET инструментами и библиотеками, специально предназначенными для создания веб-приложений.
  • Microsoft.Extensions.DependencyInjection - DI framework для .NET.
  • EntityFrameworkCore - framework для взаимодействия с базой данных.
Android app

Упрощенная диаграмма классов

image

Разбор цветов:

  • #0000ff синий - DI.
  • #Ff0000 красный - зависимости от модулей.
  • #00FF00 зеленый - реализации интерфейсов.
  • #30d5c8 бирюзовый - классы, которые передаются в конструктор.

Domain модуль не зависит от модуля data или presentation. Он взаимодействует только с data, через интерфейс. Data модуль не зависит от других модулей, кроме domain. В нем есть репозиторий, который предоставляет интерфейс для доступа к данным. Presentation зависит от domain для получения данных и бизнес-логики, но не зависит от data. При зависимости presentation от data если изменить один модуль, и придется менять другой, что снижает гибкость и увеличивает вероятность ошибок. app основной модуль, который зависит от presentation, data и domain. Здесь настраивается основная логика приложения и связываются остальные модули.

Приложение соответствует SAA(Single Activity Architecture) и разработано по принципам Clean Architecture и SOLID, что обеспечивает четкое разделение слоев, ответственностей, делает код более читаемым и поддерживаемым. В чистой архитектуре каждый слой отвечает за свою часть (представление, бизнес-логика, данные). Поддерживая эту инкапсуляцию, повышается читаемость кода и уменьшается сложность. Главным принципом при разработке был KISS, т.е. стремление к простоте и минимализму в процессе разработки, что позволило избежать излишней сложности, сохранить код чистым, сделать приложение легким для понимания. А также DRY, чтобы избежать дублирующегося кода.

Использованные технологии:

  • язык программирования - kotlin v2.1.0.
  • jetpack compose (v1.7.6) - рекомендуемый Андроидом, современный набор инструментов для создания нативного интерфейса.
  • koin - мультиплатформенный, легковесный DI framework для kotlin.
  • sqlDelight - мультиплатформенная библиотека для взаимодействия с sqlite.
  • kotlinx-serialization-json - мультиплатформенная библиотека для преобразования kotlin классов в json и наоборот.
  • kotlinx-coroutines - библиотека для работы с корутинами.
  • ktor-client - мультиплатформенный асинхронный http клиент, который позволяет совершать запросы и обрабатывать ответы.
  • androidx-navigation-compose - для навигации между экранами внутри приложения.
  • coil - библиотека загрузки изображений.
parser

Диаграмма пакетов

image

Значения цветов стрелок такие же, как в пункте с Android App.

В данном проекте также используется Clean Architecture, однако вся кодовая база собрана в одном модуле, а разделение осуществляется через пакеты. Сначала мы планировали разработать проект на Kotlin, но из-за нехватки библиотек для парсинга данных решили отказаться от этой идеи. C# имел много доступных библиотек, но определиться с выбором было непросто, и мы не хотели рисковать. Однако в java была только одна и довольно-таки известная библиотека для парсинга html, поэтому выбор пал на него.

Использованные технологии:

  • язык программирования - java, jdk 21.
  • Dagger - compile-time DI framework.
  • jsoup - библиотека для извлечения данных из html.
  • gson - библиотека для преобразования объектов java в их json представление и наоборот.
  • gradle - система автоматической сборки.

About

Разработка мобильного клиента, работающего под управлением ОС Android для храма

Topics

Resources

License

Stars

Watchers

Forks