Skip to content

Humoudideas77/fish-ai

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Samakati | سمكتي

Your Smart Fishing Companion in the GCC

A comprehensive Flutter application for GCC fishermen featuring AI-powered fish identification, fishing intelligence, catch logging, and social sharing capabilities.


🎣 Overview

Samakati | سمكتي ("My Fish" in Arabic) is a mobile fishing companion app specifically designed for the Gulf Cooperation Council (GCC) region. The app helps both hobby and semi-professional fishermen:

  • Identify fish species from photos using AI
  • Get detailed species information (edibility, hazards, behavior, habitat)
  • Access fishing intelligence (tides, weather, best times, gear recommendations)
  • Log catches with photos, locations, and conditions
  • Share branded catch photos on social media
  • Learn through educational fishing content
  • Find local tackle shops and charter services

🏗️ Architecture

Technology Stack

  • Framework: Flutter 3.0+ / Dart 3.0+
  • State Management: Riverpod 2.4+
  • Routing: GoRouter 13.0+
  • Local Storage: Hive 2.2+
  • Localization: flutter_localizations + intl
  • Image Handling: image_picker, camera, image
  • Sharing: share_plus

Architecture Pattern

Clean Architecture with:

  • Domain Layer: Entities and business logic
  • Data Layer: Repositories, services, and data models
  • Presentation Layer: Screens, widgets, and state management

Project Structure

lib/
├── main.dart
├── core/
│   ├── theme/
│   │   ├── app_theme.dart
│   │   └── app_colors.dart
│   ├── routing/
│   │   └── app_router.dart
│   ├── localization/
│   │   ├── intl_en.arb
│   │   └── intl_ar.arb
│   └── constants/
│       └── app_constants.dart
├── domain/
│   └── entities/
│       ├── user.dart
│       ├── fish_species.dart
│       ├── catch_record.dart
│       ├── fish_prediction.dart
│       ├── conditions_snapshot.dart
│       ├── fishing_advice.dart
│       ├── spot.dart
│       ├── article.dart
│       ├── shop.dart
│       ├── subscription.dart
│       └── share_template.dart
├── data/
│   ├── services/
│   │   ├── fish_identification_service.dart
│   │   └── fishing_advisor_service.dart
│   └── repositories/
│       ├── fish_repository.dart
│       ├── catch_repository.dart
│       ├── spot_repository.dart
│       ├── article_repository.dart
│       └── shop_repository.dart
├── features/
│   ├── onboarding/
│   │   └── presentation/
│   │       └── screens/
│   ├── home/
│   ├── fish_identification/
│   ├── fish_profile/
│   ├── catch_log/
│   ├── conditions/
│   ├── education/
│   ├── shops/
│   ├── subscription/
│   ├── camera_share/
│   └── settings/
└── widgets/
    └── common/

🎨 Design System

Brand Identity

  • App Name: Samakati | سمكتي
  • Tagline (EN): "Your smart fishing companion in the GCC"
  • Tagline (AR): "رفيقك الذكي للصيد في الخليج"

Color Palette

Color Hex Usage
Deep Sea Blue #01579B Primary color, app bars, buttons
Turquoise Accent #00ACC1 Secondary color, accents
Sand Beige #FFE082 Beach/tide accents
Coral Orange #FF7043 Highlights, CTAs
Background #F5F7FA App background
Surface #FFFFFF Cards, surfaces
Text Primary #1B1B1B Main text
Text Secondary #4F4F4F Secondary text

Typography

  • Latin: Poppins (Google Fonts)
  • Arabic: Cairo (Google Fonts)
  • Full RTL support for Arabic

🌍 Localization

The app supports full bilingual functionality:

  • English (en) - LTR
  • Arabic (ar) - RTL

All UI elements, content, and user-facing text are localized in both languages.

Localization Files

  • lib/l10n/intl_en.arb - English translations
  • lib/l10n/intl_ar.arb - Arabic translations

💡 Features

1. Fish Identification

  • Take photo with Catch Camera or choose from gallery
  • AI-powered fish species identification
  • Multiple predictions with confidence scores
  • Instant access to species profiles

2. Fish Profiles

Detailed information for each species:

  • Common and scientific names (EN/AR)
  • Habitat and depth range
  • Average and maximum size
  • Behavior and seasonal patterns
  • Edibility status and safety hazards
  • Regulations notes (non-legal disclaimer)
  • Recommended fishing gear and techniques

3. Catch Logging

  • Photo-based catch records
  • Species, location, date/time
  • Length and weight (optional)
  • Gear and bait used
  • Conditions snapshot (tide, weather, moon)
  • Personal notes

4. Fishing Conditions

  • Current tide phase and schedule
  • Weather forecast (temperature, wind)
  • Moon phase
  • Fishing rating (Poor/Fair/Good/Excellent)
  • Best time windows for target species

5. Fishing Intelligence

AI-powered recommendations:

  • Best times to fish
  • Recommended tide phases
  • Gear suggestions
  • Bait recommendations
  • Location-specific tips

6. Catch Camera & Social Sharing

  • Specialized fishing camera with:
    • Multiple aspect ratios (1:1, 4:5, 16:9)
    • Rule of thirds grid overlay
    • Fishing Mode (enhanced clarity for scales/fins)
  • Branded photo templates:
    • Minimal (corner watermark)
    • Bottom Strip (gradient with fish info)
    • Full Card (bordered with caption)
  • Automatic caption generation (bilingual)
  • One-tap sharing to social media

7. Education Center

Articles on:

  • Fishing techniques
  • Tides and weather understanding
  • Safety guidelines
  • Gear and equipment
  • Conservation best practices

Filtered by skill level (Beginner/Intermediate/Advanced)

8. Shops & Charters

Directory of GCC fishing services:

  • Tackle shops
  • Bait shops
  • Boat charters
  • Contact info (phone, WhatsApp)
  • Opening hours

💰 Monetization: Free vs Pro

Free Plan

Limits:

  • 25 fish identifications per month
  • Up to 50 logged catches
  • Basic fish profiles
  • Simplified conditions view
  • Basic watermark on photos

Samakati Pro

Benefits:

  • Unlimited fish identifications
  • Unlimited logged catches
  • ✅ Extended fish profiles with detailed information
  • ✅ Advanced conditions & fishing intelligence
  • ✅ Catch analytics & insights
  • ✅ Premium photo templates
  • ✅ Priority support

🔌 API Integration Points

All services are currently MOCKED for MVP. Below are the integration points for production:

1. Fish Identification API

File: lib/data/services/fish_identification_service.dart

// TODO: Replace mock with real AI API
POST /api/v1/fish/identify
Content-Type: multipart/form-data

Parameters:
- image: File
- locale: String (en|ar)
- country_code: String

Response:
{
  "predictions": [
    {
      "fish_id": "fish_001",
      "name_en": "Orange-spotted Grouper",
      "name_ar": "هامور برتقالي",
      "confidence": 0.87
    }
  ]
}

Recommended Providers:

  • Custom TensorFlow Lite / PyTorch Mobile model
  • Google Cloud Vision API
  • AWS Rekognition Custom Labels

2. Tides API

File: lib/data/services/fishing_advisor_service.dart

// TODO: Integrate real tide data
GET https://www.worldtides.info/api/v3
Parameters:
- lat: double
- lon: double
- heights: true
- key: API_KEY

Recommended Providers:

  • WorldTides API
  • NOAA Tides & Currents API
  • Tide Times API

3. Weather API

// TODO: Integrate weather service
GET https://api.openweathermap.org/data/2.5/weather
Parameters:
- lat: double
- lon: double
- appid: API_KEY

Recommended Providers:

  • OpenWeatherMap
  • WeatherAPI
  • Visual Crossing Weather

4. Shops & Services Backend

// TODO: Backend for shops, charters, and user sync
GET /api/v1/shops
GET /api/v1/fish-species
POST /api/v1/catches (cloud sync)

5. Subscription/Billing

File: lib/data/repositories/subscription_repository.dart

// TODO: Integrate in-app purchases
// iOS: StoreKit via in_app_purchase
// Android: Google Play Billing
// Alternative: Stripe mobile SDK

📦 Data Models

Core Entities

  1. User - User profile with country, language, subscription status
  2. FishSpecies - Complete fish species data (bilingual)
  3. CatchRecord - User's catch logs with photos and conditions
  4. FishPrediction - AI identification results
  5. ConditionsSnapshot - Tides, weather, moon phase at a point in time
  6. FishingAdvice - AI-generated fishing recommendations
  7. Spot - User-saved fishing locations
  8. Article - Educational content (bilingual)
  9. Shop - Tackle shop or charter service
  10. Subscription - User subscription/plan info
  11. ShareTemplate - Photo branding templates

All models use Hive for local storage with type adapters.


🚀 Getting Started

Prerequisites

  • Flutter SDK 3.0+
  • Dart SDK 3.0+
  • Android Studio / Xcode
  • CocoaPods (for iOS)

Installation

  1. Clone the repository:

    cd fish-ai
  2. Install dependencies:

    flutter pub get
  3. Generate Hive adapters:

    flutter pub run build_runner build --delete-conflicting-outputs
  4. Add fonts: Download and place the following fonts in assets/fonts/:

    • Poppins (Regular, Medium, SemiBold, Bold)
    • Cairo (Regular, Medium, SemiBold, Bold)
  5. Add logo: Place app logo at assets/logo/samakati_logo.png

  6. Run the app:

    flutter run

📱 Screens & Navigation

Route Structure (GoRouter)

Route Screen Description
/ SplashScreen App splash with logo
/onboarding OnboardingScreen Welcome slides + setup
/home HomeScreen Main dashboard
/fish-identification FishIdentificationScreen Camera/gallery picker
/fish-result FishResultScreen ID results with predictions
/fish-profile/:id FishProfileScreen Species details
/catches CatchListScreen User's catch history
/catch/:id CatchDetailScreen Single catch details
/catch-form CatchFormScreen Log new catch
/conditions ConditionsScreen Tides & weather
/articles ArticlesScreen Educational content
/article/:id ArticleDetailScreen Article reader
/shops ShopsScreen Shops & charters directory
/shop/:id ShopDetailScreen Shop details
/subscription SubscriptionScreen Free vs Pro comparison
/catch-camera CatchCameraScreen Fishing camera
/photo-editor PhotoEditorScreen Template & branding
/settings SettingsScreen App settings

🧪 Testing

Mock Data

For MVP, all data is mocked:

  • Fish species database (8 common GCC species)
  • Fishing advice and time windows
  • Tides and weather conditions
  • Articles and shops

This allows full UI/UX testing without backend dependencies.

Running Tests

flutter test

🌐 GCC Region Support

The app is optimized for Gulf Cooperation Council countries:

  • 🇰🇼 Kuwait (KW)
  • 🇸🇦 Saudi Arabia (SA)
  • 🇦🇪 United Arab Emirates (AE)
  • 🇶🇦 Qatar (QA)
  • 🇧🇭 Bahrain (BH)
  • 🇴🇲 Oman (OM)

Fish species, local names, and fishing patterns are specific to Arabian Gulf, Red Sea, and Arabian Sea waters.


📄 License

Proprietary - All rights reserved


👥 Support

For questions, feedback, or support:


🗺️ Roadmap

Phase 1: MVP (Current)

  • ✅ Core UI/UX with bilingual support
  • ✅ Mock fish identification
  • ✅ Local catch logging
  • ✅ Mock conditions and advice
  • ✅ Educational content
  • ✅ Photo branding and sharing

Phase 2: Backend Integration

  • Real AI fish identification API
  • Live tide and weather data
  • Cloud sync for catches
  • User authentication
  • In-app purchases (Pro subscription)

Phase 3: Advanced Features

  • Interactive fishing maps
  • Community features (social feed)
  • Fishing tournaments and challenges
  • Advanced analytics and insights
  • Offline mode enhancements

Phase 4: Expansion

  • Expanded species database
  • More GCC languages (Urdu, Filipino)
  • Tackle shop marketplace
  • Charter booking integration
  • Fishing guides and tutorials (video)

Built with ❤️ for GCC Fishermen

Samakati | سمكتي - Your Smart Fishing Companion

About

fish ai

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages