Getting started

  1. Try the demo
  2. 1. Run the server
  3. 2. Create a project
  4. 3. Add the SDK
  5. 4. Send an event
  6. Next steps

Try the demo

The quickest way to see Avizoro is the demo stack. It seeds two weeks of sample data (a shop app with three releases, a regression, an ANR, slow endpoints and user feedback) and runs read-only:

git clone https://github.com/avizoro/avizoro
cd Avizoro
AVIZORO_READ_TOKEN=demo docker compose -f docker-compose.yml -f docker-compose.demo.yml up -d

Open http://localhost:8080 and sign in with the token demo.

Without Docker, run the server with the same settings from source:

Demo__Seed=true Auth__ReadToken=demo dotnet run --project src/Avizoro.Server
dotnet run --project src/Avizoro.Dashboard      # http://localhost:5292

Seeding only runs on an empty database, so it never touches real data.

1. Run the server

With Docker (PostgreSQL + server + dashboard):

cp .env.example .env        # set AVIZORO_READ_TOKEN to a long random value
docker compose up -d
  • Dashboard: http://localhost:8080
  • API: http://localhost:7099

From source, with SQLite and no setup:

dotnet run --project src/Avizoro.Server        # http://0.0.0.0:7099
dotnet run --project src/Avizoro.Dashboard     # http://localhost:5292

The server creates and migrates its database on startup. To run on a cloud host, see Deploying.

2. Create a project

Open the dashboard, enter the admin token (Auth:ReadToken), and go to Projects → New project. The page shows the project’s DSN:

https://{projectKey}@{host}/{projectId}

The project key is a public routing id that ships inside your app. It is not a secret. By default the server only accepts events for registered projects (Ingest:RequireKnownProject).

You can also create a project from a script:

curl -X POST http://localhost:7099/admin/projects \
  -H "Authorization: Bearer $ADMIN_TOKEN" -H "Content-Type: application/json" \
  -d '{ "projectId": "my-app", "name": "My App" }'

3. Add the SDK

For a MAUI app:

dotnet add package Avizoro.Maui
// MauiProgram.cs
builder
    .UseMauiApp<App>()
    .UseAvizoro("http://projectKey@10.0.2.2:7099/my-app", o =>
    {
        o.Environment = "staging";
    });

The Android emulator reaches your machine at 10.0.2.2, not localhost.

That one call sets up crash capture, the offline queue, sessions, ANR detection, navigation breadcrumbs, page-load timing and ILogger integration. App name and version are detected automatically. For other app types, see SDKs.

4. Send an event

Crashes are captured automatically. To report something yourself, inject IAvizoro:

public class CheckoutViewModel(IAvizoro kit)
{
    async Task PayAsync()
    {
        kit.SetUser("user-42");                  // optional, an anonymous id
        kit.SetTag("plan", "pro");
        kit.AddBreadcrumb("Tapped Pay");
        try { /* ... */ }
        catch (Exception ex)
        {
            await kit.TrackExceptionAsync(ex);
        }
    }
}

The event appears in the dashboard’s Events feed right away, and in Issues, grouped with every other event that has the same exception type and top in-app frame.

Next steps