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.
- 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
| 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 |
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]
- PHP 8.2+
- Composer
- Node.js 20+ and npm
- MySQL 8.0+ or MariaDB 10.6+
- Xcode (for SDK/demo app development)
cd backend
composer install
npm install
cp .env.example .env
php artisan key:generate
# Set DB_* values in .env, then:
php artisan migrate --seedRun services (recommended helper):
./start_dev.shOr run manually:
php artisan serve --host=127.0.0.1 --port=8000
php artisan reverb:start
php artisan queue:work
npm run devUse 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 = trueTrack your first event:
AppSignals.track("button_clicked", properties: [
"screen": "home"
])| 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 |
- Full docs:
Documentation/index.html - Backend details:
backend/README.md - SDK details:
AppSignalsSDK/README.md - Deployment templates:
Documentation/deployment-templates/
Backend tests:
cd backend
php artisan testSDK tests:
cd AppSignalsSDK
swift testIssues and pull requests are welcome.
- Fork the repository
- Create a feature branch
- Add tests for behavior changes
- Open a pull request with a clear summary
If this project helps you, support development here:
https://shabgagan.gumroad.com/coffee
Licensed under the MIT License. See LICENSE.
