Unofficial Flutter mobile client for Rybbit β open-source, privacy-friendly web analytics.
- Multi-site dashboard with real-time visitor counts and organization filtering
- Time-series charts with period comparison (current vs previous)
- Selectable metrics: users, sessions, pageviews, pages/session, bounce rate, duration
- Flexible time range picker (today, yesterday, 7/30 days, week, month, year, custom)
- Advanced filtering by country, browser, OS, device, referrer, pathname and more
- Pages β top pages with visitor and session counts
- Referrers β traffic sources breakdown
- Countries β geographic distribution with flag indicators
- Devices β browser, OS, device type, screen resolution stats
- LCP, CLS, FCP, TTFB, INP monitoring
- Good/Needs Improvement/Poor ratings with color coding
- Performance trends over time
- Breakdown by dimension (pages, countries, devices, browsers, OS)
- Custom event names overview with occurrence counts
- Event properties breakdown per event
- Events over time chart
- Outbound links tracking
- Goal creation/editing (path-based and event-based)
- Conversion rate tracking
- Funnel visualization with step-by-step dropoff analysis
- Session list with country flags, browser info, entry pages
- Session detail with full event timeline
- Identified user display with traits (username, email)
- Session replay event viewer
- JavaScript error list with occurrence counts
- Sessions affected per error
- Site configuration (tracking toggles, excluded IPs/countries)
- Organization management with member listing
- Dark / Light / Auto theme
- 11 languages
- Server connection and auth method display
| Language | Code | Language | Code |
|---|---|---|---|
| English | en |
Japanese | ja |
| Czech | cs |
Korean | ko |
| German | de |
Polish | pl |
| Spanish | es |
Portuguese | pt |
| French | fr |
Chinese | zh |
| Italian | it |
- Flutter SDK 3.38+
- Android SDK / Xcode (for iOS)
- A running Rybbit instance
git clone https://github.com/nks-hub/rybbit-app.git
cd rybbit-app
# Install dependencies
flutter pub get
# Generate code (Freezed models, JSON serialization)
flutter pub run build_runner build --delete-conflicting-outputs
# Generate localizations
flutter gen-l10n
# Run
flutter runCopy .env.example to .env and fill in your values:
cp .env.example .envThe .env file is automatically loaded at build time via --dart-define-from-file:
# Run with .env
flutter run --dart-define-from-file=.env
# Build with .env
flutter build apk --dart-define-from-file=.envCurrently supported variables:
| Variable | Required | Description |
|---|---|---|
SENTRY_DSN |
No | Sentry error tracking DSN. App works without it. |
Two auth methods supported:
- Email + Password β Standard login with session cookies
- API Key β Direct API key authentication
Enter your Rybbit server URL (e.g. https://analytics.example.com) and credentials on the login screen.
| Layer | Technology |
|---|---|
| Framework | Flutter 3.38+ / Dart 3.10+ |
| State Management | Riverpod |
| Routing | go_router |
| HTTP Client | Dio with cookie management |
| Local Storage | Hive + Flutter Secure Storage |
| Charts | fl_chart |
| Serialization | Freezed + json_serializable |
| Localization | Flutter gen-l10n (ARB files) |
| Error Tracking | Sentry (optional, via --dart-define) |
Feature-first modular architecture:
lib/
βββ core/
β βββ config/ # App configuration
β βββ network/ # Dio provider, auth interceptor
β βββ router/ # go_router setup, shell screen
β βββ sentry/ # Sentry initialization
β βββ state/ # Current site provider
β βββ storage/ # Hive storage service
β βββ theme/ # Light & dark Material themes
βββ features/
β βββ analytics/ # Overview, charts, time range
β βββ auth/ # Login (email/password + API key)
β βββ dashboard/ # Site listing, org filter
β βββ errors/ # JS error tracking
β βββ events/ # Custom events, properties
β βββ funnels/ # Conversion funnels
β βββ goals/ # Goal CRUD + conversion stats
β βββ metrics/ # Pages, referrers, countries, devices
β βββ organizations/ # Org listing + members
β βββ performance/ # Core Web Vitals
β βββ session_replay/ # Replay event viewer
β βββ sessions/ # Session list + detail
β βββ settings/ # Theme, language, account
β βββ sites/ # Site config management
β βββ users/ # User list + detail + traits
βββ l10n/ # ARB translation files
βββ shared/
βββ models/ # Freezed data models
βββ utils/ # Formatters, helpers
βββ widgets/ # Reusable UI components
Each feature follows: data/ (API) β application/ (state) β presentation/ (UI)
# Debug (with .env)
flutter run -d <device-id> --dart-define-from-file=.env
# Build APK (debug / release)
flutter build apk --debug --dart-define-from-file=.env
flutter build apk --release --dart-define-from-file=.env
# Code generation (after model changes)
flutter pub run build_runner build --delete-conflicting-outputs
# Translations (after ARB changes)
flutter gen-l10n
# Analyze
flutter analyze
# Tests
flutter test- Create
lib/l10n/app_<code>.arbbased onapp_en.arb - Translate all keys
- Add locale code to
supportedLocaleCodesinlib/app.dart - Add display name to
localeDisplayNamesinlib/app.dart - Run
flutter gen-l10n
| Platform | Minimum |
|---|---|
| Android | API 21 (5.0 Lollipop) |
| iOS | 12.0 |
| Backend | Rybbit v1.0+ |
Contributions welcome! Please open an issue or pull request.
- Fork the repo
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes
- Push to the branch
- Open a Pull Request
This is an unofficial community project. Rybbit is developed by rybbit-io.
Developed by NKS Hub | dev@nks-hub.cz






