Skip to content

adgan11/AppSignalsAnalytics

Repository files navigation

AppSignals logo

AppSignals Analytics

Self-hosted analytics for iOS apps with first-party data ownership.

CI License: MIT PHP Laravel Swift iOS GitHub stars

Overview

AppSignals Analytics is an open-source analytics stack for iOS products. It combines a Laravel backend dashboard, a Swift SDK, and a demo app so teams can run analytics on their own infrastructure.

Project Screenshot

View Project Screenshot on Canva

Features

  • Event ingestion with batching and custom properties
  • Crash reporting with dSYM-based symbolication support
  • Session replay wireframes with redaction-aware capture
  • Dashboard views for events, crashes, replays, and product metrics
  • Real-time updates via Laravel Reverb
  • API key-based ingestion and project-level isolation
  • Privacy-first design with self-hosted control

Repository Structure

Path Description
backend/ Laravel backend, ingestion APIs, dashboard UI, queues, scheduler
AppSignalsSDK/ Swift Package SDK for iOS/macOS event and crash tracking
AppSignalsDemo/ Example iOS app integrated with the SDK
Documentation/ Setup guide, deployment templates, server requirements

Architecture

flowchart LR
    A[iOS App] --> B[AppSignalsSDK]
    B --> C[Ingestion API]
    C --> D[Queue + Jobs]
    D --> E[(MySQL or MariaDB)]
    E --> F[Dashboard API + UI]
    F --> G[Analytics Dashboard]
Loading

Quick Start

Prerequisites

  • PHP 8.2+
  • Composer
  • Node.js 20+ and npm
  • MySQL 8.0+ or MariaDB 10.6+
  • Xcode (for SDK/demo app development)

1. Start the Backend

cd backend
composer install
npm install
cp .env.example .env
php artisan key:generate

# Set DB_* values in .env, then:
php artisan migrate --seed

Run services (recommended helper):

./start_dev.sh

Or run manually:

php artisan serve --host=127.0.0.1 --port=8000
php artisan reverb:start
php artisan queue:work
npm run dev

2. Add the SDK

Use Swift Package Manager from local path:

dependencies: [
    .package(path: "../AppSignalsSDK")
]

Initialize in your app:

import AppSignalsSDK

AppSignals.initialize(
    apiKey: "ok_live_your_api_key_here",
    serverURL: "http://127.0.0.1:8000"
)
AppSignals.debugLogging = true
AppSignals.enableAutoTracking = true
AppSignals.enableCrashReporting = true

Track your first event:

AppSignals.track("button_clicked", properties: [
    "screen": "home"
])

API Endpoints

Endpoint Method Purpose
/api/v1/ingest POST Batched event ingestion
/api/v1/crash POST Crash payload ingestion
/api/v1/replay POST Session replay frame ingestion

Documentation

  • Full docs: Documentation/index.html
  • Backend details: backend/README.md
  • SDK details: AppSignalsSDK/README.md
  • Deployment templates: Documentation/deployment-templates/

Development

Backend tests:

cd backend
php artisan test

SDK tests:

cd AppSignalsSDK
swift test

Contributing

Issues and pull requests are welcome.

  1. Fork the repository
  2. Create a feature branch
  3. Add tests for behavior changes
  4. Open a pull request with a clear summary

Star History

Star History Chart

Support

If this project helps you, support development here:

https://shabgagan.gumroad.com/coffee

License

Licensed under the MIT License. See LICENSE.

About

Self‑Hosted iOS Analytics & Crash Reporting

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors