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.
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
- 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
Clean Architecture with:
- Domain Layer: Entities and business logic
- Data Layer: Repositories, services, and data models
- Presentation Layer: Screens, widgets, and state management
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/
- App Name: Samakati | سمكتي
- Tagline (EN): "Your smart fishing companion in the GCC"
- Tagline (AR): "رفيقك الذكي للصيد في الخليج"
| 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 |
- Latin: Poppins (Google Fonts)
- Arabic: Cairo (Google Fonts)
- Full RTL support for Arabic
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.
lib/l10n/intl_en.arb- English translationslib/l10n/intl_ar.arb- Arabic translations
- Take photo with Catch Camera or choose from gallery
- AI-powered fish species identification
- Multiple predictions with confidence scores
- Instant access to species 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
- Photo-based catch records
- Species, location, date/time
- Length and weight (optional)
- Gear and bait used
- Conditions snapshot (tide, weather, moon)
- Personal notes
- Current tide phase and schedule
- Weather forecast (temperature, wind)
- Moon phase
- Fishing rating (Poor/Fair/Good/Excellent)
- Best time windows for target species
AI-powered recommendations:
- Best times to fish
- Recommended tide phases
- Gear suggestions
- Bait recommendations
- Location-specific tips
- 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
Articles on:
- Fishing techniques
- Tides and weather understanding
- Safety guidelines
- Gear and equipment
- Conservation best practices
Filtered by skill level (Beginner/Intermediate/Advanced)
Directory of GCC fishing services:
- Tackle shops
- Bait shops
- Boat charters
- Contact info (phone, WhatsApp)
- Opening hours
Limits:
- 25 fish identifications per month
- Up to 50 logged catches
- Basic fish profiles
- Simplified conditions view
- Basic watermark on photos
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
All services are currently MOCKED for MVP. Below are the integration points for production:
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
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_KEYRecommended Providers:
- WorldTides API
- NOAA Tides & Currents API
- Tide Times API
// TODO: Integrate weather service
GET https://api.openweathermap.org/data/2.5/weather
Parameters:
- lat: double
- lon: double
- appid: API_KEYRecommended Providers:
- OpenWeatherMap
- WeatherAPI
- Visual Crossing Weather
// TODO: Backend for shops, charters, and user sync
GET /api/v1/shops
GET /api/v1/fish-species
POST /api/v1/catches (cloud sync)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- User - User profile with country, language, subscription status
- FishSpecies - Complete fish species data (bilingual)
- CatchRecord - User's catch logs with photos and conditions
- FishPrediction - AI identification results
- ConditionsSnapshot - Tides, weather, moon phase at a point in time
- FishingAdvice - AI-generated fishing recommendations
- Spot - User-saved fishing locations
- Article - Educational content (bilingual)
- Shop - Tackle shop or charter service
- Subscription - User subscription/plan info
- ShareTemplate - Photo branding templates
All models use Hive for local storage with type adapters.
- Flutter SDK 3.0+
- Dart SDK 3.0+
- Android Studio / Xcode
- CocoaPods (for iOS)
-
Clone the repository:
cd fish-ai -
Install dependencies:
flutter pub get
-
Generate Hive adapters:
flutter pub run build_runner build --delete-conflicting-outputs
-
Add fonts: Download and place the following fonts in
assets/fonts/:- Poppins (Regular, Medium, SemiBold, Bold)
- Cairo (Regular, Medium, SemiBold, Bold)
-
Add logo: Place app logo at
assets/logo/samakati_logo.png -
Run the app:
flutter run
| 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 |
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.
flutter testThe 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.
Proprietary - All rights reserved
For questions, feedback, or support:
- Email: support@samakati.app
- Website: https://samakati.app
- ✅ Core UI/UX with bilingual support
- ✅ Mock fish identification
- ✅ Local catch logging
- ✅ Mock conditions and advice
- ✅ Educational content
- ✅ Photo branding and sharing
- Real AI fish identification API
- Live tide and weather data
- Cloud sync for catches
- User authentication
- In-app purchases (Pro subscription)
- Interactive fishing maps
- Community features (social feed)
- Fishing tournaments and challenges
- Advanced analytics and insights
- Offline mode enhancements
- 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