Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
724a0c5
Добавлены описания приложения для Google Play на 9 языках
Erdenian Jan 4, 2026
071f257
Добавлены графические элементы для Google Play на русском языке
Erdenian Jan 4, 2026
f577661
Добавлен тест для автоматической генерации скриншотов для Google Play
Erdenian Jan 5, 2026
b2700d8
Обновление расписания и заданий для скриншотов
Erdenian Jan 8, 2026
abcb2e7
Улучшения текстовок на разных языках
Erdenian Jan 8, 2026
9865533
Исправление терминологии в комметрариях
Erdenian Jan 9, 2026
c7c39c5
Улучшения текстовок
Erdenian Jan 9, 2026
043a9a3
Улучшены названия вариантов повторения для 4-недельного цикла в русск…
Erdenian Jan 9, 2026
9ae6b7e
Добавлена возможность выбора даты для генерации скриншотов
Erdenian Jan 9, 2026
70de5d8
Обновление скриншотов для Google Play
Erdenian Jan 9, 2026
67d8491
Включена публикация описаний и скриншотов в CI/CD
Erdenian Jan 9, 2026
cbcfb84
Обновление CHANGELOG.md
Erdenian Jan 9, 2026
626ce3b
Удалена избыточная зависимость espresso-core из модуля app
Erdenian Jan 9, 2026
a87e702
Конфигурация манифеста для соответствия семейной политике Google Play
Erdenian Jan 9, 2026
f59115e
Политика конфиденциальности перенесена в репозиторий
Erdenian Jan 9, 2026
b29afb0
Обновление политики конфиденциальности
Erdenian Jan 9, 2026
8d04bc7
Актуализация AGENTS.md
Erdenian Jan 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/master.yml
Original file line number Diff line number Diff line change
Expand Up @@ -106,4 +106,4 @@ jobs:
# Publish
# --------------------------------------
- name: Publish
run: ./gradlew publishReleaseBundle
run: ./gradlew :app:publishReleaseBundle :app:publishReleaseListing
24 changes: 24 additions & 0 deletions .run/Generate screenshots.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<component name="ProjectRunConfigurationManager">
<configuration name="Generate screenshots" default="false" factoryName="Gradle" type="GradleRunConfiguration">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" value="" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value=":app:generateScreenshots" />
</list>
</option>
<option name="vmOptions" />
</ExternalSystemSettings>
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
<DebugAllEnabled>false</DebugAllEnabled>
<RunAsTest>false</RunAsTest>
<method v="2" />
</configuration>
</component>
54 changes: 49 additions & 5 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,19 @@
* **Сборка:** Gradle Kotlin DSL, Version Catalogs (`libs.versions.toml`).
* **Архитектура:** Многомодульная (`app`, `features/*`, `core/*`, `common/*`).

## 2. Терминология
* **Lesson**: В коде и комментариях переводить как **"Занятие"**, а не "Урок". Это универсальный термин для школы и
вуза.
* **Semester**: Семестр или четверть.
* **Homework**: Домашнее задание.
## 2. Терминология и Локализация
Проект ориентирован одновременно на **студентов и школьников**. Тексты и термины должны быть максимально универсальными.

* **Lesson (Сущность):**
* В коде: `Lesson`.
* В UI (RU): Используйте термин **«Занятие»** (нейтральное) как основной. Термин «Урок» допускается только как опция
в выпадающих списках.
* В UI (EN): Используйте **"Class"** как основной термин. "Lesson" — только как опция.
* **Semester (Сущность):**
* В коде: `Semester`.
* В UI: Используйте термин **«Расписание»** (Schedule). Избегайте слов «Семестр» или «Четверть» в заголовках и общих
описаниях, так как они специфичны для конкретных учебных заведений.
* **Homework:** Домашнее задание.

## 3. Архитектура и Многомодульность

Expand Down Expand Up @@ -327,6 +335,8 @@
UI.
* **Подключение:** Для использования аналитики в фиче необходимо добавить зависимость
`implementation(project(":features:analytics:api"))` в `build.gradle.kts` и обновить интерфейс зависимостей модуля.
* **Анонимность:** Сбор данных производится **полностью анонимно**. Сбор рекламного идентификатора (AAID) технически
отключен.

### 14.2. Именование (Naming Conventions)
Мы используем стандартные соглашения Firebase/Google Analytics.
Expand Down Expand Up @@ -367,3 +377,37 @@
### 14.4. Свойства пользователя (User Properties)
Используйте `setUserProperty` для атрибутов, которые редко меняются и описывают сегмент пользователя.
* Примеры: `theme` (light/dark), `is_advanced_weeks_selector_enabled` (true/false).

### 14.5. Ограничения данных (Демография)
Из-за отключения AAID (см. раздел 15) в аналитике **отсутствуют** данные о:
* Пол и возраст (Demographics).
* Интересы (Interests).
* Google Signals (Cross-device tracking).

Это нормальное поведение. Не пытайтесь "починить" это включением AAID.

## 15. Требования Google Play и Безопасность

Приложение официально таргетируется на смешанную аудиторию (включая детей от 6 лет) и участвует в программе **Designed
for Families**. Это накладывает строгие ограничения на код и конфигурацию.

### 15.1. Запрет на Рекламные ID (AAID)
**Строго запрещено** включать сбор рекламного идентификатора или добавлять соответствующие разрешения. Это приведет к
бану приложения.

**Конфигурация в `AndroidManifest.xml` (`:app`):**
1. Явное удаление разрешений с помощью `tools:node="remove"`:
* `com.google.android.gms.permission.AD_ID`
* `android.permission.ACCESS_ADSERVICES_AD_ID`
* `android.permission.ACCESS_ADSERVICES_ATTRIBUTION`
2. Метаданные для отключения в Firebase:
* `google_analytics_adid_collection_enabled = false`
* `google_analytics_default_allow_ad_personalization_signals = false`

Не удаляйте эти строки и комментарии к ним.

### 15.2. Политика конфиденциальности
* Файл: `PRIVACY_POLICY.md` в корне проекта.
* Содержание: Должно честно отражать работу приложения (локальная БД, отсутствие рекламы, анонимная аналитика).
* При добавлении новых SDK (например, для аналитики или сбоев) обязательно обновляйте этот файл и проверяйте их на
соответствие семейной политике (никакого сбора PII или AAID).
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Changed
- Улучшение и исправление текстовок на всех языках

## [0.8.0] - 2026-01-03

### Fixed
Expand Down
82 changes: 82 additions & 0 deletions PRIVACY_POLICY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Privacy Policy

**Last updated:** January 10, 2026

Erdenian Apps built the Student Assistant app as an Open Source app. This Service is provided by Erdenian Apps at no
cost and is intended for use as is.

This page is used to inform visitors regarding our policies with the collection, use, and disclosure of Personal
Information if anyone decided to use our Service.

By using the Student Assistant app, you agree to the collection and use of information in relation to this policy.

## 1. Information Collection and Use

### A. Local Data (Offline Storage)
The core functionality of the App is designed to work **offline**.
* **User Content:** Data you enter into the App (including schedules, subject names, teacher names, and homework
descriptions) is stored strictly locally on your device using a local database.
* **No Cloud Sync:** We do not transmit your schedule or homework data to our servers or any third-party servers.
* **Data Deletion:** The information that you enter is retained on your device and is not collected by us in any way. If
you uninstall the App or clear its data via system settings, all your local data will be permanently deleted.

### B. Telemetry and Analytics (Anonymous)
We use third-party services to improve the stability and usability of our App. These services may collect information
used to identify your device, but **not** your identity.

**Services used:**
1. **Google Analytics for Firebase:** Used to analyze usage patterns (e.g., screen views, button clicks) to improve the
user experience.
2. **Firebase Crashlytics:** Used to collect crash reports ("Log Data"). This data may include information such as your
device Internet Protocol ("IP") address, device name, operating system version, the configuration of the app when
utilizing our Service, the time and date of your use of the Service, and other statistics.

**Important regarding Advertising IDs:**
To ensure the privacy of all our users, including children:
* We have **disabled** the collection of the Android Advertising ID (AAID).
* We have **disabled** ad personalization signals.
* We do not use this data for marketing or advertising purposes.

## 2. Third-Party Service Providers

We may employ third-party companies and individuals to facilitate our Service, provide the Service on our behalf, or
assist us in analyzing how our Service is used.

Links to the privacy policy of third-party service providers used by the app:
* [Google Play Services](https://www.google.com/policies/privacy/)
* [Google Analytics for Firebase](https://firebase.google.com/policies/analytics)
* [Firebase Crashlytics](https://firebase.google.com/support/privacy/)

## 3. Cookies

Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. This Service does
not use these "cookies" explicitly. However, the app may use third-party code and libraries that use "cookies" to
collect information and improve their services. You have the option to either accept or refuse these cookies and know
when a cookie is being sent to your device.

## 4. Children’s Privacy

Our App is designed to be useful for students of all ages, including children under the age of 13. We do not knowingly
collect personally identifiable information from children under 13 years of age.

Since the App's main data (schedule/homework) is stored locally and not shared with us, and the analytics data is
anonymized (without Advertising ID), we ensure a safe environment.

If you are a parent or guardian and you are aware that your child has provided us with Personal Information (outside of
the standard anonymous telemetry), please contact us so that we will be able to do necessary actions.

## 5. Security

We value your trust in providing us your Personal Information (even if it is stored locally), thus we are striving to
use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or
method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security.

## 6. Changes to This Privacy Policy

We may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any
changes. We will notify you of any changes by posting the new Privacy Policy on this page.

## 7. Contact Us

If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact us at
**erdenianapps@gmail.com**.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
## Основные функции

### Расписание
- Создание и редактирование расписания на семестр
- Создание и редактирование расписания
- Добавление занятий: предмет, преподаватель, аудитория, время
- Гибкая настройка повторений (по дням недели, по датам, чередование недель)
- Поддержка нескольких расписаний (семестров)
- Поддержка нескольких расписаний
- Календарь для навигации по датам

### Домашние задания
Expand All @@ -22,7 +22,7 @@

### Настройки
- Установка времени начала первого занятия
- Настройка длительности уроков и перерывов
- Настройка длительности занятий и перерывов
- Включение расширенного режима выбора недель

---
Expand All @@ -47,7 +47,7 @@
app/ — Основной модуль приложения, связывание компонентов

features/
├── schedule/ — Экран расписания, редактор занятий и семестров
├── schedule/ — Экран расписания, редактор расписания
├── homeworks/ — Экран домашних заданий и их редактор
├── settings/ — Экран настроек
└── repository/ — Слой данных (Room Database, DAO, реализации репозиториев)
Expand Down
Loading