Genel Bakış

Uygulama durumunu ve hataları gerçek zamanlı izleyin.

Sistem Çevrimiçi
Hatasız Kullanıcı Oranı
Aktif Hatalar
Push Gönderimleri
Toplam Hata Olayı

Hata Trendi

Son 7 güne ait hata olayları

Hatalar

Hızlı Bildirim Gönder

Tüm kullanıcılara anlık mesaj yayınlayın.

Kritik Aktif Hatalar

Çözüm bekleyen kritik olaylar

Detayları Görmek İçin Bir Hata Seçin

Yanda bulunan listeden herhangi bir hata kaydına tıklayarak tüm stack trace, aygıt parametreleri ve etkilenen kullanıcı bilgilerini inceleyebilirsiniz.

Push Bildirim Kampanyası

Firebase Cloud Messaging (FCM) API ile bildirim gönderin.

09:41
PulseMonitor App şimdi

Fırsatları Kaçırma! 🔥

Sepetindeki ürünlerde %20 indirim tanımlandı!

Açmak için kaydırın

Cihaz / OS Dağılımı

Hataların platformlara göre yüzdesi

Hata Seviyesi Dağılımı

Critical / Warning / Info oranları

0% Kritik

Teknik Mimari ve Kurulum Rehberi

Uygulamadan bu panele nasıl veri gönderebileceğinizi öğrenin.

3 Adımda Gerçek Zamanlı İzleme

1
İstemci Hata Yakalama

Uygulamada (Flutter, React Native, Web) oluşan yakalanmamış hatalar global hata dinleyicisiyle yakalanır ve POST /api/errors/report endpoint'ine gönderilir.

2
Backend Loglama & FCM

PulseMonitor sunucusu hatayı SQLite'a kaydeder. Kritik hata ise Firebase Admin SDK aracılığıyla yöneticiye anlık FCM push bildirimi tetiklenir.

3
Bu Panel

Hata günlükleri gerçek zamanlı listelenir, filtrelenir ve çözümlenir. Panel üzerinden etkilenen kullanıcılara veya tüm kitleye push bildirimi gönderilebilir.

Hata Raporlama API

İstemci uygulamanızdan bu endpoint'e POST isteği gönderin:

POST /api/errors/report
Headers:
  Content-Type: application/json
  X-API-Key: YOUR_REPORT_API_KEY

Body:
{
  "title":       "TypeError: null is not an object",
  "message":     "Cannot read property 'avatar' of null",
  "stack":       "at UserHeader.js:14:28\n  at ...",
  "level":       "critical",  // critical | warning | info
  "os":          "iOS",
  "os_version":  "17.4",
  "device":      "iPhone 15 Pro",
  "app_version": "1.2.0",
  "userId":      "usr_12345",
  "userToken":   "fcm_token_..."
}

Aynı başlıklı hata tekrar geldiğinde count otomatik artar (deduplication).

Flutter ile Otomatik Hata Yakalama

import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:flutter/foundation.dart';
import 'package:device_info_plus/device_info_plus.dart';

Future<void> reportError(Object error, StackTrace stack) async {
  final info = await DeviceInfoPlugin().deviceInfo;

  await http.post(
    Uri.parse('https://YOUR_SERVER/api/errors/report'),
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': 'YOUR_REPORT_API_KEY',
    },
    body: jsonEncode({
      'title': error.runtimeType.toString(),
      'message': error.toString(),
      'stack': stack.toString(),
      'level': 'critical',
      'os': defaultTargetPlatform == TargetPlatform.iOS ? 'iOS' : 'Android',
      'app_version': '1.0.0',
    }),
  );
}

// main.dart'ta:
void main() {
  FlutterError.onError = (details) {
    reportError(details.exception, details.stack ?? StackTrace.empty);
  };

  runZonedGuarded(() => runApp(MyApp()), (error, stack) {
    reportError(error, stack);
  });
}

Firebase FCM Kurulumu

Sunucu .env Yapılandırması

Firebase Console → Project Settings → Service Accounts → Generate new private key

FIREBASE_PROJECT_ID=berber-app-xxxxx
FIREBASE_CLIENT_EMAIL=firebase-adminsdk@berber-app.iam.gserviceaccount.com
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
ADMIN_FCM_TOKEN=your_device_fcm_token_here
Flutter FCM Topic Aboneliği

Uygulamanız başlarken FCM topic'e abone olun. PulseMonitor "all-users" topic'ine gönderim yapar.

import 'package:firebase_messaging/firebase_messaging.dart';

// Kullanıcı girişinden sonra:
await FirebaseMessaging.instance.subscribeToTopic('all-users');

// iOS kullanıcıları için:
await FirebaseMessaging.instance.subscribeToTopic('ios-users');