A multi-platform Flutter app for tracking and visualizing developer productivity metrics. Built with MVVM architecture, Supabase (PostgreSQL + Auth), FL Chart, PDF export, i18n, Dark Mode, GoRouter, Provider, Responsive Layout, Sentry, Google Fonts, and Material Design 3.
- Dart - Programming language
- Flutter - Cross-platform UI framework
- Material Design 3 - Modern design system
- MVVM - Architecture pattern (Model - View - ViewModel)
- Provider - State management solution
- Supabase - Backend-as-a-Service (BaaS)
- PostgreSQL - Relational database via Supabase
- Supabase Auth - Authentication (email/password, OAuth, magic link)
- Supabase Realtime - Live data sync across devices
- Multi-Platform Support - Android & iOS
- FL Chart - Rich, animated charts and graphs for metrics visualization
- PDF Export - Generate and download metric reports as PDF
- Printing - Print reports and dashboards directly from the app
- Google Fonts - Beautiful typography
- i18n - Multi-language support (EN / PT-BR / ES)
- Dark Mode Provider - Theme switching
- GoRouter - Declarative routing with adaptive navigation (mobile/web)
- Flutter Local Notifications - Push notifications
- Responsive Layout - Adaptive UI
- Sentry Logs - Error tracking and monitoring
Before starting, ensure you have the following installed:
- FVM (Flutter Version Management) - Required for managing Flutter versions
- Git
- Supabase Account - For backend, database, and auth
- Xcode (for iOS development on macOS)
- Android Studio (for Android development)
Note: This project uses FVM for Flutter version management. You don't need to install Flutter globally.
Optional: VS Code or Android Studio with Flutter plugins for IDE support.
git clone https://github.com/Victor-Zarzar/flutter-dev-metrics
cd flutter-dev-metricszed .make installPass the variables via --dart-define when running or building the app:
flutter run -d "iPhone 17" \
--dart-define=SUPABASE_URL=https://your-project.supabase.co \
--dart-define=SUPABASE_ANON_KEY=your-anon-key \
--dart-define=SENTRY_DSN=your-sentry-dsn \
--dart-define=SENTRY_ENV=developmentThen initialize Supabase in your app entry point:
import 'package:dev_metrics/app/config/app_config.dart';
await AppConfig.init();Note: For release builds,
--dart-defineflags are already included via theMakefiletargets. Make sure to pass them when invokingmake.
Apply the provided SQL migrations to your Supabase project via the Supabase dashboard or CLI:
supabase db pushmake run-iosdart devtoolsCheck for code issues:
flutter analyzeRun all tests:
flutter testFormat all files:
dart format .make cleanAll release builds are handled via the Makefile and include --obfuscate and --split-debug-info automatically. Make sure your environment variables are set before building.
Build release APK:
make build-apk-releaseBuild release AppBundle:
make build-appbundle-releaseThe generated files will be at:
- APK:
build/app/outputs/flutter-apk/app-release.apk - AppBundle:
build/app/outputs/bundle/release/app-release.aab - Debug symbols:
build/debug-info/
make build-ios-releaseThe generated files will be at:
- IPA:
build/ios/ipa/ - Debug symbols:
build/debug-info/
All production builds include:
- Error tracking with Sentry DSN
- Code obfuscation for security
- Debug symbols upload for crash symbolication
Make sure to:
- Set your
SENTRY_DSNandSENTRY_ENVin your environment or.envfile - Upload debug symbols to Sentry after each release for proper stack traces
- Keep
build/debug-info/directory for symbolication
- Fork the project
- Create your feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
Report issues at: https://github.com/Victor-Zarzar/flutter-dev-metrics/issues
This project is licensed under the MIT License - see the LICENSE file for details.
Victor Zarzar - @Victor-Zarzar
Project Link: https://github.com/Victor-Zarzar/flutter-dev-metrics