Мобильные приложенияФронтендJavaScriptHTML / CSS

Как создать мобильное приложение с помощью ИИ: собираем простой трекер привычек

Делаем с ИИ мобильный трекер привычек как PWA: интерфейс для телефона, сохранение отметок, manifest, установка на устройство и проверка результата.

Кодик

Автор

7 мин чтения

Самый короткий путь к первому приложению с ИИ заключается не в магазине приложений, а в маленьком PWA, которое работает в браузере и может устанавливаться на устройство. Мы соберём трекер трёх привычек. Кнопки будут хранить сегодняшние отметки в localStorage, а manifest задаст имя, иконку и отдельное окно. Это честный мобильный прототип, который можно улучшать дальше.

Запрос «сделай приложение как популярный сервис» слишком велик для первого проекта. В нём одновременно появляются экраны, регистрация, база, уведомления, синхронизация и публикация в магазинах. Сузьте задачу до одного ежедневного действия. Пользователь открывает трекер, отмечает воду, прогулку и чтение, закрывает его, а после повторного открытия видит отметки этого дня. Такая версия уже даёт законченный цикл и остаётся понятной начинающему.

1Сужаем

Один экран, три привычки и сохранение только на текущем устройстве.

2Программируем

HTML рисует список, JavaScript меняет состояние и записывает его локально.

3Устанавливаем

Manifest и HTTPS позволяют поддерживающему браузеру предложить установку PWA.

Какой тип приложения мы создаём с ИИ

PWA остаётся веб-приложением: оно построено на HTML, CSS и JavaScript и выполняется браузером. После установки поддерживающий браузер может показывать его отдельным окном и добавить иконку на устройство. Это не то же самое, что нативная программа из Swift или Kotlin, и не автоматическая публикация в App Store или Google Play. Зато один проект сразу открывается по ссылке и подходит для проверки идеи.

ВариантЧто нужноПодходит для первого трекера
Обычная веб-страницаHTML, CSS, JavaScript, URLДа, но открывается как сайт
PWAВеб-код, manifest, иконки, HTTPSДа, может устанавливаться
Нативное приложениеSwift для iOS или Kotlin для AndroidПозже, если нужны возможности платформы
КонструкторВизуальный редактор и правила сервисаБыстро, но меньше контроля над кодом

Схема создания мобильного PWA приложения с ИИ от идеи до установки
Один пользовательский цикл проще проверить, чем десять экранов без работающего состояния.

Сначала договоритесь о границе данных. В этой версии отметки живут только в браузере конкретного устройства. Между телефоном и ноутбуком они не синхронизируются. Для общей учётной записи потребуется сервер, авторизация и отдельная модель безопасности.

Пишем экран и сохранение привычек

Создайте index.html. Ключ хранилища включает текущую дату, поэтому у каждого дня своё состояние. При нажатии кнопка переключает значение, сохраняет объект и обновляет подпись. ИИ удобно просить объяснить функции readState, saveState и render отдельно: тогда вы увидите путь данных от клика до экрана.

<!doctype html>
<html lang="ru">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="manifest" href="manifest.webmanifest">
  <meta name="theme-color" content="#4f46e5">
  <title>Три шага</title>
  <style>
    * { box-sizing: border-box; }
    body { margin: 0; min-height: 100vh; padding: 24px; font: 18px/1.4 system-ui;
      color: #17203d; background: #eef2ff; }
    main { width: min(480px, 100%); margin: 40px auto; }
    .habit { width: 100%; margin: 10px 0; padding: 20px; border: 2px solid #c7d2fe;
      border-radius: 20px; background: white; color: inherit; font: inherit; text-align: left; }
    .habit.done { border-color: #16a34a; background: #dcfce7; }
    .mark { float: right; font-weight: 700; }
  </style>
</head>
<body>
  <main>
    <p id="date"></p>
    <h1>Три шага на сегодня</h1>
    <button class="habit" data-id="water">Выпить воду <span class="mark"></span></button>
    <button class="habit" data-id="walk">Пройтись 20 минут <span class="mark"></span></button>
    <button class="habit" data-id="read">Прочитать 10 страниц <span class="mark"></span></button>
  </main>
  <script>
    const today = new Date().toISOString().slice(0, 10);
    const storageKey = 'habits:' + today;
    const state = JSON.parse(localStorage.getItem(storageKey) || '{}');

    document.querySelector('#date').textContent = 'Дата: ' + today;

    function saveState() {
      localStorage.setItem(storageKey, JSON.stringify(state));
    }

    function render(button) {
      const done = Boolean(state[button.dataset.id]);
      button.classList.toggle('done', done);
      button.querySelector('.mark').textContent = done ? 'Готово' : 'Отметить';
      button.setAttribute('aria-pressed', String(done));
    }

    document.querySelectorAll('.habit').forEach((button) => {
      render(button);
      button.addEventListener('click', () => {
        state[button.dataset.id] = !state[button.dataset.id];
        saveState();
        render(button);
      });
    });
  </script>
</body>
</html>
Как ведёт себя прототип
  • Нажатая привычка становится зелёной, получает подпись «Готово» и значение aria-pressed="true".
  • После перезагрузки отметка остаётся, потому что объект записан в localStorage для текущего origin.
  • На следующий день изменится ключ вида habits:2026-09-15, и экран начнёт новый список отметок.

Поток данных трекера привычек между кнопкой JavaScript и localStorage
Клик меняет объект, запись сохраняет его, а render отражает состояние на экране.

Добавляем manifest и условия установки

Рядом с HTML создайте manifest.webmanifest и две PNG-иконки 192 на 192 и 512 на 512 пикселей. В HTML уже есть ссылка rel="manifest". Для Chromium-браузеров manifest должен содержать имя или короткое имя, иконки, стартовый адрес и режим отображения. Публиковать приложение нужно по HTTPS; для локальной проверки подходит localhost или 127.0.0.1. Интерфейс установки зависит от браузера и системы.

Поле manifestПримерЗачем нужно
nameТри шагаПолное название приложения
short_nameПривычкиКороткая подпись у иконки
start_url./Адрес при запуске установленного приложения
displaystandaloneЗапрос отдельного окна без обычной адресной строки
iconsPNG 192 и 512 pxИконки для интерфейса установки и системы
theme_color#4f46e5Цвет поддерживаемых элементов браузера и системы
Manifest не превращает file:// в устанавливаемое приложение. Открытие HTML двойным щелчком подходит для интерфейса, но полноценную проверку установки проводите с локального HTTP-сервера и затем с публичного HTTPS-адреса.

Практика: превращаем трекер в PWA

Соберите проект маленькими слоями. Сначала подтвердите сохранение без manifest, затем добавьте метаданные и иконки, после этого откройте через сервер. Не просите ИИ одновременно создавать дизайн, базу, авторизацию и уведомления. Каждая из этих функций добавляет отдельное состояние и отдельный источник ошибок.

Семь проверок на телефоне и компьютере
  1. Создайте index.html, отметьте две привычки и обновите страницу. Обе отметки должны сохраниться.
  2. Откройте Application или Storage в DevTools и найдите ключ текущей даты в Local Storage.
  3. Создайте manifest с именем, start_url: "./", display: "standalone", цветами и двумя иконками.
  4. Запустите в папке python -m http.server 8000 и откройте http://localhost:8000.
  5. Проверьте manifest в DevTools: браузер должен загрузить файл и обе иконки без 404.
  6. Опубликуйте папку по HTTPS и откройте адрес на телефоне. Найдите установку или добавление на главный экран в меню браузера.
  7. Запустите приложение с иконки, измените отметку, полностью закройте окно и откройте снова.
Что считать готовым результатом
  • Три кнопки удобно нажимаются на ширине 360 пикселей, подписи не обрезаются.
  • Состояние текущего дня переживает перезагрузку и повторный запуск.
  • Manifest и иконки загружаются без ошибок, а приложение доступно по HTTPS.
  • Если браузер поддерживает установку и выполнены его критерии, трекер запускается с иконки в отдельном режиме.

Матрица проверки PWA интерфейса хранения manifest и установки
Рабочий экран, сохранение и установка проверяются отдельно, поэтому причина сбоя остаётся видимой.

Где чаще всего ломается приложение, созданное с ИИ

ИИ хорошо связывает знакомые API, но не видит ваш реальный браузер, адрес публикации и содержимое DevTools. Он может предложить устаревший критерий установки, абсолютный путь, которого нет на проде, или серверную функцию без сервера. Возвращайте в диалог точные данные: URL файла, HTTP-статус, текст ошибки и ожидаемое действие.

Все привычки используют один id

Одна отметка меняет несколько кнопок. Значение data-id должно быть уникальным для каждой привычки.

Приложение открывают только через file://

Интерфейс может работать, но установка и поведение origin проверяются через локальный сервер или HTTPS.

Иконки указаны, но файлов нет

Manifest загружается, однако запросы icon-192.png и icon-512.png возвращают 404.

localStorage называют синхронизацией

Данные остаются внутри конкретного origin и профиля браузера. На другом устройстве появится пустое состояние.

Сразу добавляют уведомления и аккаунт

Сначала завершите локальный ежедневный цикл. Затем проектируйте разрешения, сервер и защиту данных отдельными задачами.

Проверяйте фактический режим запуска. Поле display: standalone выражает предпочтение. Реальный интерфейс зависит от поддержки браузера, системы и того, действительно ли приложение установлено. Технические детали сверены с руководством MDN по установке PWA.
Короткие ответы
Это настоящее мобильное приложение?

Это веб-приложение PWA. Поддерживающий браузер может установить его на устройство, но оно продолжает работать на веб-технологиях.

Где хранятся отметки?

В localStorage текущего origin и профиля браузера. Между устройствами они не синхронизируются.

Зачем в ключе дата?

Чтобы новый день получал отдельный объект отметок и не перезаписывал предыдущий.

Что нужно для установки?

Manifest с нужными полями, подходящие иконки, HTTPS или localhost и браузер, который поддерживает установку.

Обязателен ли service worker?

Многие PWA используют его для офлайн-режима, но требования установки зависят от браузера. Для этого урока сначала проверяется manifest и основной сценарий.

Добавляйте по одной настоящей возможности

Закрепите работу с событиями и объектами в курсе JavaScript, а мобильную сетку в курсе CSS. Привычки удобно расширить формой, которую вы уже встретите в проекте списка задач.

Перед следующей версией прочитайте что происходит после запуска мобильного приложения, проверьте адаптивность интерфейса и не переносите токены в браузер, о чём напоминает разбор мобильной безопасности. Хаб об устройстве приложений и сайтов поможет выбрать следующий стек.