Back to Home
FlutterNext.jsBLoCHiveNextAuth

Arabic for Beginners

A comprehensive Arabic language learning mobile app with offline-first architecture, interactive reading, and personalized vocabulary building.

Arabic for Beginners hero image

Overview

Arabic for Beginners (AFB) is an innovative Arabic language learning mobile application that transforms how beginners approach Arabic through interactive reading. Unlike traditional language apps that rely on flashcards and rote memorization, AFB immerses learners in authentic Arabic texts while providing instant contextual support. When learners encounter an unfamiliar word, they simply tap it to receive immediate translations and explanations tailored to the specific context—all while maintaining their reading flow.

The app solves a critical challenge faced by Arabic learners: the difficulty of transitioning from structured lessons to real Arabic content. By combining offline-first architecture with intelligent text processing, AFB enables learners to read anywhere, anytime, building practical vocabulary in context rather than in isolation. The app is designed for beginners to intermediate learners who want to develop reading comprehension skills while building a personalized Arabic vocabulary through curated, leveled content.

What makes AFB unique is its context-aware translation system that handles Arabic's complex morphology and diacritics, its complete offline functionality (entire books downloadable for offline reading with cached translations), and its clean architecture approach that ensures maintainability and scalability. The app tracks every aspect of the learning journey—from words learned to reading time—providing learners with tangible progress metrics that motivate continued engagement.

Screenshots

AFB dashboard showing weekly word progress, current reading, and reading time statistics

Track your reading progress with detailed analytics

Vocabulary popup displaying Arabic word translation with grammatical details

Tap any word for instant contextual translations

Reading screen showing full Arabic page with navigation thumbnails

Read authentic Arabic texts with easy navigation

Vocabulary list displaying saved Arabic words with meanings and grammar notes

Build your personal vocabulary collection

Login screen with Google, Apple, and email authentication options

Multiple sign-in options for convenience

Simple email and password login screen

Traditional email login available

Sign-up screen for creating new AFB account

Quick and easy account creation

Billing screen showing active premium subscription management

Manage premium subscription easily

Key Features

Interactive Arabic reading with tap-to-translate - Context-aware instant translations
Offline-first architecture - Complete functionality without internet, enhanced when connected
Personal vocabulary builder - Save words with translations, context, and source book
Progress tracking and analytics - Reading sessions, daily/weekly word counts, visual charts
OAuth authentication (Google, Apple) - Plus email/password with NextAuth.js
Premium subscription with in-app purchases - Tiered access (free, trial, premium)
Dark/Light mode support - Theme system implemented
Cross-device synchronization - Cloud sync when online
Arabic text normalization - Handles diacritics and text variations
Book download management - Download complete books with progress tracking
Reading goals system - Set and track daily/weekly reading objectives
CSV export - Export saved vocabulary for external study
Book levels - Content categorized by difficulty (Beginner, Intermediate, Advanced)
Reading session tracking - Automatic time tracking with session history
Statistical visualization - Weekly word charts and progress graphs
Contextual word saving - Remember where each word was encountered
Smart translation caching - Previously looked-up words instantly available offline
User profile management - Edit name, email, password reset

Technology Stack

Frontend

  • Flutter (SDK >= 3.2.6)
  • BLoC Pattern (flutter_bloc 9.1.1 with Cubit)
  • Hive (hive_flutter 1.1.0 - Local NoSQL database)
  • Dio (dio 5.3.3 - HTTP client with cookie management)
  • GetIt (get_it 8.0.3 - Dependency injection)
  • fpdart (fpdart 1.1.1 - Functional programming with Either monad)
  • Dartz (dartz 0.10.1 - Additional functional programming)
  • Equatable (equatable 2.0.5 - Value equality)
  • Flutter Secure Storage (flutter_secure_storage 9.2.2)
  • Crypto (crypto 3.0.3 - Encryption/hashing)
  • Shared Preferences (shared_preferences 2.2.2)
  • Path Provider (path_provider 2.1.1)
  • Google Sign-In (google_sign_in 6.1.5)
  • Apple Sign-In (sign_in_with_apple 6.1.2)
  • In-App Purchase (in_app_purchase 3.1.13)
  • CSV Export (csv 6.0.0)
  • Share Plus (share_plus 9.0.0)
  • URL Launcher (url_launcher 6.3.0)
  • Percent Indicator (percent_indicator 4.2.5)
  • Intl (intl 0.19.0 - Internationalization)
  • Package Info Plus (package_info_plus 8.3.1)
  • Arabic Text Normalization (unorm_dart 0.3.1+1)

Backend

  • Next.js (RESTful API)
  • NextAuth.js (OAuth and session management)
  • Server URL: test.arabicforbeginners.com
  • Database (PostgreSQL/MongoDB - typical Next.js setup)
  • Cookie-based session management
  • Server-side purchase verification

Features & Integrations

  • OAuth Providers (Google, Apple)
  • In-App Purchases (iOS & Android)
  • Offline-first with bidirectional sync
  • Custom RESTful API for content, translations, user data
  • Deep linking (app_links 6.2.0)
  • Clean Architecture (Domain/Data/Presentation layers)
  • Repository Pattern (Data abstraction)
  • Use Case Pattern (Business logic encapsulation)
  • Either Error Handling (Functional error handling with fpdart)

Technical Challenges

1

Implementing robust offline-first architecture with bidirectional data synchronization - Challenge: Ensuring complete app functionality offline while maintaining data consistency when back online. Solution: Hive local database for all content, smart caching layer, bidirectional sync with conflict resolution.

2

Handling Arabic text processing with diacritics, normalization, and contextual analysis - Challenge: Arabic words can have multiple forms with/without diacritics; same word can have different meanings in different contexts. Solution: Unicode normalization (unorm_dart), custom scoring strategy for word matching, context-aware translation system.

3

Building efficient tap-to-translate with word recognition and context preservation - Challenge: Instantly recognizing tapped words in flowing Arabic text, providing contextually appropriate translations. Solution: Custom word splitter, context builder, translation caching with context metadata, scored match results.

4

Managing complex state with BLoC pattern across multiple features and offline/online modes - Challenge: Coordinating state across library, reading sessions, vocabulary, subscriptions, and auth while handling offline/online transitions. Solution: Modular BLoC architecture with feature-specific Cubits, centralized dependency injection with GetIt, reactive state updates.

5

Secure OAuth integration in a mobile app with session persistence - Challenge: Managing secure authentication flows for Google and Apple, persisting sessions securely. Solution: NextAuth.js backend integration, Flutter Secure Storage for tokens, cookie-based session management with Dio.

6

Implementing premium subscription with cross-platform in-app purchases - Challenge: Handling iOS and Android purchase flows differently while maintaining unified business logic. Solution: Unified subscription repository with platform-specific implementations, server-side purchase verification.

7

Smart translation caching for instant offline access - Challenge: Providing instant translations offline without downloading massive translation databases. Solution: Incremental caching of user-looked-up words with full context, normalized word indexing for fast lookup.

Arabic for Beginners | Jariyah Tech