Acta
A tool for application management that captures events and errors in a structured and extensible way.
Features
- Automatic capture of custom events and errors
- Event severity tracking (info, warning, error, critical)
- Support for multiple reporters (console, MongoDB, Elasticsearch, local database)
- Flexible configuration via
HandlerOptions - Easy integration into any Dart or Flutter application
Roadmap
Planned improvements and upcoming features for future releases:
🧱 Core & Architecture
✅Main core of package, system callback, reports, breadcums and metadata🚧Isolate the reporting system to improve performance and safetySplit package into smaller subpackages (e.g.acta_core,acta_reporters)Reduce internal dependencies for better modularization
⚙️ Extensibility
✅MakeEventfully extensible and customizable✅MakeReportfully extensible and customizable🚧MakeSeverityfully extensible and customizable
☁️ Integrations
✅AddElasticReporterfor advanced query and analytics✅AddMongoReporterfor local or hybrid setupsAddFirebaseReporterfor cloud-based event trackingAddSentryReporterfor production error monitoring
📶 Offline & Reliability
🚧Implement offline-first mode with local queueAdd automatic flusher to resend events when back onlineRetry queue for failed reportsLocal cache and sync
🧪 Tooling & Developer Experience
✅Provide built-in adapters for Flutter’s error handling system for AndroidProvide built-in adapters for Flutter’s error handling system for IOS🚧Add examples and samplesImprove test coverage and provide example-driven docsAdd command-line utilities for debugging and inspection
💡 This roadmap is subject to change as the package evolves.
Contributions and feature suggestions are welcome!
Getting started
Add acta as a dependency in your pubspec.yaml:
dependencies:
acta: ^latest
Usage
Basic example of package initialization:
ActaJournal.initialize(
reporters: [
ConsoleReporter(),
],
options: const HandlerOptions(
catchAsyncErrors: true,
logFlutterErrors: true,
logPlatformErrors: true,
minSeverity: Severity.info,
maxBreadcrumbs: 50,
),
initialContext: {'appVersion': '1.0.0', 'build': 1, 'env': 'dev'},
beforeSend: (report) {
return report;
},
appRunner: () => runApp(const MyApp()),
);
Basic example of reporting an event:
ActaJournal.addBreadcrumb('Pressed INFO');
ActaJournal.report(
event: BaseEvent(
message: 'User pressed info',
severity: Severity.info,
metadata: {'screen': 'home'},
),
);