{"id":20059132,"url":"https://github.com/ehlvg/Diploma","last_synced_at":"2025-05-05T15:31:09.349Z","repository":{"id":243385747,"uuid":"808722316","full_name":"amaruelle/Diploma","owner":"amaruelle","description":null,"archived":false,"fork":false,"pushed_at":"2024-06-13T15:11:11.000Z","size":52570,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-09-24T22:48:30.145Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/amaruelle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-31T17:13:20.000Z","updated_at":"2024-06-13T15:11:15.000Z","dependencies_parsed_at":"2024-06-13T17:56:57.700Z","dependency_job_id":null,"html_url":"https://github.com/amaruelle/Diploma","commit_stats":null,"previous_names":["bulkabuka/diploma","amaruelle/diploma"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amaruelle%2FDiploma","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amaruelle%2FDiploma/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amaruelle%2FDiploma/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amaruelle%2FDiploma/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amaruelle","download_url":"https://codeload.github.com/amaruelle/Diploma/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224452831,"owners_count":17313668,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T13:06:08.428Z","updated_at":"2025-05-05T15:31:01.774Z","avatar_url":"https://github.com/amaruelle.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Выступление\n\n## Актуальность темы\n\nРазрешите представить вам дипломный проект на тему \"Разработка мобильного приложения 'Планировщик задач'\". \nВ настоящее время большинство приложений для проектной работы и ведения личных дел сталкиваются с рядом ограничений, \nтаких как централизация системы, что означает полную зависимость пользователей от разработчика, частичная или полная \nзакрытость системы, что делает невозможным внедрение новых функций и возможностей самостоятельно (персонализация), \nа также коммерциализация сервисов, что приводит к появлению или увеличению цен, введению платных подписок и услуг, \nи отвлекает пользователей от основной цели использования.\n\nЭти проблемы можно решить, создав систему, которая акцентирует внимание на принципах децентрализованности и открытости, \nа также ставит в приоритет безопасность и неприкосновенность данных пользователей. \nИменно такой системой является проект Uptask. \n\nОн позволяет вести свои дела, не отвлекаясь на рекламу, не беспокоясь о качестве интернет-связи или о внезапном \nзакрытии проекта, и не переживая о безопасности своих данных. \n\nUptask полностью локален, все данные хранятся непосредственно на устройстве пользователя, \nа исходный код проекта полностью открыт и позволяет персонализировать систему под свои нужды.\n\nПомимо этого, актуальной является и сама сфера планирования для любого пользователя - \nона пользуется большим спросом в современном мире, где время является самым ценным ресурсом, а информационный шум зашкаливает.\n\nПланирование своей жизни и её структуризация решает проблемы рассеянности, забывчивости, \nпомогает распределять приоритеты задач, проводить самоанализ и саморазвитие.\n\n## Постановка задачи\n\nОсновной задачей дипломного проекта является разработка мобильного приложения планировщика задач \nс расширенным функционалом категоризации, сортировки, группировки задач.\n\nОсновные этапы включают проектирование и разработку архитектуры приложения, создание \nудобного пользовательского интерфейса, обеспечение безопасности данных и \nпроведение тестирования для оценки качества работы приложения.\n\n## Среды программирования\n\nДля разработки приложения Uptask были использованы следующие среды программирования:\n\n- **Язык программирования Kotlin**: Kotlin – это современный статически типизированный язык программирования, разработанный компанией JetBrains, который широко используется для разработки Android-приложений благодаря своей лаконичности, безопасности и интероперабельности с Java.\n\n- **Фреймворк Jetpack Compose**: Jetpack Compose – это современный инструмент для создания пользовательского интерфейса от Google, который упрощает и ускоряет процесс разработки UI за счет декларативного подхода и интеграции с Kotlin.\n\n- **База данных H2**: H2 Database – это легковесная встроенная реляционная база данных, которая обеспечивает локальное хранение данных на устройстве пользователя, не требуя отдельного серверного процесса, что делает её идеальной для мобильных приложений.\n\n- **Android SDK**: Android Software Development Kit (SDK) – это набор инструментов и библиотек от Google, которые предоставляют разработчикам средства для создания, тестирования и отладки приложений на платформе Android.\n\n- **Android Studio**: Android Studio – это официальная интегрированная среда разработки (IDE) для Android от Google, которая предоставляет мощные инструменты для редактирования кода, отладки, тестирования и анализа производительности, а также тесную интеграцию с Android SDK и Kotlin.\n\n\u003e Каждая из этих технологий играет ключевую роль в обеспечении функциональности, производительности и безопасности приложения Uptask. Kotlin обеспечивает надежность и простоту кода, Jetpack Compose ускоряет разработку интерфейса, H2 надежно хранит данные локально, Android SDK предоставляет необходимые библиотеки и инструменты, а Android Studio объединяет все эти компоненты в удобной и мощной среде разработки.\n\n## Функции приложения\n\nПриложение Uptask включает в себя следующие основные функции:\n\n#### 1. Регистрация и аутентификация пользователей\n- **Регистрация нового пользователя**: Пользователи могут создать новый аккаунт, предоставив необходимые данные, такие как логин и пароль.\n- **Аутентификация**: Есть возможность войти в приложение, используя свои учетные данные. Аутентификация обеспечивает безопасность и доступ к своей информации.\n\n#### 2. Управление списками задач\n- **Создание списков задач**:  Создание новых списков задач, которые помогут им организовывать свои дела по категориям или проектам.\n- **Редактирование списков задач**: Возможность изменять название и эмодзи списков задач, если это требуется.\n- **Удаление списков задач**: Пользователи могут удалять ненужные списки задач, чтобы поддерживать актуальность своей информации.\n\n#### 3. Управление задачами\n- **Создание задач**: Пользователи могут добавлять новые задачи в любой из своих списков. При создании задачи можно указать её название, описание, дату выполнения, приоритет, и если требуется - установить напоминание.\n- **Редактирование задач**: Возможность изменять детали задач, такие как название, описание, дату выполнения, приоритет и статус выполнения при её обновлении.\n- **Удаление задач**: Пользователи могут удалять задачи, которые больше не актуальны.\n- **Установка статуса выполнения**: Пользователи могут отмечать задачи как выполненные или невыполненные, что помогает отслеживать прогресс.\n\n#### 4. Управление тегами\n- **Добавление тегов к задачам**: Пользователи могут присваивать теги задачам для лучшей организации и поиска.\n- **Удаление тегов**: Пользователи могут удалять ненужные теги.\n\n#### 5. Журналирование действий\n- **Отслеживание изменений**: Приложение сохраняет историю изменений задач, таких как создание, редактирование и удаление, что позволяет отображать статистику.\n\n#### 6. Напоминания и уведомления\n- **Установка напоминаний**: Пользователи могут устанавливать напоминания для задач, чтобы не забывать о важных делах.\n- **Получение уведомлений**: Приложение отправляет уведомления пользователям, когда наступает время выполнения задачи или за определенное время до этого.\n\n#### 7. Интерфейс пользователя\n- **Простота и удобство использования**: Приложение предлагает интуитивно понятный интерфейс, который позволяет пользователям легко создавать, редактировать и управлять своими задачами.\n\n#### 8. Безопасность данных\n- **Хранение данных**: Все пользовательские данные хранятся в локальном кеше приложения, что обеспечивает безопасность и конфиденциальность.\n\n#### 9. Доступность и офлайн-режим\n- **Работа в офлайн-режиме**: Приложение позволяет пользователям управлять своими задачами даже без подключения к интернету. Все изменения синхронизируются при восстановлении подключения.\n\nЭти функции делают Uptask мощным инструментом для управления задачами, обеспечивая пользователям гибкость, безопасность и удобство в повседневной жизни и работе.\n\nОсновные исходные данные включают в себя следующее.\n1. Пользовательские данные:\n  - Логин: Имя пользователя, используемое для входа в систему;\n  - Пароль: Секретная комбинация символов для доступа к аккаунту.\n\n2. Данные задач:\n  - Название задачи: Краткое описание или заголовок задачи;\n  - Описание задачи: Детальное описание того, что нужно выполнить;\n  - Дата выполнения: Срок, к которому задача должна быть выполнена;\n  - Приоритет: Важность задачи по сравнению с другими задачами;\n  - Статус выполнения: указывает, выполнена задача или нет;\n  - Напоминание (за сколько времени до срока напомнить).\n\n3. Данные списков задач:\n  - Название списка: Название, идентифицирующее список задач.\n  - Эмодзи или иконка: Графический символ, ассоциирующийся со списком.\n  - Задачи: Ссылки на задачи, включенные в список.\n\n4. Данные для аналитики:\n  - Дата начала периода: Начало временного промежутка для анализа.\n  - Дата окончания периода: Конец временного промежутка для анализа.\n\nВыходные данные это сами задачи, их отображение на экране, аналитическая информация.\n\n## Схема базы данных\n\nОсновные сущности созданной базы данных, а также связи между ними представлены на следующем рисунке:\n\n![ER Diagram.png](ER_Diagram.png)\n\nСхема базы данных приложения Uptask включает несколько таблиц, каждая из которых отвечает за определенные аспекты работы с задачами и пользователями. Ниже приведено описание основных таблиц и их взаимосвязей:\n\n- **Пользователи (Users)**: Эта таблица хранит информацию о пользователях приложения. Включает поля: `ID` (идентификатор пользователя, первичный ключ), `LOGIN` (логин пользователя) и `PASSWORD` (пароль). Эта таблица является основной для всех данных, связанных с пользователями.\n\n- **Списки задач (TaskLists)**: Таблица списков задач хранит информацию о различных проектах, создаваемых пользователями. Включает поля: `ID` (идентификатор списка, первичный ключ), `userId` (идентификатор пользователя, внешний ключ), `NAME` (название списка) и `EMOJI` (эмодзи для визуальной идентификации списка). Связана с таблицей пользователей по полю `userId`, что позволяет хранить списки задач конкретных пользователей.\n\n- **Пользовательские задачи (UserTasks)**: Таблица задач хранит информацию о всех задачах, создаваемых пользователями. Включает поля: `ID` (идентификатор задачи, первичный ключ), `userId` (идентификатор пользователя, внешний ключ), `taskListId` (идентификатор списка задач, внешний ключ), `TASK` (название задачи), `DESCRIPTION` (описание задачи), `dueDate` (срок выполнения), `isDone` (статус выполнения), `PRIORITY` (приоритет задачи). Связана с таблицами пользователей и списков задач по полям `userId` и `taskListId`, что позволяет отслеживать задачи конкретных пользователей и их проектов.\n\n- **Теги задач (TaskTags)**: Эта таблица хранит теги, связанные с задачами. Включает поля: `ID` (идентификатор тега, первичный ключ), `taskId` (идентификатор задачи, внешний ключ) и `TAG` (текст тега). Связана с таблицей задач по полю `taskId`. Так как у одной задачи может быть несколько тегов, они были вынесены в отдельную таблицу.\n\n- **Логи (Logs)**: Таблица логов хранит историю изменений, внесенных в задачи. Включает поля: `ID` (идентификатор лога, первичный ключ), `userId` (идентификатор пользователя, внешний ключ), `taskId` (идентификатор задачи, внешний ключ), `DATE` (дата изменения) и `ACTION` (тип изменения: создание, обновление, удаление). Связана с таблицами пользователей и задач по полям `userId` и `taskId`, что позволяет отслеживать изменения, сделанные конкретными пользователями в конкретных задачах, а также позволяет собирать статистику по ним и отображать в соответствующем разделе.\n\n\u003e Эти таблицы вместе обеспечивают функциональность приложения Uptask, позволяя пользователям управлять своими задачами, добавлять теги для лучшей организации и анализировать свою продуктивность. Связи между таблицами обеспечивают целостность данных и позволяют выполнять сложные запросы для анализа и отображения информации. Каждая задача принадлежит своему списку, а список пользователю, таким образом соблюдается третья нормальная форма.\n\n## Структура приложения\n\nПриложение Uptask состоит из следующих основных компонентов:\n\n- Модуль управления задачами: отвечает за создание, редактирование, удаление и сортировку задач.\n- Модуль напоминаний: обеспечивает установку и управление напоминаниями для задач.\n- Модуль аналитики: генерирует отчеты о выполнении и невыполнении задач.\n- Модуль профиля пользователя: позволяет изменять логин и пароль пользователя, а также удаление БД.\n- Модуль экспорта: моментальный экспорт данных в читаемый другими программами формат.\n\n## Интерфейс приложения\n\nДалее представлены скриншоты интерфейса приложения.\n\n[РИСУНОК]\n\n## Обеспечение защиты\n\nБезопасность данных пользователей является одним из ключевых аспектов приложения Uptask. Для обеспечения защиты были предприняты следующие меры:\n\n- Все данные хранятся локально на устройстве пользователя и не передаются через интернет.\n- Система аккаунтов с обязательной авторизацией для доступа к функционалу\n\nВ результате, проект Uptask представляет собой современное и безопасное решение для управления задачами, которое решает множество проблем, присущих существующим аналогам, и обеспечивает пользователям высокую степень контроля и безопасности их данных.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fehlvg%2FDiploma","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fehlvg%2FDiploma","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fehlvg%2FDiploma/lists"}