MDBLogic

Project

Reverse It

A mobile Flutter game where players must recognize reversed audio fragments and score points by answering correctly.

Version 0.0.2
Stack Flutter · Dart · flutter_bloc (Bloc pattern) · …

Reverse It

A mobile audio quiz where players must recognize reversed audio fragments.

FlutterDartBlocFirebaseFFmpeg Kit

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