- Add admin PWA push notifications for order management
- Integrate TeleBot customer messaging service
- Add push notification endpoints and VAPID key support
- Implement order status notifications throughout workflow
- Add notification UI components in admin panel
- Create TeleBotMessagingService for customer updates
- Add WebPush configuration to appsettings
- Fix compilation issues (BotStatus, BotContacts DbSet)
- Add comprehensive testing documentation
Features:
- Real-time admin notifications for new orders and status changes
- Customer order progress updates via TeleBot
- Graceful failure handling for notification services
- Test endpoints for notification system validation
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
10 KiB
LittleShop Performance & Notifications Improvement Plan
📊 Current Analysis
✅ What's Already Working Well
Push Notification Infrastructure:
- Complete VAPID-based push notification system implemented
- PWA with service worker registration and update handling
- Admin panel notification subscription/unsubscription working
- Push notification service with proper error handling and cleanup
Performance Optimizations Already In Place:
- Docker production optimization with resource limits
- Health checks and monitoring infrastructure
- Optimized build process with multi-stage Docker builds
- Database connection pooling and EF Core optimizations
🔍 Current Gaps Identified
1. Admin PWA Push Notifications (Critical Gap)
- ✅ Infrastructure exists but needs integration with order workflow
- ❌ Order status changes don't trigger automatic push notifications
- ❌ No real-time notifications for new orders, payments, or status updates
- ❌ Admin users not automatically notified of critical events
2. TeleBot Customer Notifications (Critical Gap)
- ❌ TeleBot customers don't receive order progress updates
- ❌ No automatic messaging when order status changes (Accepted → Packing → Dispatched → Delivered)
- ❌ Missing integration between OrderService updates and TeleBot messaging
3. Performance Optimization Opportunities
- Database query optimization for order/product listings
- Caching strategy for frequently accessed data
- Background job processing for non-critical tasks
- API response time optimization
🎯 Implementation Plan
Phase 1: Admin PWA Real-Time Notifications (Priority 1)
Objective: Admin users get immediate push notifications for all critical events
Tasks:
-
Order Event Notifications
- New order received → Push notification to all admin users
- Payment confirmed → Notification with order details
- Payment failed/expired → Alert notification
-
Status Change Notifications
- Order accepted → Notification to assigned admin
- Order packed → Notification with tracking info
- Order dispatched → Confirmation notification
- Delivery confirmed → Success notification
-
Real-Time Dashboard Updates
- WebSocket/SignalR integration for live order updates
- Automatic refresh of order lists without page reload
- Live counters for pending orders, payments, etc.
Implementation Steps:
// 1. Enhance OrderService to trigger notifications
public async Task<bool> UpdateOrderStatusAsync(Guid id, UpdateOrderStatusDto dto)
{
// Existing order update logic...
// NEW: Trigger push notifications
await _pushNotificationService.SendOrderNotificationAsync(
id,
GetStatusChangeTitle(order.Status, dto.Status),
GetStatusChangeMessage(order, dto.Status)
);
// NEW: Trigger TeleBot customer notification
await _botService.SendOrderStatusUpdateAsync(id, dto.Status);
}
Phase 2: TeleBot Customer Progress Updates (Priority 1)
Objective: TeleBot customers receive automatic updates throughout order lifecycle
Current TeleBot Integration Status:
- ✅ TeleBot can view order history and details
- ❌ No automatic status update messages to customers
Implementation Requirements:
// 1. Add to IBotService interface
public interface IBotService
{
Task<bool> SendOrderStatusUpdateAsync(Guid orderId, OrderStatus newStatus);
Task<bool> SendPaymentConfirmedAsync(Guid orderId);
Task<bool> SendTrackingNumberAsync(Guid orderId, string trackingNumber);
}
// 2. Integration points in OrderService
- Order created → "Order received! We'll notify you when payment is confirmed."
- Payment confirmed → "Payment received! Your order is being processed."
- Order accepted → "Order accepted and being prepared for packing."
- Order packed → "Order packed! We'll send tracking details when dispatched."
- Order dispatched → "Order dispatched! Tracking: {trackingNumber}"
- Order delivered → "Order delivered! Please consider leaving a review."
Message Templates:
public static class TeleBotOrderMessages
{
public static string GetStatusUpdateMessage(OrderStatus status, Order order) => status switch
{
OrderStatus.PaymentReceived => $"💰 *Payment Confirmed!*\n\nYour order #{order.Id.ToString()[..8]} has been paid successfully. We'll start processing it shortly.\n\n📦 Total: £{order.TotalAmount:F2}",
OrderStatus.Accepted => $"✅ *Order Accepted!*\n\nGreat news! Your order #{order.Id.ToString()[..8]} has been accepted and is being prepared for packing.\n\n⏱️ Expected packing: Within 24 hours",
OrderStatus.Packing => $"📦 *Being Packed!*\n\nYour order #{order.Id.ToString()[..8]} is currently being packed with care.\n\n🚚 We'll send tracking details once dispatched.",
OrderStatus.Dispatched => $"🚚 *Order Dispatched!*\n\nYour order #{order.Id.ToString()[..8]} is on its way!\n\n📍 Tracking: `{order.TrackingNumber}`\n⏱️ Estimated delivery: 1-3 working days",
OrderStatus.Delivered => $"🎉 *Order Delivered!*\n\nYour order #{order.Id.ToString()[..8]} has been delivered successfully!\n\n⭐ Please consider leaving a review using /review command."
};
}
Phase 3: Performance Optimization (Priority 2)
Objective: Optimize system performance for better user experience
3.1 Database Query Optimization
// Current slow queries identified:
// 1. Order list with includes (N+1 problem)
// 2. Product list with photos (eager loading)
// 3. Category list with product counts
// Optimization strategies:
// - Add proper indexes on frequently queried columns
// - Implement pagination for large datasets
// - Use projection for list views (select only needed columns)
// - Add database query caching for static data
3.2 Caching Strategy
// Implement distributed caching for:
// - Category lists (rarely change)
// - Product basic info (change infrequently)
// - VAPID keys and configuration
// - Order status statistics for dashboard
public interface ICacheService
{
Task<T?> GetAsync<T>(string key);
Task SetAsync<T>(string key, T value, TimeSpan? expiry = null);
Task RemoveAsync(string key);
Task RemovePatternAsync(string pattern);
}
3.3 Background Job Processing
// Move non-critical tasks to background:
// - Push notification delivery
// - Email sending
// - Log cleanup
// - Expired subscription cleanup
// - Image optimization/resizing
// Use Hangfire (already configured) for:
[BackgroundJob]
public async Task ProcessOrderNotifications(Guid orderId, OrderStatus newStatus)
{
// Process all notifications in background
await _pushNotificationService.SendOrderNotificationAsync(...);
await _botService.SendOrderStatusUpdateAsync(...);
await _emailService.SendOrderUpdateEmailAsync(...);
}
Phase 4: Real-Time Features (Priority 3)
Objective: Add real-time capabilities for better admin experience
4.1 SignalR Integration
// Real-time features:
// - Live order status updates on admin dashboard
// - Real-time notification delivery status
// - Live customer count and activity
// - Real-time TeleBot message status
public class OrderHub : Hub
{
public async Task JoinAdminGroup()
{
await Groups.AddToGroupAsync(Context.ConnectionId, "AdminUsers");
}
public async Task NotifyOrderUpdate(Guid orderId, OrderStatus status)
{
await Clients.Group("AdminUsers").SendAsync("OrderUpdated", orderId, status);
}
}
4.2 Enhanced PWA Features
// PWA improvements:
// - Offline support for order viewing
// - Background sync for status updates
// - Improved caching strategy
// - Better mobile experience for admin panel
📈 Performance Metrics & Monitoring
Key Performance Indicators (KPIs)
Response Times:
- API endpoints: < 200ms average
- Admin dashboard load: < 1 second
- Push notification delivery: < 5 seconds
- TeleBot response time: < 2 seconds
User Experience:
- Push notification delivery rate: > 95%
- TeleBot message delivery: > 98%
- Admin panel uptime: > 99.5%
- Mobile PWA performance score: > 90
Business Metrics:
- Order processing time: < 24 hours
- Customer notification coverage: 100%
- Admin response time to orders: < 1 hour
Performance Monitoring Setup
# Add to Prometheus metrics:
Counters:
- littleshop_push_notifications_sent_total
- littleshop_telebot_messages_sent_total
- littleshop_order_status_changes_total
Histograms:
- littleshop_api_request_duration_seconds
- littleshop_database_query_duration_seconds
- littleshop_notification_delivery_seconds
Gauges:
- littleshop_active_push_subscriptions
- littleshop_pending_orders_count
- littleshop_background_jobs_pending
🚀 Implementation Timeline
Week 1: Critical Notifications
- Day 1-2: Enhance OrderService with notification triggers
- Day 3-4: Implement admin PWA push notification integration
- Day 5-7: Add TeleBot customer order progress messages
Week 2: Performance & Polish
- Day 1-3: Database query optimization and indexing
- Day 4-5: Implement caching strategy
- Day 6-7: Background job processing setup
Week 3: Real-Time Features
- Day 1-3: SignalR hub implementation
- Day 4-5: Enhanced PWA features
- Day 6-7: Performance monitoring and testing
🎯 Success Criteria
Immediate (Week 1)
- ✅ Admin users receive push notifications for all order events
- ✅ TeleBot customers get automatic order status updates
- ✅ 100% notification coverage for order lifecycle
Short-term (Week 2-3)
- ✅ API response times improved by 50%
- ✅ Real-time dashboard updates working
- ✅ Background job processing operational
- ✅ Performance monitoring fully functional
Long-term (Month 1)
- ✅ > 95% push notification delivery rate
- ✅ < 1 hour average admin response time to orders
- ✅ Improved customer satisfaction from proactive updates
- ✅ System capable of handling 10x current order volume
Ready to Begin Implementation
This plan addresses your specific requirements:
- ✅ Admin PWA push notifications for order management
- ✅ TeleBot customer notifications for order progress
- ✅ Performance optimization without premature advanced features
- ✅ Focused on reliability and user experience improvements