| Initial | Response |
- ✅ One-tap grammar & tone correction using Google Gemini
- 🎨 Tone Selection: Choose from Formal, Neutral, or Friendly correction styles
- 🔁 Smart input field with auto-paste from clipboard
- 📋 Copy corrected text instantly to clipboard
- 💬 Chat-like interface with typing animations
- 🔄 Refresh responses with different tones
- 🔒 Privacy-first: no local or external data logging
- 🏗️ Clean Architecture with dependency injection
- 🧪 Comprehensive testing suite (unit, widget, integration)
I haven't programmed this app to collect any personal information.
However, since you're using your own Gemini API key,
all your prompts and responses are processed by your Google Cloud account.
On your device, no data is stored permanently.
You can delete all local data by clearing the app’s storage or uninstalling it
- Flutter (Dart) - Cross-platform mobile development
- Google Gemini GenAI - AI-powered grammar correction
- Clean Architecture - Domain, Data, and Presentation layers
- BLoC/Cubit - State management with flutter_bloc
- Dependency Injection - get_it + injectable for IoC
- Functional Programming - fpdart for error handling with Either monad
- Freezed - Immutable models and state unions
- Auto Route - Type-safe navigation
- JSON Serialization - Automated model serialization
- Build Runner - Code generation pipeline
- Patrol - UI testing framework for integration tests
- Mockito/Mocktail - Mocking for unit tests
- SonarCloud - Code quality analysis and metrics
- Flutter Test - Unit and widget testing
- Flutter SDK (>=3.3.0)
- Dart SDK
- Google Gemini API key
- Clone the repository
- Install dependencies:
flutter pub get - Generate code:
flutter packages pub run build_runner build - Set up your
.envfile with your Gemini API key - Run the app:
flutter run
# Run all tests
flutter test
# Run integration tests with Patrol
flutter test integration_test/- ✅
Tone/style selection (formal, casual, etc.)Implemented - Settings page with developer information
- Basic history & revision tracking
- Custom prompt presets
- Dark mode support
- Android & iOS release builds
Presentation Layer (UI + State Management)
↓
Domain Layer (Business Logic + Interfaces)
↓
Data Layer (Repository + Network)
↓
External APIs (Google Gemini)
HomePageView → HomePageCubit → IGrammafyRepository → NetworkDataSource → Gemini API
- HomePageCubit: Manages UI state and business logic
- GrammafyRepository: Implements domain repository interface
- NetworkDataSource: Handles Gemini API communication
- ToneType: Enum for correction style selection
Open to PRs, issues, and feedback. Feel free to fork or suggest improvements!
- Follow Clean Architecture principles
- Use BLoC for state management
- Write comprehensive tests for new features
- Generate code with
build_runnerafter model changes - Maintain code quality with SonarCloud standards
