Reverse It
A mobile audio quiz where players must recognize reversed audio fragments.
Overview
Reverse It is a mobile quiz game where players hear an audio fragment in reverse and must guess what the original word is. After each answer, the player receives immediate feedback; after multiple rounds, a score summary shows correct and incorrect answers.
The focus is on a fast, responsive user experience (low-latency audio, haptics, animations) and a clear game flow that can be extended with packs, difficulty levels, and (later) multiplayer.
Gameplay
- A reversed audio fragment is played
- The player enters an answer (with validation)
- The app checks the answer and provides immediate feedback
- Score is tracked per round
- End screen displays total result + overview of correct/incorrect answers
Features
- Reverse audio playback (FFmpeg + just_audio / audioplayers)
- Record your own audio fragments to reverse
- Input & answer validation via Formz
- Score tracking per round + end summary
- Animations and haptic feedback
- Navigation flow via Flow Builder
- Localization (intl + flutter_localizations, ARB workflow)
- Firebase authentication (email, Google, Apple)
- Push notifications via Firebase Messaging
- Native splash screen
Architecture
Reverse It uses the Bloc pattern for state management. The app is split into UI screens and services, so that audio, game logic, and platform integrations can be tested and extended independently of the UI.
Project structure
lib/
├── screens/
│ ├── home_screen.dart
│ ├── game_screen.dart
│ ├── result_screen.dart
│ ├── end_screen.dart
│ └── login_screen.dart
├── services/
│ ├── audio_service.dart
│ ├── audio_reverse_service.dart
│ ├── game_logic_service.dart
│ ├── recorder_service.dart
│ ├── vibration_service.dart
│ ├── auth_service.dart
│ └── firebase_messaging_service.dart
├── l10n/
└── main.dart
Technical highlights
- Audio pipeline: reverse processing via FFmpeg Kit
- Playback: just_audio/audioplayers for cross-platform playback
- State: predictable game flow with Bloc events/states
- Input: Formz for consistent validation and error states
- Auth & messaging: Firebase Auth + FCM in separate services
- Permissions: microphone/storage handling via permission_handler
Roadmap
- More words and levels
- Difficulty levels
- Cloud sync / score storage
- Multiplayer mode