vault backup: 2026-04-29 14:14:13

This commit is contained in:
2026-04-29 14:14:13 +03:00
parent 3f0dfdbd95
commit 543cdad3e0
21 changed files with 2 additions and 2 deletions

View File

@@ -0,0 +1,324 @@
# Pulse — Архитектура проекта
## Обзор
**Pulse** — персональное productivity-приложение для управления задачами, привычками и напоминаниями с интеграцией Telegram-бота.
## Технологический стек
### Backend (pulse-api)
- **Язык:** Go 1.22
- **Web-фреймворк:** chi/v5
- **База данных:** PostgreSQL 16
- **ORM:** sqlx (raw SQL + struct mapping)
- **Аутентификация:** JWT (access 15 мин / refresh 365 дней)
- **Email:** Resend API
- **Telegram:** go-telegram-bot-api/v5
- **Scheduler:** robfig/cron/v3
- **Контейнеризация:** Docker + Docker Compose
### Frontend (pulse-web)
- **Фреймворк:** React 18
- **Сборщик:** Vite 5
- **Стили:** TailwindCSS
- **Состояние:** Zustand (auth), TanStack Query (data fetching)
- **Анимации:** Framer Motion
- **Иконки:** Lucide React
- **Контейнеризация:** nginx:alpine
### Инфраструктура
- **Хостинг:** VM Ubuntu (192.168.31.60)
- **Reverse proxy:** Nginx Proxy Manager
- **SSL:** Let's Encrypt (auto-renew)
- **Git:** Gitea (git.digital-home.site)
- **Домены:**
- API: api.digital-home.site
- Web: pulse.digital-home.site
## Структура Backend
```
homelab-api/
├── cmd/api/
│ └── main.go # Точка входа, инициализация
├── internal/
│ ├── bot/
│ │ ├── bot.go # Telegram bot, long polling
│ │ └── handlers.go # Обработчики команд и callback
│ ├── config/
│ │ └── config.go # Загрузка переменных окружения
│ ├── handler/
│ │ ├── auth.go # Регистрация, логин, JWT
│ │ ├── habits.go # CRUD привычек
│ │ ├── health.go # Health check
│ │ ├── profile.go # Профиль пользователя
│ │ └── tasks.go # CRUD задач
│ ├── middleware/
│ │ └── auth.go # JWT middleware
│ ├── model/
│ │ ├── habit.go # Модель привычки
│ │ ├── task.go # Модель задачи
│ │ └── user.go # Модель пользователя
│ ├── repository/
│ │ ├── db.go # Подключение к PostgreSQL
│ │ ├── habit.go # SQL-запросы для привычек
│ │ ├── task.go # SQL-запросы для задач
│ │ └── user.go # SQL-запросы для пользователей
│ ├── scheduler/
│ │ └── scheduler.go # Cron jobs для уведомлений
│ └── service/
│ ├── auth.go # Бизнес-логика авторизации
│ ├── email.go # Отправка email через Resend
│ ├── habit.go # Бизнес-логика привычек
│ └── task.go # Бизнес-логика задач
├── Dockerfile
├── docker-compose.yml
├── go.mod
└── go.sum
```
## Структура Frontend
```
pulse-web/
├── public/
│ └── favicon.svg # Иконка молния ⚡
├── src/
│ ├── api/
│ │ ├── client.js # Axios instance + interceptors
│ │ ├── habits.js # API привычек
│ │ ├── profile.js # API профиля
│ │ └── tasks.js # API задач
│ ├── components/
│ │ ├── CreateHabitModal.jsx
│ │ ├── CreateTaskModal.jsx
│ │ ├── EditHabitModal.jsx
│ │ ├── EditTaskModal.jsx
│ │ └── Navigation.jsx # Нижняя навигация
│ ├── pages/
│ │ ├── ForgotPassword.jsx
│ │ ├── Habits.jsx # Управление привычками
│ │ ├── Home.jsx # Главная (сегодня)
│ │ ├── Login.jsx
│ │ ├── Register.jsx
│ │ ├── ResetPassword.jsx
│ │ ├── Settings.jsx # Настройки профиля
│ │ ├── Stats.jsx # Статистика
│ │ ├── Tasks.jsx # Управление задачами
│ │ └── VerifyEmail.jsx
│ ├── store/
│ │ └── auth.js # Zustand store для авторизации
│ ├── App.jsx # Роутинг
│ ├── index.css # Глобальные стили
│ └── main.jsx # Entry point
├── Dockerfile
├── docker-compose.yml
├── index.html
├── nginx.conf
├── package.json
├── tailwind.config.js
└── vite.config.js
```
## База данных
### Таблицы
```sql
-- Пользователи
users (
id SERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
username VARCHAR(100) NOT NULL,
password_hash VARCHAR(255) NOT NULL,
email_verified BOOLEAN DEFAULT FALSE,
telegram_chat_id BIGINT,
notifications_enabled BOOLEAN DEFAULT TRUE,
timezone VARCHAR(50) DEFAULT 'Europe/Moscow',
morning_reminder_time TIME DEFAULT '09:00',
evening_reminder_time TIME DEFAULT '21:00',
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
)
-- Задачи
tasks (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
title VARCHAR(255) NOT NULL,
description TEXT,
icon VARCHAR(10) DEFAULT '📋',
color VARCHAR(7) DEFAULT '#6B7280',
due_date DATE,
priority INTEGER DEFAULT 0, -- 0=none, 1=low, 2=medium, 3=high
reminder_time TIME,
completed_at TIMESTAMP,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
)
-- Привычки
habits (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
name VARCHAR(255) NOT NULL,
description TEXT,
icon VARCHAR(10) DEFAULT '',
color VARCHAR(7) DEFAULT '#10B981',
frequency VARCHAR(20) DEFAULT 'daily', -- daily, weekly, custom
target_days INTEGER[], -- [1,3,5] для пн,ср,пт
target_count INTEGER DEFAULT 1,
reminder_time TIME,
archived BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
)
-- Логи привычек
habit_logs (
id SERIAL PRIMARY KEY,
habit_id INTEGER REFERENCES habits(id),
user_id INTEGER REFERENCES users(id),
date DATE NOT NULL,
count INTEGER DEFAULT 1,
created_at TIMESTAMP DEFAULT NOW()
)
-- Email токены
email_tokens (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
token VARCHAR(255) NOT NULL,
type VARCHAR(50) NOT NULL, -- verification, password_reset
expires_at TIMESTAMP NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
)
```
## API Endpoints
### Авторизация
| Method | Endpoint | Описание |
|--------|----------|----------|
| POST | /auth/register | Регистрация |
| POST | /auth/login | Вход |
| POST | /auth/refresh | Обновить токены |
| POST | /auth/verify-email | Подтвердить email |
| POST | /auth/forgot-password | Запросить сброс пароля |
| POST | /auth/reset-password | Сбросить пароль |
### Профиль (требует JWT)
| Method | Endpoint | Описание |
|--------|----------|----------|
| GET | /profile | Получить профиль |
| PUT | /profile | Обновить профиль |
### Задачи (требует JWT)
| Method | Endpoint | Описание |
|--------|----------|----------|
| GET | /tasks | Список задач |
| GET | /tasks/today | Задачи на сегодня |
| POST | /tasks | Создать задачу |
| GET | /tasks/{id} | Получить задачу |
| PUT | /tasks/{id} | Обновить задачу |
| DELETE | /tasks/{id} | Удалить задачу |
| POST | /tasks/{id}/complete | Отметить выполненной |
| POST | /tasks/{id}/uncomplete | Снять отметку |
### Привычки (требует JWT)
| Method | Endpoint | Описание |
|--------|----------|----------|
| GET | /habits | Список привычек |
| POST | /habits | Создать привычку |
| GET | /habits/{id} | Получить привычку |
| PUT | /habits/{id} | Обновить привычку |
| DELETE | /habits/{id} | Удалить (архивировать) |
| POST | /habits/{id}/log | Отметить выполнение |
| GET | /habits/{id}/logs | История выполнений |
| DELETE | /habits/{id}/logs/{logId} | Удалить запись |
| GET | /habits/stats | Общая статистика |
| GET | /habits/{id}/stats | Статистика привычки |
## Telegram Bot
### Команды
| Команда | Описание |
|---------|----------|
| /start | Показать Chat ID |
| /tasks | Задачи на сегодня |
| /habits | Привычки на сегодня |
| /help | Справка |
### Inline кнопки
- ✅ Выполнено — отмечает задачу/привычку
- 🗑 Удалить — удаляет задачу
- ⏰ +30 мин — откладывает напоминание
### Уведомления
1. **Утреннее** (настраивается): задачи и привычки на сегодня
2. **Вечернее** (настраивается): итоги дня
3. **Индивидуальные**: по reminder_time каждой задачи/привычки
## Docker Compose
### Backend (homelab-api)
```yaml
services:
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: homelab
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: homelab
volumes:
- db_data:/var/lib/postgresql/data
networks:
- backend
api:
build: .
environment:
- DATABASE_URL=postgres://homelab:${DB_PASSWORD}@db:5432/homelab?sslmode=disable
- JWT_SECRET=${JWT_SECRET}
- RESEND_API_KEY=${RESEND_API_KEY}
- TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
depends_on:
- db
networks:
- backend
- services_proxy
```
### Frontend (pulse-web)
```yaml
services:
web:
build: .
networks:
- services_proxy
```
## Дизайн
### Цвета
- **Primary (Deep Teal):** #115E59
- **Accent (Burnished Amber):** #F59E0B
- **Surface:** #F8FAFC
- **Text:** #1E293B
### Шрифты
- **Body:** Inter (Google Fonts)
### UI-компоненты
- Карточки с тенями и закруглениями (rounded-2xl)
- Backdrop blur для header
- Framer Motion анимации
- Inline кнопки в Telegram
## Репозитории
- **Backend:** https://git.digital-home.site/daniil/pulse-api
- **Frontend:** https://git.digital-home.site/daniil/pulse-web
---
*Создано: 2026-02-06*

View File

@@ -0,0 +1,66 @@
# Pulse — Система уведомлений
## Telegram бот
**Бот:** @pulse_tracking_bot
**Токен:** `8440343622:AAFM0gaI3Uaqj10WcEIPYf70zWo41kSB2So`
### Функционал
- При `/start` бот отправляет пользователю его `chat_id`
- `/tasks` — задачи на сегодня с кнопками
- `/habits` — привычки на сегодня с кнопками
- Inline кнопки: "✅ Выполнено", "🗑 Удалить", "⏰ +30 мин"
## Профиль пользователя
### Настройки
- Telegram Chat ID
- Уведомления вкл/выкл
- Часовой пояс
- Время утреннего уведомления (default: 09:00)
- Время вечернего уведомления (default: 21:00)
## Логика уведомлений
### Утреннее уведомление
- Время: настраивается в профиле (default 09:00)
- Содержит: задачи на сегодня, привычки на сегодня
### Вечернее уведомление (итоги дня)
- Время: настраивается в профиле (default 21:00)
- Содержит:
- 📋 Задачи: ✅ выполнено / ⬜ осталось
- 🎯 Привычки: ✅ выполнено / ⬜ осталось
- Список невыполненных привычек
- Мотивационное сообщение
### Индивидуальные напоминания
- Для каждой задачи/привычки можно установить `reminder_time`
- Если к этому времени не выполнено → push в Telegram
- Кнопки: "✅ Выполнено", "⏰ +30 мин"
## Интеграция с Cosmo (OpenClaw)
### Workflow
- **Задачи от Даниила** → Cosmo создаёт в Pulse API
- **Привычки** → Cosmo создаёт в Pulse API
- **Встречи/события** → Google Calendar (gog)
- **Уведомления** → приходят в @pulse_tracking_bot
### API для Cosmo
```bash
# Создать задачу
curl -X POST https://api.digital-home.site/tasks \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"...", "due_date":"2026-02-10", "reminder_time":"09:00"}'
# Создать привычку
curl -X POST https://api.digital-home.site/habits \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"...", "frequency":"daily", "reminder_time":"17:00"}'
```
---
*Обновлено: 2026-02-06*

View File

@@ -0,0 +1,148 @@
# Pulse — Telegram Bot
Бот как полноценный интерфейс к Pulse. Управление задачами и привычками без захода на сайт.
## Авторизация
### Связка аккаунта
1. Пользователь отправляет `/start`
2. Бот отвечает: "Привет! Твой chat_id: `123456789`. Добавь его в настройках профиля на сайте."
3. После привязки бот может отправлять уведомления и принимать команды
### Альтернатива: Magic Link
- `/login` → бот отправляет одноразовую ссылку для входа
- Или код подтверждения, который вводишь на сайте
## Команды
### Задачи
| Команда | Описание |
|---------|----------|
| `/tasks` | Список задач на сегодня (все) |
| `/tasks remaining` | Только невыполненные задачи |
| `/tasks all` | Все активные задачи |
| `/task <текст>` | Создать новую задачу |
| `/done <id>` | Отметить задачу выполненной |
| `/undone <id>` | Снять отметку выполнения |
**Примеры:**
```
/task Купить молоко
/task Позвонить врачу !высокий @завтра
/done 15
```
**Флаги при создании:**
- `!высокий` / `!средний` / `!низкий` — приоритет
- `@сегодня` / `@завтра` / `@10.02` — дедлайн
- `🔔17:00` — напоминание
### Привычки
| Команда | Описание |
|---------|----------|
| `/habits` | Привычки на сегодня |
| `/habits all` | Все привычки |
| `/check <id>` | Отметить привычку выполненной |
| `/uncheck <id>` | Снять отметку |
**Примеры:**
```
/habits
/check 3
```
### Статистика
| Команда | Описание |
|---------|----------|
| `/stats` | Краткая статистика (выполнено сегодня, streak) |
| `/stats week` | Статистика за неделю |
### Настройки
| Команда | Описание |
|---------|----------|
| `/settings` | Текущие настройки уведомлений |
| `/notify on` / `/notify off` | Вкл/выкл уведомления |
| `/morning 09:00` | Установить время утреннего уведомления |
## Inline кнопки
Для удобства бот отправляет сообщения с кнопками:
### Список задач
```
📋 Задачи на сегодня:
1. [ ] Купить молоко
2. [ ] Позвонить врачу (!)
3. [✓] Оплатить счета
[✅ Отметить] [ Новая задача]
```
При нажатии "Отметить" → показать список для выбора.
### Уведомление о привычке
```
🔔 Напоминание: Гитара 🎸
Время заниматься! (17:00)
[✅ Выполнено] [⏰ Напомни через 30 мин]
```
## Быстрые ответы
Бот понимает текст без команд в контексте:
- После `/tasks` можно просто написать "купить хлеб" → создаст задачу
- После показа списка можно написать "1" → отметит задачу #1
## Архитектура
### Хранение состояния
- Redis или in-memory map для user states
- Состояния: `idle`, `awaiting_task_text`, `awaiting_habit_check`
### Обработка команд
```go
type BotHandler struct {
taskService *service.TaskService
habitService *service.HabitService
userService *service.UserService
}
func (h *BotHandler) HandleUpdate(update tgbotapi.Update) {
// роутинг команд
}
```
### Связь с основным API
- Бот использует те же сервисы что и HTTP API
- Авторизация по telegram_chat_id → user_id
## Безопасность
- Команды работают только для привязанных аккаунтов
- Rate limiting на создание задач
- Логирование действий через бота
## TODO
- [ ] Базовые команды: /start, /tasks, /habits
- [ ] Создание задач через /task
- [ ] Отметка выполнения: /done, /check
- [ ] Inline кнопки для быстрых действий
- [ ] Контекстные быстрые ответы
- [ ] Настройки через бота
## Приоритет реализации
1. **MVP:** /start, /tasks, /habits, /done, /check
2. **v1.1:** Создание задач, inline кнопки
3. **v1.2:** Быстрые ответы, статистика, настройки
---
*Создано: 2026-02-06*

View File

@@ -0,0 +1,298 @@
# Анализ конкурентов для Pulse App
**Дата:** 15 февраля 2026
**Цель:** Понять рынок habit tracker приложений и сформировать стратегию развития Pulse
---
## 📊 1. Сравнительная таблица
### Базовая информация
| Приложение | Платформы | Рейтинг | Загрузки | Целевая аудитория |
|------------|-----------|---------|----------|-------------------|
| **Habitify** | iOS, Android, Web, macOS, watchOS | 4.7★ | 3M+ | Продуктивные профессионалы, кросс-платформенные пользователи |
| **Atoms** | iOS only | 4.5★ | 500K+ | Фанаты книги "Atomic Habits", premium сегмент |
| **Streaks** | iOS, macOS, watchOS, Vision Pro | 4.8★ | 2M+ | Apple ecosystem пользователи, минималисты |
| **Habitica** | iOS, Android, Web | 4.3★ | 10M+ | Геймеры, молодёжь, любители RPG |
| **Loop Habit Tracker** | Android | 4.7★ | 5M+ | Privacy-focused, open-source энтузиасты |
| **Fabulous** | iOS, Android | 4.6★ | 10M+ | Self-improvement seekers, wellness-focused |
| **Done** | iOS only | 4.6★ | 500K+ | Простые пользователи, фокус на гибкости |
| **Productive** | iOS only | 4.7★ | 3M+ | Пользователи iOS ищущие guided experience |
| **Way of Life** | iOS, Android | 4.6★ | 1M+ | Data-driven пользователи, аналитики |
| **HabitNow** | Android only | 4.6★ | 5M+ | Android пользователи, budget-conscious |
### Модель монетизации
| Приложение | Free план | Месяц | Год | Lifetime | Trial |
|------------|-----------|-------|-----|----------|-------|
| **Habitify** | 15 check-ins/нед | $4.99 | $34.99 | $64.99 | 7 дней |
| **Atoms** | 1-3 привычки | $10 | $70 | — | 28 дней |
| **Streaks** | — | — | — | $4.99 (one-time) | — |
| **Habitica** | Полный функционал | $4.99 | $47.99 | — | — |
| **Loop** | Полный (open-source) | Бесплатно | — | — | — |
| **Fabulous** | Ограниченные journeys | $3.33 | $39.99 | — | 7 дней |
| **Done** | Ограничено привычек | — | — | $24.99-$99.99* | — |
| **Productive** | Ограничено | $6.99 | $34.99 | — | 7 дней |
| **Way of Life** | 3 привычки | $4.99 | ~$30 | $49.99 | — |
| **HabitNow** | 7 привычек | — | — | $11.99 | — |
*Done часто со скидками до 95%
### Ключевые функции
| Приложение | Daily | Weekly | Custom | Напоминания | Статистика | Виджеты | Watch | Health интеграция | Gamification | Социальные | Оффлайн |
|------------|-------|--------|--------|-------------|------------|---------|-------|-------------------|--------------|------------|---------|
| **Habitify** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Стрики | ❌ | ✅ |
| **Atoms** | ✅ | ❌ | ❌ | ✅ | Базовая | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ |
| **Streaks** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Стрики | Sharing | ✅ |
| **Habitica** | ✅ | ❌ | ✅ | ✅ | Базовая | ❌ | ❌ | ❌ | 🎮 RPG полная | Parties/Guilds | ❌ |
| **Loop** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | Стрики/Score | ❌ | ✅ |
| **Fabulous** | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | Journeys | Circles | ❌ |
| **Done** | ✅ | ✅ | ✅ | Premium | ✅ | ✅ | ❌ | ❌ | Стрики | ❌ | ✅ |
| **Productive** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | Challenges | ❌ | ✅ |
| **Way of Life** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | Chains | ❌ | ✅ |
| **HabitNow** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | Стрики | ❌ | ✅ |
---
## 💰 2. Анализ монетизации
### Популярные модели
1. **Freemium с подпиской** (Habitify, Productive, Fabulous)
- Free: ограниченное количество привычек или функций
- Premium: $3-7/месяц или $30-40/год
- Самая распространённая модель
2. **One-time purchase** (Streaks, HabitNow, Done)
- $5-15 единоразово
- Привлекает пользователей, не любящих подписки
- Работает для iOS (Apple Store friendly)
3. **Open-source / Free** (Loop, Habitica Free)
- Монетизация через donations или premium косметику
- Привлекает privacy-conscious аудиторию
4. **Premium-first** (Atoms)
- Высокая цена ($70-120/год)
- Бренд автора (James Clear)
- Узкая, но платёжеспособная аудитория
### Средние цены на рынке
| Тип | Диапазон | Среднее |
|-----|----------|---------|
| Месячная подписка | $3.33 - $10 | **$5-6** |
| Годовая подписка | $30 - $70 | **$35-40** |
| Lifetime | $25 - $100 | **$50-65** |
| One-time (iOS) | $5 - $12 | **$6** |
### Что работает лучше
- **7-дневный trial** — стандарт индустрии
- **Ограничение количества привычек** в free версии (3-7)
- **Lifetime purchase** как upsell для лояльных пользователей
- **Скидки 50-80%** на lifetime при запуске и праздниках
---
## ✅ 3. Must-have функции (базовый стандарт)
Функции, которые есть у **всех топовых приложений** — без них не конкурентоспособны:
### Типы привычек
-**Daily habits** — ежедневные привычки
-**Weekly habits** — X раз в неделю
-**Custom schedule** — гибкое расписание (вт, чт, сб)
### Напоминания
-**Push-уведомления** с выбором времени
-**Несколько напоминаний** на одну привычку
-**Smart reminders** (location-based — опционально)
### Отслеживание прогресса
-**Streak counter** — текущая серия
-**Calendar view** — визуализация выполнения
-**Completion rate** — процент выполнения
-**Graphs/Charts** — тренды за период
### UX
-**Quick check-in** — отметка в 1-2 тапа
-**Home screen widgets**
-**Dark mode**
-**Offline mode**
### Персонализация
-**Icons/Emoji** для привычек
-**Цветовая кодировка**
-**Categories/Groups**
---
## 🌟 4. Differentiators (уникальные фичи лидеров)
### Habitify — Cross-platform sync
- Бесшовная синхронизация между iOS, Android, Web, Mac, Watch
- Один аккаунт везде — редкость на рынке
### Streaks — Apple Health интеграция
- Автоматическая отметка привычек через HealthKit
- "Walked 10K steps" → автоматически отмечено
- Apple Watch complications
### Habitica — Full RPG gamification
- Аватар, уровни, экипировка, питомцы
- Parties для совместных квестов
- Boss battles зависят от выполнения привычек
- Единственное приложение с глубокой геймификацией
### Fabulous — Science-based coaching
- "Journeys" — пошаговые программы изменений
- Основано на исследованиях Duke University
- Аудио-коучинг и медитации
- Больше похоже на wellness app, чем на трекер
### Loop — Open-source & Privacy
- Полностью бесплатное, нет рекламы
- Данные только локально
- "Habit Score" — уникальная формула силы привычки
- Export в CSV/SQLite
### Atoms — Author brand power
- James Clear (15M+ книг продано)
- Daily Lessons из книги "Atomic Habits"
- Premium positioning ($120/год)
### Way of Life — Flexible streaks
- "Chains" с custom длиной (5 дней подряд, потом перерыв)
- "Red chains" — отслеживание плохих серий
- Journal notes к каждой записи
---
## 🚀 5. Рекомендации для Pulse
### Текущие преимущества Pulse
-**Interval habits** (каждые N дней) — есть не у всех
-**Freeze period** — уникальная фича
-**Backfill** (отметка за прошлые дни) — важно
-**Telegram bot** — уникальная интеграция
-**Утренний/вечерний брифинг** — редкость
-**Tasks + Habits** в одном месте
-**PWA** — работает везде без app store
### Quick Wins (1-2 недели каждая)
| Фича | Сложность | Impact | Почему |
|------|-----------|--------|--------|
| **Home screen widgets** | Medium | High | Must-have, все топы имеют |
| **Dark mode** | Easy | Medium | Ожидаемый стандарт |
| **Улучшенная статистика** | Medium | High | Графики, calendar heatmap |
| **Streak badges/rewards** | Easy | Medium | Простая геймификация |
| **Categories/Groups** | Easy | Medium | Организация привычек |
| **Emoji picker** | Easy | Low | UX улучшение |
### Для конкуренции с топами (1-3 месяца)
| Фича | Сложность | Impact | Референс |
|------|-----------|--------|----------|
| **Native iOS app** | High | Very High | Streaks, Done |
| **Native Android app** | High | Very High | HabitNow, Loop |
| **Apple Watch / WearOS** | High | Medium | Streaks, Habitify |
| **Apple Health / Google Fit** | Medium | High | Streaks — автоотметка |
| **Cloud sync** | Medium | High | Habitify |
| **Onboarding flow** | Medium | High | Fabulous — лучший |
| **Export (CSV/JSON)** | Easy | Medium | Loop, Way of Life |
### Уникальные фичи (не делает никто или почти никто)
| Идея | Конкуренты | Potential |
|------|------------|-----------|
| **Telegram-first трекер** | Никто | 🔥 Huge — уникальная ниша |
| **AI habit suggestions** | Atoms (примитивно) | High — персонализация |
| **Voice check-in** (голосовые сообщения) | Никто | Medium — accessibility |
| **Habit templates marketplace** | Никто полноценно | Medium |
| **Family/Team habits** | Habitica (parties) | Medium — accountability |
| **Smart scheduling** (AI) | Reclaim.ai (calendar) | High — но сложно |
| **Habit chains** (привычки зависят друг от друга) | Никто | Medium |
| **Location-based triggers** | Некоторые примитивно | Medium |
| **Mood correlation** | Way of Life (notes) | Medium — insights |
### Модель монетизации для Pulse
**Рекомендуемая стратегия:**
```
FREE TIER:
├── До 5 привычек
├── До 10 задач
├── Базовая статистика
├── Telegram бот (уведомления)
└── PWA доступ
PREMIUM ($4.99/мес или $29.99/год):
├── Unlimited привычки и задачи
├── Расширенная статистика (графики, heatmaps)
├── Widgets (когда будут)
├── Custom themes
├── Export данных
├── Priority support
└── Утренний/вечерний брифинг (AI-улучшенный)
LIFETIME: $49.99 (launch price $29.99)
```
**Почему эта модель:**
- Цена ниже Habitify ($35/год) и Productive ($35/год)
- Конкурентна с HabitNow ($12 lifetime)
- Telegram-first = низкие costs = можно быть дешевле
- Lifetime привлекает early adopters
---
## 📈 Roadmap предложение
### Phase 1: Foundation (Q1 2026)
- [ ] Dark mode
- [ ] Улучшенная статистика (графики)
- [ ] Calendar heatmap view
- [ ] Categories для привычек
- [ ] Export CSV
### Phase 2: Engagement (Q2 2026)
- [ ] Streak badges и rewards
- [ ] PWA widgets (если поддержка браузеров улучшится)
- [ ] Onboarding flow
- [ ] Telegram inline buttons (quick check-in)
### Phase 3: Growth (Q3 2026)
- [ ] Native iOS app
- [ ] Apple Health integration
- [ ] Apple Watch app
- [ ] Premium tier launch
### Phase 4: Differentiation (Q4 2026)
- [ ] AI habit suggestions
- [ ] Native Android app
- [ ] Google Fit integration
- [ ] Habit templates library
---
## 🎯 Ключевые выводы
1. **Рынок насыщен**, но большинство приложений похожи
2. **Telegram-интеграция** — уникальное преимущество Pulse
3. **Freeze period** и **interval habits** — сильные дифференциаторы
4. **Must-have**: widgets, dark mode, лучшая статистика
5. **Native apps** важны для mainstream, но PWA достаточно для MVP
6. **Freemium модель** работает лучше всего
7. **$30-40/год** — sweet spot для подписки
8. **Gamification** работает для узкой аудитории (Habitica)
9. **Cross-platform sync** — killer feature для серьёзных пользователей
10. **Apple Health автоотметка** — wow-фактор для iOS пользователей
---
*Документ подготовлен на основе анализа 10 приложений, публичных обзоров, и данных app store на февраль 2026.*