Предложение: Система оповещений
Проблема
Пользователь не знает что происходит с его активами и заявками.
Что нельзя узнать сейчас:
- ❌ Твоя лимитная заявка исполнилась
- ❌ Кто-то прокомментировал под твоей акцией
- ❌ IPO персоны которую ты отслеживаешь началось
- ❌ Цена акции которую ты держишь сильно изменилась
- ❌ Аукцион перешёл в новый раунд
- ❌ Твоя акция поднялась/упала на X%
- ❌ Кто-то ответил на твой комментарий
Итог: Приходится постоянно обновлять страницу и проверять вручную.
Решение: Универсальная система оповещений
Три уровня оповещений:
- In-app notifications — уведомления внутри сайта
- Push notifications — браузерные пуши
- Email notifications — письма на почту (опционально)
1. In-App Notifications
1.1 Иконка с счётчиком
┌────────────────────────────────────────┐
│ PersonalShares Portfolio 🔔 3 │
└────────────────────────────────────────┘
Поведение:
- Красный кружок с числом непрочитанных
- Клик → открывается панель уведомлений
- Авто-обновление каждые 30 секунд
1.2 Панель уведомлений
┌────────────────────────────────────────────────────────┐
│ Notifications Mark all read │
├────────────────────────────────────────────────────────┤
│ │
│ 🟢 Your limit order executed 2 min ago │
│ Bought 10 USYK @ $150 │
│ [View Order] [View Asset] │
│ │
├────────────────────────────────────────────────────────┤
│ │
│ 💬 New comment on MNTK 5 min ago │
│ user_456: "Great investment!" │
│ [Reply] [View Thread] │
│ │
├────────────────────────────────────────────────────────┤
│ │
│ 🚀 BRSKH IPO started 1 hour ago │
│ Clock auction now live at $100 │
│ [Buy Now] [View Details] │
│ │
├────────────────────────────────────────────────────────┤
│ │
│ 📈 USYK price alert 2 hours ago │
│ Price reached $155 (+10% from your avg) │
│ [View Chart] │
│ │
└────────────────────────────────────────────────────────┘
Фичи:
- ✅ Скролл для старых уведомлений
- ✅ Авто-пометка прочитанным при просмотре
- ✅ Кнопки быстрых действий
- ✅ Группировка по типу (опционально)
- ✅ Фильтр: All / Unread / Trading / Social
2. Типы уведомлений
2.1 Trading Events (Торговые события)
Order Executed (Заявка исполнена)
🟢 Your limit buy order executed
Bought 10 USYK @ $150
Total: $1,500
[View Order] [View Portfolio]
Когда:
- Лимитная заявка полностью исполнилась
- Лимитная заявка частично исполнилась
Параметры:
- Ticker
- Amount
- Price
- Total USD
Order Partially Filled (Заявка частично исполнена)
🟡 Your limit sell order partially filled
Sold 5 / 20 MNTK @ $95
Remaining: 15 shares
[View Order] [Cancel Order]
Когда:
- Лимитная заявка исполнена частично
- Прогресс обновился (например, было 2/20, стало 5/20)
Order Cancelled (Заявка отменена)
🔴 Your limit order was cancelled
Sell 20 MNTK @ $95
Reason: User cancelled
[View History]
Когда:
- Пользователь сам отменил заявку
- Система отменила (insufficient balance, etc.)
IPO Allocation (IPO распределение)
🎉 Your IPO order was allocated
USYK Clock Auction Round 3
Bought 1 share @ $120
[View Asset]
Когда:
- Аукционный раунд завершился
- Пользователь получил акции
2.2 Price Alerts (Ценовые алерты)
Price Target Reached (Цена достигла цели)
📈 USYK reached your target price
Current: $155 (target: $150)
Change: +10% from your avg price
[View Chart] [Set New Alert]
Когда:
- Цена достигла уровня который пользователь установил
- Или: цена изменилась на X% от средней цены покупки
Настройки пользователя:
- Установить целевую цену (target price)
- Установить процент изменения (например, ±10%)
High Volatility (Высокая волатильность)
⚡ MNTK is moving fast!
+15% in last hour
Current price: $110 (was $95)
[View Chart]
Когда:
- Цена изменилась на ±X% за короткое время (например, ±10% за час)
2.3 IPO & Auction Events (IPO и аукционы)
New IPO Started (Новое IPO началось)
🚀 New IPO: Borys Shukhevych (BRSKH)
Clock auction started at $100
Round 1 of ?
[View Details] [Buy Now]
Когда:
- Новая персона прошла модерацию
- IPO/аукцион запустился
Фильтр:
- Пользователь может выбрать "уведомлять о всех IPO"
- Или только о персонах из его watchlist
Auction Round Update (Раунд аукциона обновился)
🔄 USYK auction advanced to Round 4
New price: $130
Previous round had 80 buyers
[View Auction] [Place Bid]
Когда:
- Аукцион перешёл в следующий раунд
- Только для акций в watchlist или где пользователь участвует
Auction Ending Soon (Аукцион скоро закончится)
⏰ USYK auction ending soon!
Round 4 closes in 30 minutes
Current price: $130
[Place Final Bid]
Когда:
- До конца раунда осталось мало времени (например, 30 минут)
- Пользователь ещё не участвовал в этом раунде
Auction Ended (Аукцион завершился)
🏁 USYK auction has ended
Final price: $120 (Round 3)
Post-auction rounds starting soon
[View Results]
Когда:
- Аукцион завершился (не хватило buyers)
- Или достиг максимального количества раундов
2.4 Social Events (Социальные события)
New Comment (Новый комментарий)
💬 New comment on USYK
user_789: "Amazing performance today!"
[Reply] [View Thread]
Когда:
- Кто-то оставил комментарий под акцией которую ты держишь
- Кто-то оставил комментарий на странице твоей персоны (если ты владелец)
Comment Reply (Ответ на комментарий)
💬 user_456 replied to your comment
"I agree, USYK has strong fundamentals"
On: USYK
[View Thread] [Reply]
Когда:
- Кто-то ответил на твой комментарий
Comment Like (Лайк комментария)
❤️ Your comment got 10 likes
"USYK is undervalued right now"
On: USYK
[View Comment]
Когда:
- Твой комментарий набрал N лайков (например, 10, 50, 100)
2.5 Portfolio Events (События портфеля)
Significant Portfolio Change (Значительное изменение портфеля)
📊 Your portfolio is up 15% today!
Total value: $12,450 (+$1,625)
Best performer: USYK (+20%)
[View Portfolio]
Когда:
- Портфель изменился на ±X% за день (например, ±10%)
Dividend / Payout (Выплаты)
💰 You received a dividend
USYK: $5.00 per share
Total: $50 (you hold 10 shares)
[View Transaction]
Когда:
- Персона выплатила дивиденды
- (если в будущем будет эта фича)
2.6 System Events (Системные события)
Deposit Completed (Депозит завершён)
✅ Your deposit was processed
Amount: $1,000 USD
New balance: $11,000
[View Balance]
Когда:
- Депозит через Hyperswitch успешно обработан
Withdrawal Completed (Вывод завершён)
✅ Your withdrawal was processed
Amount: $500 USD
New balance: $10,500
[View Transaction]
Когда:
- Вывод средств завершён
Transaction Failed (Транзакция не удалась)
❌ Transaction failed
Spot buy USYK: 10 shares @ $150
Reason: Insufficient USD balance
[View Details] [Add Funds]
Когда:
- Транзакция не прошла по любой причине
3. Настройки уведомлений
3.1 Страница настроек
┌────────────────────────────────────────────────────────┐
│ Notification Settings │
├────────────────────────────────────────────────────────┤
│ │
│ Trading Events: │
│ ☑ Order executed In-app Push │
│ ☑ Order partially filled In-app Push │
│ ☑ Order cancelled In-app — │
│ ☑ IPO allocation In-app Push │
│ │
│ Price Alerts: │
│ ☑ Price target reached In-app Push │
│ ☑ High volatility (±10%/hour) In-app Push │
│ ☑ Daily portfolio summary Email — │
│ │
│ IPO & Auctions: │
│ ☑ New IPO started In-app Push │
│ ☑ Auction round update In-app — │
│ ☑ Auction ending soon (30 min) In-app Push │
│ ☑ Auction ended In-app — │
│ │
│ Social: │
│ ☑ New comment on my assets In-app — │
│ ☑ Reply to my comment In-app Push │
│ ☑ Comment likes (every 10) In-app — │
│ │
│ Portfolio: │
│ ☑ Significant change (±10%/day) In-app Push │
│ ☑ Weekly portfolio report Email — │
│ │
│ System: │
│ ☑ Deposit completed In-app Email │
│ ☑ Withdrawal completed In-app Email │
│ ☑ Transaction failed In-app Push │
│ │
│ [Save Settings] │
│ │
└────────────────────────────────────────────────────────┘
Каналы:
- In-app: Всегда включено, показывается в иконке 🔔
- Push: Браузерное уведомление (требует разрешения)
- Email: Письмо на почту (для важных событий)
3.2 Умные настройки
Do Not Disturb (Не беспокоить)
┌────────────────────────────────────────┐
│ Do Not Disturb │
├────────────────────────────────────────┤
│ │
│ ☑ Enable quiet hours │
│ └─ From: [22:00] To: [08:00] │
│ │
│ ☑ Pause push notifications │
│ ☐ Pause email notifications │
│ ☐ Pause all notifications │
│ │
│ Exceptions (always notify): │
│ ☑ Critical price alerts (±20%) │
│ ☑ Large order executions (>$1,000) │
│ ☑ System security alerts │
│ │
└────────────────────────────────────────┘
Frequency Control (Контроль частоты)
┌────────────────────────────────────────┐
│ Notification Frequency │
├────────────────────────────────────────┤
│ │
│ Batch similar notifications: │
│ ☑ Group partial fills │
│ "3 orders partially filled" │
│ instead of 3 separate │
│ │
│ ☑ Daily digest mode │
│ Send one summary at [09:00] │
│ instead of real-time │
│ │
│ ☐ Weekly digest only │
│ │
└────────────────────────────────────────┘
4. Push Notifications (Браузерные)
4.1 Запрос разрешения
┌────────────────────────────────────────────────┐
│ Enable Push Notifications? │
│ │
│ Get instant alerts when: │
│ • Your orders are executed │
│ • Someone comments on your shares │
│ • New IPOs start │
│ • Price targets are reached │
│ │
│ [Enable Notifications] [Maybe Later] │
└────────────────────────────────────────────────┘
Когда показывать:
- После первой успешной сделки
- Или когда пользователь устанавливает первый price alert
4.2 Формат пуша
Пример 1: Order executed
PersonalShares
🟢 Order executed: Bought 10 USYK @ $150
Click to view details
Пример 2: Price alert
PersonalShares
📈 USYK reached $155 (+10%)
Click to view chart
Пример 3: New comment
PersonalShares
💬 New comment on USYK: "Great investment!"
Click to reply
5. Email Notifications
5.1 Order Executed Email
Subject: ✅ Your order was executed - Bought 10 USYK
────────────────────────────────────────
Hi user_789,
Your limit order was executed:
Order Details:
• Type: Limit Buy
• Asset: USYK (Oleksandr Usyk)
• Amount: 10 shares
• Price: $150.00 per share
• Total: $1,500.00
Execution:
• Matched at: 2025-10-14 18:45:23
• Average price: $150.00
Your Portfolio:
• USYK holdings: 10 shares
• Total value: $1,500
• Available USD: $8,500
[View Order Details] [View Portfolio]
────────────────────────────────────────
PersonalShares
Invest in people you believe in
[Unsubscribe] [Notification Settings]
5.2 Daily Digest Email
Subject: 📊 Your PersonalShares Daily Summary - Oct 14, 2025
────────────────────────────────────────
Hi user_789,
Here's what happened today:
Portfolio Performance:
• Total value: $12,450 (+8.5% today)
• Best performer: USYK +15%
• Worst performer: BRSKH -2%
Trading Activity:
• 2 orders executed
✅ Bought 10 USYK @ $150
✅ Sold 5 MNTK @ $95
• 1 active limit order
⏸️ Sell 20 MNTK @ $100
New Notifications:
• 3 new comments on your assets
• BRSKH IPO started
• USYK reached your price target
[View Full Portfolio] [Trading Dashboard]
────────────────────────────────────────
Sent daily at 9:00 AM
[Change frequency] [Unsubscribe]
6. Технический стек
Backend:
// Таблица notifications
{
id: uuid,
user_id: string,
type: 'order_executed' | 'comment_new' | 'ipo_started' | ...,
title: string,
message: string,
data: jsonb, // {ticker, amount, price, ...}
read: boolean,
created_at: timestamp
}
// Таблица notification_settings
{
user_id: string,
type: string,
in_app: boolean,
push: boolean,
email: boolean
}
// Таблица push_subscriptions
{
user_id: string,
endpoint: string,
keys: jsonb // для Web Push API
}
API:
// Получить уведомления
GET /api/notifications?limit=20&offset=0&filter=unread
// Пометить прочитанным
POST /api/notifications/:id/read
// Пометить все прочитанными
POST /api/notifications/read-all
// Настройки
GET /api/notifications/settings
PUT /api/notifications/settings
// Подписка на пуши
POST /api/notifications/push/subscribe
DELETE /api/notifications/push/unsubscribe
Frontend:
// Polling для in-app notifications (каждые 30 сек)
setInterval(fetchNotifications, 30000)
// Web Push API
navigator.serviceWorker.register('/sw.js')
.then(reg => reg.pushManager.subscribe({...}))
// Показ пуша
self.addEventListener('push', (event) => {
const data = event.data.json()
self.registration.showNotification(data.title, {
body: data.message,
icon: '/icon.png',
badge: '/badge.png',
data: data.payload
})
})
7. Roadmap разработки
Неделя 1-2: Базовая инфраструктура
- ✅ Таблицы notifications, notification_settings
- ✅ API для получения/создания уведомлений
- ✅ Иконка 🔔 с счётчиком непрочитанных
- ✅ Панель уведомлений (dropdown)
Неделя 3-4: Trading events
- ✅ Order executed notifications
- ✅ Order partially filled
- ✅ Order cancelled
- ✅ IPO allocation
Неделя 5-6: Price alerts & IPO events
- ✅ Price target reached
- ✅ High volatility alerts
- ✅ New IPO started
- ✅ Auction round updates
Неделя 7-8: Social & Push
- ✅ Comment notifications
- ✅ Reply notifications
- ✅ Browser push notifications
- ✅ Service Worker setup
Неделя 9-10: Email & Settings
- ✅ Email notifications
- ✅ Daily/weekly digests
- ✅ Notification settings page
- ✅ Do Not Disturb режим
8. Примеры сценариев
Сценарий 1: Трейдер с лимитными заявками
1. User_789 устанавливает лимитную заявку:
Sell 20 USYK @ $155
2. Через час цена достигает $155
→ In-app: 🟢 "Your order was executed"
→ Push: "Sold 20 USYK @ $155"
3. Пользователь кликает на уведомление
→ Открывается страница Order Details
4. Видит полную информацию:
→ 20 shares sold
→ $3,100 received
→ Portfolio updated
Сценарий 2: Инвестор следит за IPO
1. User_456 добавляет BRSKH в watchlist
2. Оператор запускает IPO для BRSKH
→ In-app: 🚀 "BRSKH IPO started"
→ Push: "Clock auction at $100"
3. Аукцион переходит в Round 2
→ In-app: 🔄 "Round 2 started at $110"
(не пуш, т.к. не критично)
4. До конца раунда 30 минут
→ Push: ⏰ "Round 2 ending in 30 min"
5. Пользователь покупает 1 share
6. Аукцион завершается
→ In-app: 🎉 "You got 1 BRSKH @ $110"
→ Email: "Your IPO allocation"
Сценарий 3: Владелец персоны
1. User_123 владеет персоной MNTK
2. User_456 оставляет комментарий на MNTK
→ In-app: 💬 "New comment on MNTK"
(не пуш, т.к. не критично)
3. User_789 отвечает на комментарий User_456
→ In-app для User_456: 💬 "Reply to your comment"
→ Push для User_456: "user_789 replied"
4. Комментарий User_456 набирает 10 лайков
→ In-app: ❤️ "Your comment got 10 likes"
Метрики успеха
Engagement:
- CTR на уведомления: > 30%
- Время реакции: < 5 минут
- Push opt-in rate: > 50%
Retention:
- Пользователи с включенными пушами: +20% retention
- Возвраты после уведомления: > 40%
TL;DR
Проблема: Пользователь не знает когда его заявки исполнились, когда под его акцией оставили комментарий, когда началось IPO.
Решение: Универсальная система оповещений с тремя каналами:
- In-app — иконка 🔔 с панелью уведомлений
- Push — браузерные пуши для критичных событий
- Email — дайджесты и важные события
Типы уведомлений:
- ✅ Trading: заявки исполнились/отменились/частично исполнились
- ✅ Price alerts: цена достигла цели, высокая волатильность
- ✅ IPO: новые аукционы, раунды, окончания
- ✅ Social: комментарии, ответы, лайки
- ✅ Portfolio: значительные изменения, дайджесты
- ✅ System: депозиты, выводы, ошибки
Настройки:
- Гранулярный контроль: каждый тип = свой канал
- Do Not Disturb режим
- Частота уведомлений (real-time / digest)
Результат:
- ✅ Пользователь всегда в курсе
- ✅ Не пропускает важные события
- ✅ Возвращается на платформу чаще
- ✅ Выше engagement и retention
Срок разработки: 10 недель (базовый функционал за 4 недели)
Приоритет: 🔥 Высокий — без оповещений пользователи пропускают исполнения заявок и теряют возможности.