Release v1.0

GoalPulse | Football Match Center and Live Streaming

A flagship Flutter application by iAC Studio. Engineered for real-time live scores, transfer news, and live football video streaming.

01. Introduction

GoalPulse is a premium sports application designed for high-performance match tracking. Decoupled from heavy backend layers, it leverages a dynamic proxy setup for real-time football databases. Wrapped in a stunning glassmorphic interface, it offers live match scores, detailed game analyses, global transfer news, and an integrated multi-channel HLS video streaming engine.

Live Video Streaming

Embedded video streaming player with landscape support, adaptive aspect ratios, and quick social links sharing.

6-Tab Match details

Complete statistical match details: Summary, commentary feed, lineups grid, standings context, stats comparisons, and H2H records.

Integrated Monetization

Pre-configured Google Mobile Ads (Banner, Interstitial with smart jump-limiting guards, and App Open ads).

OneSignal Push & Alerts

Push alerts combined with dynamic JSON feed notifications and client-side kickoff reminders.

02. Installation & Setup

1. Environment Prerequisites

Ensure you have Flutter installed on your machine:

  • Flutter SDK: Version 3.20.0 or higher.
  • Android: Android Studio with latest Android SDK and Gradle support.
  • iOS: macOS with Xcode 15+ and CocoaPods installed.
flutter --version

2. Project Initialization

Open the project root directory in your terminal and run the following command to fetch all required packages:

flutter pub get

3. Automated Icon Generation

GoalPulse uses flutter_launcher_icons. Replace the logo file at assets/images/logo.png and run the generator command:

dart run flutter_launcher_icons

03. API, Ads & Notifications Config

GoalPulse is designed to be highly flexible and self-contained. It includes a built-in mock mode and a complete self-hostable PHP backend source code. Simply configure the parameters inside the centralized configuration file:
lib/services/app_config.dart


🎮 Out-of-the-Box Local Mock Mode (Default)

To enable instant testing, GoalPulse runs in a fully functional Local Mock Data Mode by default on first launch. All matches, lineups, commentary, standing tables, news, and video channels are simulated using local static assets. You can compile, run, and preview the app immediately without configuring any database, web server, or paying subscription fees!

1. Centralized Configuration File

Open lib/services/app_config.dart and configure the following parameters:

class AppConfig {
  AppConfig._();

  // ───────── SERVER & CENTRAL API CONFIGURATIONS ─────────
  // Points to your self-hosted backend directory
  static const String baseUrl = 'https://your-domain.com/football-api';
  
  // Set your unique App License Key (or keep default if license checking is disabled in your PHP backend)
  static const String appLicenseKey = 'YOUR_SUBSCRIBED_LICENSE_KEY'; 

  static const String notificationFeedUrl = '$baseUrl/notifications_feed.json';
  static const String remoteConfigUrl = '$baseUrl/app_config.json';

  // ───────── ONESIGNAL CONFIGURATIONS ─────────
  static String oneSignalAppId = "YOUR_ONESIGNAL_APP_ID";

  // ───────── ADMOB AD UNITS (TEST/LIVE KEYS) ─────────
  static const String adMobBannerId = 'ca-app-pub-xxx/xxx';
  static const String adMobInterstitialId = 'ca-app-pub-xxx/xxx';
  static const String adMobAppOpenId = 'ca-app-pub-xxx/xxx';
}
                    

2. Data Feed & API Integration Options

When you are ready to connect the app to a live database and sports feeds, you have two options:

Option A: Self-Host the Included PHP Backend (Included in Package)

The main package contains a fully functional backend API and CMS (located in the PHP_Backend_Source_Code directory). This backend acts as a caching proxy and rotates API keys to serve real-time fixtures, streams, and commentary dynamically.

  • Step 1: Create a folder named football-api in the root of your domain's public directory (e.g. public_html/football-api/) and upload all files from the backend folder.
  • Step 2: Ensure the directory has write permissions (chmod 0755 or 0777) so SQLite (database.db) and caches can write updates.
  • Step 3: Open https://yourdomain.com/football-api/admin/ in a browser to log in using default credentials ([email protected] / admin123). Change these default values in admin/config.php.
  • Step 4: Register your API subscription keys in the CMS rotation tab. Register active license keys in the Licenses tab (or keep ENABLE_LICENSE_VALIDATION set to false in proxy.php to accept any key).
  • Step 5: Configure your cPanel Cron Job to run cron_notifications.php every 10 minutes to auto-sync OneSignal notifications.

Option B: Turnkey Hosted API Service (Optional)

If you prefer not to manage a server, databases, or API rotation keys, you can subscribe to our managed hosted feed service. We will supply you with a hosted base URL and a licensed key to connect directly.

  • Basic Plan: $14.99/mo (7,500 daily requests)
  • Standard Plan: $29.99/mo (25,000 daily requests)
  • Premium Plan: $59.99/mo (65,000 daily requests)

To purchase a hosted key or request a hosted demo, contact us:

3. Google Mobile Ads (AdMob) SDK Activation

⚠️ CRITICAL STEP: In addition to configuring unit IDs inside app_config.dart, you must declare your AdMob Application ID in the platform files to avoid startup crashes.

Android: Open android/app/src/main/AndroidManifest.xml and update the application metadata block:

<meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="ca-app-pub-your-admob-app-id~xxxxxxx"/>
                    

iOS: Open ios/Runner/Info.plist and verify or add the GADApplicationIdentifier key:

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-your-admob-app-id~xxxxxxx</string>
                    

4. Firebase Console Setup & Credentials

GoalPulse uses Firebase services for core app packages. You must configure your own Firebase project and place the credentials files in the platform folders:

Step 1: Create a Firebase Project

Go to the Firebase Console, click Add Project, and complete the setup wizard.

Step 2: Configure Android App

  • Add an Android app to your project using your custom package name (default: com.iacstudio.goalpulse).
  • Download the generated google-services.json credential file.
  • Move this file into the android/app/ directory of your project, replacing the placeholder file.

Step 3: Configure iOS App

  • Add an iOS app to your Firebase project using your runner Bundle ID.
  • Download the generated GoogleService-Info.plist file.
  • Open the project in Xcode, drag and drop the GoogleService-Info.plist file into the Runner/Runner folder (ensure "Copy items if needed" is selected).

5. OneSignal Push Notification & Licensing Setup

GoalPulse integrates the OneSignal SDK to trigger real-time alerts for live match events, transfer headlines, and custom announcements, as well as managing user-facing lockdown controls.

Step 1: Create a OneSignal App

Go to the OneSignal Dashboard, register an account, and click New App/Website. Name your app and select Android/iOS platforms.

Step 2: Retrieve App ID

Inside your OneSignal dashboard, navigate to Settings > Keys & IDs. Copy the OneSignal App ID string.

Step 3: Update App configuration

Open lib/services/app_config.dart in your Flutter project and replace the placeholder value:

static const String oneSignalAppId = "YOUR-ONESIGNAL-APP-ID";

Step 4: Platform Notifications Configuration

  • Android: Configure Firebase Cloud Messaging (FCM) credentials in OneSignal to enable push delivery on Google Play services.
  • iOS: Set up Apple Push Notification Service (APNs) keys/certificates in the OneSignal platform settings and enable push notification capabilities inside Xcode.

04. Technical Architecture

Clean, modular, and built for scale following the iAC Standard.

lib/
 ├── bottomnav/                 # Core Tab Navigation
 │    ├── bottom_nav_routing.dart # Liquid menu & Force update checker
 │    ├── home_screen.dart       # Live Streaming Matches Grid
 │    ├── matches_screen.dart    # Fixtures List & Date Selector
 │    ├── leagues_screen.dart    # Leagues Search & Selection
 │    └── news_screen.dart       # News Feed & API filter
 ├── model/                     # Data entities (Soccer, Streaming, Commentary)
 ├── providers/                 # State Managers (Theme State)
 ├── services/                  # Business Logic & Infrastructure
 │    ├── api_client.dart       # Request client & license validation
 │    ├── api_calling.dart      # High-level clean data fetching logic
 │    ├── ad_manager.dart       # AdMob Helper (App Open, Interstitial, Banner)
 │    ├── cache_manager.dart    # Persistent cache layer
 │    ├── force_update_manager.dart # Kill-switch configurations
 │    ├── local_notification_manager.dart # Zoned kickoff alarm scheduler
 │    └── notification_manager.dart # OneSignal push registration
 ├── utils/                     # Themes, Colors & Constants
 ├── widgets/                   # Reusable UI Custom Widgets
 ├── main.dart                  # Global entry point & App lifecycle observer
 ├── splash_screen.dart         # Branded entry animation & onboarding router
 ├── onboarding_screen.dart     # Swipeable onboarding guide
 ├── notifications_screen.dart  # Double Tab Alerts (Latest Alerts & My Alerts)
 ├── match_detail_screen.dart   # Match statistics panel (6 Tabs)
 ├── league_detail_screen.dart  # Standings & Schedules
 ├── live_matches_screen.dart   # Active matches scroll list
 ├── live_stream_details_screen.dart # Multi-channel inline video center
 └── live_stream_player_screen.dart # Fullscreen HLS video player
                

05. UI/UX Features

Glassmorphism & Liquid Navigation

GoalPulse uses BackdropFilter to create frosted glass aesthetics. The bottom navigation bar uses a custom translucent Liquid effect containing 4 core tabs (Home, Matches, News, and Leagues).

Native Tactile Feedback

Throughout the app, InkWell widgets are integrated inside Material components to provide satisfying ripple touch feedback, adhering strictly to modern UI paradigms.

Caching & Optimizations

  • Zero-Jank Scrolling: Uses AlwaysScrollableScrollPhysics for flawless pull-to-refresh.
  • Local Cache Engine: Uses SharedPreferences cache to temporarily store match details, significantly reducing the amount of API requests necessary.

06. App Customization

Changing Brand Colors

All design tokens are centralized. To change the brand look, visit:

  • lib/utils/colors.dart: Update mainColor (the primary green theme) and other colors to match your brand palette.

Renaming the Package Name

To rename the package name (e.g., from com.iacstudio.goalpulse to com.yourbrand.app), use the pre-installed package:

# Run the renaming command
dart run change_app_package_name:main com.yourbrand.app
                    

07. Release Build Guide

Android Production Build

To generate an Android App Bundle (AAB) for the Google Play Store:

flutter build appbundle --release

To generate a standard APK:

flutter build apk --release

iOS Production Build

To build an iOS IPA for the App Store (requires macOS):

flutter build ipa --release

08. Credits & Libraries

GoalPulse utilizes the following open-source packages to deliver a premium experience:

  • video_player & chewie - Video Streaming Engine
  • google_mobile_ads - AdMob Monetization
  • onesignal_flutter - Push Notifications Registration
  • http - Networking & API Requests
  • shared_preferences - Cache Persistence
  • cached_network_image - Image Optimization & Caching
  • liquid_bottom_nav_bar - Custom Animated TabBar
  • provider - Application State Management

09. Changelog

Version 1.0.0 (Initial Release)

  • Initial Production Release
  • Integrated Zoned Local Kickoff Reminders (Offline notifications)
  • Added Multi-channel Live Football Video Streaming Engine (HLS/MP4)
  • Implemented Immersive Magazine-Style News Detail with parallax headers
  • High-Glow Pulsing Live Match broadcast-style indicators
  • Added 7-tap gesture-protected Management Portal for API stats
  • Optimized SharedPreferences caching engine for league fixtures & transfer headlines
  • Adaptive Light and Dark mode UI with Emerald Green theme
  • Pre-configured Gradle compatibility and Java 8 desugaring support
  • Complete user configuration and deployment documentation

10. About iAC Studio

iAC Studio Logo

iAC Studio

A Mobile App Development Company

Led by Ishtiaq Ali Chughtai, iAC Studio is a powerhouse with 8+ years of industry experience. We transform complex ideas into high-performance digital assets across Flutter, Unity, and AI sectors.

✦ 8+ Years Experience
✦ Flutter & Unity Experts
✦ AI & Digital Solutions

11. Support Hub

Get in Touch

Need help with customization or have a custom requirement? Our team is available for high-end Flutter integrations and consultations.

Email: [email protected]

WhatsApp: +92 302 688 1965

Location: Jagna, Gujranwala, Punjab, Pakistan