Compare commits
2 Commits
3055cbaf3c
...
7becdb0902
| Author | SHA1 | Date | |
|---|---|---|---|
| 7becdb0902 | |||
| b9a8f91e1f |
@@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Material Symbols "calendar_month" in the adaptive icon safe zone. -->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<group
|
||||
android:pivotX="480"
|
||||
android:pivotY="480"
|
||||
android:scaleX="0.5"
|
||||
android:scaleY="0.5"
|
||||
android:translateY="480">
|
||||
<path
|
||||
android:fillColor="#00497D"
|
||||
android:pathData="M200,-80Q167,-80 143.5,-103.5Q120,-127 120,-160L120,-720Q120,-753 143.5,-776.5Q167,-800 200,-800L240,-800L240,-840Q240,-857 251.5,-868.5Q263,-880 280,-880Q297,-880 308.5,-868.5Q320,-857 320,-840L320,-800L640,-800L640,-840Q640,-857 651.5,-868.5Q663,-880 680,-880Q697,-880 708.5,-868.5Q720,-857 720,-840L720,-800L760,-800Q793,-800 816.5,-776.5Q840,-753 840,-720L840,-160Q840,-127 816.5,-103.5Q793,-80 760,-80L200,-80ZM200,-160L760,-160Q760,-160 760,-160Q760,-160 760,-160L760,-560L200,-560L200,-160Q200,-160 200,-160Q200,-160 200,-160ZM480,-400Q463,-400 451.5,-411.5Q440,-423 440,-440Q440,-457 451.5,-468.5Q463,-480 480,-480Q497,-480 508.5,-468.5Q520,-457 520,-440Q520,-423 508.5,-411.5Q497,-400 480,-400ZM320,-400Q303,-400 291.5,-411.5Q280,-423 280,-440Q280,-457 291.5,-468.5Q303,-480 320,-480Q337,-480 348.5,-468.5Q360,-457 360,-440Q360,-423 348.5,-411.5Q337,-400 320,-400ZM640,-400Q623,-400 611.5,-411.5Q600,-423 600,-440Q600,-457 611.5,-468.5Q623,-480 640,-480Q657,-480 668.5,-468.5Q680,-457 680,-440Q680,-423 668.5,-411.5Q657,-400 640,-400ZM480,-240Q463,-240 451.5,-251.5Q440,-263 440,-280Q440,-297 451.5,-308.5Q463,-320 480,-320Q497,-320 508.5,-308.5Q520,-297 520,-280Q520,-263 508.5,-251.5Q497,-240 480,-240ZM320,-240Q303,-240 291.5,-251.5Q280,-263 280,-280Q280,-297 291.5,-308.5Q303,-320 320,-320Q337,-320 348.5,-308.5Q360,-297 360,-280Q360,-263 348.5,-251.5Q337,-240 320,-240ZM640,-240Q623,-240 611.5,-251.5Q600,-263 600,-280Q600,-297 611.5,-308.5Q623,-320 640,-320Q657,-320 668.5,-308.5Q680,-297 680,-280Q680,-263 668.5,-251.5Q657,-240 640,-240Z" />
|
||||
</group>
|
||||
</vector>
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
||||
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
|
||||
</adaptive-icon>
|
||||
<background android:drawable="@mipmap/ic_launcher_background"/>
|
||||
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
||||
<monochrome android:drawable="@mipmap/ic_launcher_monochrome"/>
|
||||
</adaptive-icon>
|
||||
BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png
Normal file
|
After Width: | Height: | Size: 967 B |
BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 9.7 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 6.0 KiB |
128
public/privacy.css
Normal file
@@ -0,0 +1,128 @@
|
||||
@font-face {
|
||||
font-family: "Manrope";
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url("fonts/manrope-400.ttf") format("truetype");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Manrope";
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: url("fonts/manrope-700.ttf") format("truetype");
|
||||
}
|
||||
|
||||
:root {
|
||||
color-scheme: light;
|
||||
--primary: #6750a4;
|
||||
--surface: #fef7ff;
|
||||
--on-surface: #1d1b20;
|
||||
--on-surface-variant: #49454f;
|
||||
--container: #f3edf7;
|
||||
--outline-variant: #cac4d0;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
color-scheme: dark;
|
||||
--primary: #d0bcff;
|
||||
--surface: #141218;
|
||||
--on-surface: #e6e0e9;
|
||||
--on-surface-variant: #cac4d0;
|
||||
--container: #211f26;
|
||||
--outline-variant: #49454f;
|
||||
}
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
background: var(--surface);
|
||||
color: var(--on-surface);
|
||||
font: 400 1rem/1.6 "Manrope", system-ui, sans-serif;
|
||||
}
|
||||
|
||||
main {
|
||||
max-width: 44rem;
|
||||
margin: 0 auto;
|
||||
padding: 2.5rem 1rem 4rem;
|
||||
}
|
||||
|
||||
header {
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
align-items: center;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
header img {
|
||||
flex: none;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin: 0;
|
||||
font-size: clamp(1.5rem, 5vw, 2rem);
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin: 0 0 0.5rem;
|
||||
font-size: 1.15rem;
|
||||
}
|
||||
|
||||
.meta {
|
||||
margin: 0.25rem 0 0;
|
||||
color: var(--on-surface-variant);
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.lead {
|
||||
font-size: 1.075rem;
|
||||
}
|
||||
|
||||
section {
|
||||
margin-top: 1rem;
|
||||
padding: 1.25rem;
|
||||
border-radius: 20px;
|
||||
background: var(--container);
|
||||
}
|
||||
|
||||
section p:last-child,
|
||||
section ul:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
p,
|
||||
ul {
|
||||
margin: 0 0 0.75rem;
|
||||
}
|
||||
|
||||
ul {
|
||||
padding-left: 1.25rem;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin: 0 0 0.75rem;
|
||||
color: var(--on-surface-variant);
|
||||
}
|
||||
|
||||
dd:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--primary);
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
88
public/privacy.html
Normal file
@@ -0,0 +1,88 @@
|
||||
<!doctype html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Политика конфиденциальности — Расписание ПГУ</title>
|
||||
<meta name="description" content="Политика конфиденциальности приложения «Расписание ПГУ»: какие данные обрабатываются и где они хранятся.">
|
||||
<link rel="icon" href="icon.svg" type="image/svg+xml">
|
||||
<link rel="stylesheet" href="privacy.css">
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
<header>
|
||||
<img src="icon-192.png" alt="" width="56" height="56">
|
||||
<div>
|
||||
<h1>Политика конфиденциальности</h1>
|
||||
<p class="meta">Приложение «Расписание ПГУ» · редакция от 20 октября 2026 г.</p>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<p class="lead">«Расписание ПГУ» показывает расписание занятий Полоцкого государственного университета. Приложение не требует регистрации и не собирает персональные данные. Здесь описано, какие данные всё же обрабатываются и зачем.</p>
|
||||
|
||||
<section>
|
||||
<h2>Кто отвечает за приложение</h2>
|
||||
<p>Разработчик — Захар Тимошенко, частное лицо. Приложение не является официальным приложением университета. По любым вопросам о данных пишите на <a href="mailto:vp1984tanki@gmail.com">vp1984tanki@gmail.com</a>.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Что хранится на вашем устройстве</h2>
|
||||
<p>Эти данные остаются только на устройстве и не передаются разработчику:</p>
|
||||
<ul>
|
||||
<li>выбранная группа, подгруппа, скрытые занятия и недавние группы;</li>
|
||||
<li>копии расписаний для работы без интернета;</li>
|
||||
<li>настройки приложения: тема, напоминания, виджеты;</li>
|
||||
<li>в веб-версии — Word-файлы, которые вы импортировали сами.</li>
|
||||
</ul>
|
||||
<p>Чтобы удалить эти данные, очистите данные приложения в настройках Android или удалите приложение. В веб-версии очистите данные сайта в браузере. Если в Android включено резервное копирование, система может сохранять настройки приложения в вашем аккаунте Google по правилам Google.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Что передаётся на сервер</h2>
|
||||
<p>Приложение загружает расписание с сервера разработчика. Сервер получает документы из публичного каталога университета. В запросах передаются только параметры расписания: документ, группа, дата, а при поиске — имя преподавателя или номер аудитории.</p>
|
||||
<p>Как и любой веб-сервер, он видит IP-адрес устройства. Адрес используется только для ограничения числа запросов и защиты от перегрузки. Он хранится в оперативной памяти несколько минут и не записывается в журналы.</p>
|
||||
<p>Word-файлы, которые вы импортируете в веб-версии, обрабатываются в памяти сервера. Временные файлы удаляются сразу после разбора.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Чего в приложении нет</h2>
|
||||
<ul>
|
||||
<li>учётных записей и входа;</li>
|
||||
<li>аналитики, рекламы и рекламных идентификаторов;</li>
|
||||
<li>сторонних SDK для отслеживания и отчётов о сбоях;</li>
|
||||
<li>доступа к контактам, местоположению, камере, микрофону и файлам устройства.</li>
|
||||
</ul>
|
||||
<p>Данные не продаются и не передаются третьим лицам.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Разрешения Android</h2>
|
||||
<dl>
|
||||
<dt>Интернет</dt>
|
||||
<dd>Загрузка и обновление расписания.</dd>
|
||||
<dt>Уведомления</dt>
|
||||
<dd>Напоминания о парах и сообщения об изменениях в расписании. Их можно отключить в любой момент.</dd>
|
||||
<dt>Запуск при загрузке устройства</dt>
|
||||
<dd>Восстановление напоминаний после перезагрузки.</dd>
|
||||
<dt>Точные будильники</dt>
|
||||
<dd>Необязательно. Напоминания приходят точно ко времени, если вы разрешите это в настройках системы.</dd>
|
||||
</dl>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Безопасность</h2>
|
||||
<p>Обмен данными с сервером идёт по HTTPS. Ссылки «Поделиться расписанием» содержат только документ и группу. Подгруппа и скрытые занятия по ссылке не передаются.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Дети</h2>
|
||||
<p>Приложение рассчитано на студентов и не предназначено для детей младше 13 лет. Персональные данные детей не собираются.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Изменения политики</h2>
|
||||
<p>Если обработка данных изменится, эта страница будет обновлена, а дата редакции вверху изменится.</p>
|
||||
</section>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||