Flutter

Moderation for Flutter apps

A report button in the app, the decision in the dashboard, enforcement via webhook. The API key always stays in your backend and never ships in the app.

Architecture

The app talks to your backend

An API key never belongs in a mobile app, and a snapshot sent from the reporter’s device cannot be trusted. So your Flutter app calls your own backend, which forwards to Limenia.

The path of a report
Flutter app  ──▶  your backend  ──▶  Limenia     POST /v1/reports
Flutter app  ◀──  your backend  ◀──  Limenia     webhook decision.created
Your backend

What your backend takes care of

A small endpoint is enough, for example a Cloud Function or an Edge Function. The examples on GitHub show it for seven backends.

  • Set the reporter from the sign-in, never from the device.
  • Load the content snapshot from your own database.
  • Pass the Idempotency-Key, status and Retry-After through to the app unchanged.
  • Forward appeals (POST /v1/appeals) and reviews (POST /v1/reviews) the same way.
Device check

Bans that survive a reinstall

The Flutter plugin limenia_device gets a token from Play Integrity on Android and from Apple DeviceCheck on iOS. Your backend forwards it to Limenia. Limenia marks devices of banned users and tells you when a new account uses a marked device.

  • Hosted on GitHub and added via Git with a version tag.
  • Android with Google Play from minSdk 24, iOS from version 15.
  • A mark is a hint, never proof. Your app decides what follows.
pubspec.yaml
dependencies:
  limenia_device:
    git:
      url: https://github.com/DL3KB/limenia-flutter.git
      ref: v0.1.0
Client package

Dart package for reports and status

For Dart and Flutter there is a client package without widgets and without runtime dependencies. It validates reports, appeals and reviews, sends them through your backend with a queue and retries, and reads decisions with their statements of reasons. The package is not public yet, ask us for access.

Frequently asked questions

Your question is not here? Write to us, a person will answer.

[email protected]

Can my Flutter app call Limenia directly?

No. The API key belongs in your backend. The app calls your backend, which sets the person from the sign-in and forwards the report to Limenia.

Are there ready-made widgets for the report button?

No. You design the UI and texts yourself, to fit your app. The client package and the plugin deliberately ship without widgets.

Which backend do I need?

Any that speaks HTTPS. There are runnable examples for Firebase Cloud Functions, Supabase Edge Functions, Node.js, Python, Go, PHP and AWS Lambda.

How do I install the plugin?

Via Git from the public repository DL3KB/limenia-flutter, with a version tag in pubspec.yaml. The plugin’s README has the details.

Ready for your notice and action process?

We show you Limenia with an example and work out what your app needs for the DSA and the app stores.

Or email us directly: [email protected]