Skip to content

TheLastFlame/yss_todo

Repository files navigation

YSS ToDo

YSS ToDo

Простое ToDo приложение, создаваемое в рамках летней школы Яндекса.

Features

  • Flutter flavor для dev и normal окружения, отличаются названиями пакета и в лаунчере

  • Router (Navigator 2.0) инкапсулированная с помощью абстрактного класса навигация, с поддержкой диплинков для открытия приложения и создания задачи, а так же для открытия конкретной задачи.

    https://ysstodo.pages.dev/newTask

    https://ysstodo.pages.dev/task/id

    (На Android 12+ необходимо дать приложению разрешение на открытие этих ссылок в настройках системы)

  • Специальный режим для планшетов и ландскейпной ориентации.

    Скриншоты:

    image image

  • Firebase Crashlytics и Firebase Analytics

    Скрины

    image

  • Firebase App Distribution

  • Github Workflow с линтером, форматером, сборкой и деплоем в FAD

    Скрин

    image

  • Работа с сервером:

    • Реализованы функции добавления, изменения, удаления тасков.
    • Реализована функция загрузки тасков при запуске приложения
    • Индикация факта загрузки с сервера
    • Обработка основных возможных ошибок
  • Сохранение данных в локальном хранилище для офлайн работы

  • Полноценный офлайн режим с последующей доотправкой данных при выходе в сеть

    Мердж происходит по пронципу last-to-win, сверяются даты удаления / изменения, сохраняется наиболее свежая версия (или удаляется, если позже всего было произведено удаление)

  • Несколько простых юнит тестов бизнес логики

  • Интеграционный тест добавления задачи

  • Локализация Russian/English с поддержкой Android 12+ переключения языков для конкретного приложения.

    Подробнее:

  • Тёмная/Светлая тема.

    Превью:
    Dark Light
  • Анимированный заголовок, скрывающий часть элементов при прокрутке.

  • Анимированное добавление и удаление ивентов.

  • Анимированная смена статуса ивента

Demo

https://ysstodo.pages.dev — web версия [временно неактуально]

Download

Вы можете найти последнюю версию для Android на странице Github Releases.

Расшифровка версий:

  • app-arm64-v8a-release.apk — 64-битный релиз для всех современных устройств
  • app-arm-v7a-release.apk — 32-битный релиз для очень старых устройств, не поддерживающих релиз выше
  • app-x86_64-release.apk — релиз для экотических андроид устройств не с arm процессорами (amd/intel)

Build

Для самостоятельной сборки необходимо

  • указать переменные host и token с помощью Dart define

Пример команды: flutter build apk --split-per-abi --dart-define TOKEN=your_token --dart-define HOST=https://google.com

  • установить firebase по инструкции и выполнить команду flutterfire config