You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
🏦 NeoBank — Premium Digital Banking & Personal Finance App
A showcase-only Flutter project built with FlutterFlow & Firebase, tailored for the Tunisian market (TND).
⚠️SOURCE CODE IS NOT AVAILABLE — This repository is a portfolio showcase of the application's architecture, design, and advanced business logic. The full source code is intentionally withheld. All screenshots and documentation are provided for demonstration purposes only.
🔐 For Hiring Managers & Recruiters: If you are interested in evaluating the implementation in more detail, I would be happy to share the full source code privately upon request.
📸 App Gallery
Dashboard — Dark Mode
Dashboard — Light Mode
Card Management
Sign In
Sign Up
Settings & KYC
Budget Limits
Add Card (OCR)
Card Parameters
New Transaction
Transaction Details + Map
Card Spending Analytics
Investment Portfolio
Portfolio Details
Bitcoin Live Tracker
🚀 Key Features at a Glance
Feature
Technology
Description
💳 On-Device Card OCR
Google ML Kit
Scan credit cards via camera, no API needed.
🤖 AI Financial Coach
Gemini 2.5 + Groq Llama 3.3
Context-aware French-language budget advisory.
🧾 Receipt OCR Scanner
OCR.space API
Auto-extract amounts and categories from paper receipts.
🔒 Biometrics + 2FA
local_auth + Twilio SMS
FaceID / Fingerprint login with OTP verification.
🗺️ Merchant Maps
Google Maps Embed
Interactive transaction location maps inside the app.
🚨 Fraud Detection
Custom Heuristic Engine
Risk scoring by amount, keywords, and transaction time.
💸 Spare Change Savings
Custom Math Logic
Rounds spending up to save micro-amounts automatically.
⚖️ Group Split Bills
Geoapify + Cloudinary
Geolocated shared expenses with media upload.
📈 Bitcoin Tracker
CoinGecko + TradingView
Live BTC prices with embedded candlestick charts.
📄 PDF Reports
pdf + printing (Flutter)
Exportable A4 budget and card statement reports.
💰 Konnect Payments
Konnect Gateway API
Recharge cards with e-DINAR (Tunisian market).
🔑 KYC Onboarding
Firebase Firestore
National ID card capture, Base64 encoding, and pending review flow.
🏗️ Technical Architecture & Ecosystem
NeoBank uses a hybrid architecture — combining on-device edge computing with Firebase cloud services and a constellation of external APIs.
graph TD
A[Flutter App Frontend] -->|State Management and Navigation| B(FlutterFlow Core Engine)
A -->|On-Device OCR and Biometrics| C[ML Kit and Local Auth SDK]
A -->|Authentication and Realtime DB| D[Firebase Suite]
A -->|Financial Advisory and Processing| E[External API Orchestrator]
D -->|User Auth Tokens| D1[Firebase Auth]
D -->|13 Collections and Security Rules| D2[Cloud Firestore]
D -->|Media Storage Buckets| D3[Firebase Storage]
E -->|Llama 3.3 70B Financial Advisory| E1[Groq API]
E -->|Gemini 2.5 Flash Categorization| E2[Gemini API]
E -->|French Receipt OCR Parsing| E3[OCR.space API]
E -->|TND Payment Gateway| E4[Konnect API]
E -->|Address Geocoding| E5[Geoapify API]
E -->|Image Hosting| E6[Cloudinary]
E -->|Realtime Crypto Market| E7[CoinGecko and TradingView]
E -->|OTP and Email| E8[Twilio + EmailJS]
Loading
Tech Stack Summary
Layer
Technology
Version / Details
UI Framework
Flutter + FlutterFlow
Stable SDK >=3.0.0 <4.0.0
State Management
FlutterFlow App State
Reactive page-level state
Backend Database
Cloud Firestore
NoSQL Document Model
Authentication
Firebase Auth
Email/Password + Biometrics
On-Device ML
Google ML Kit
google_mlkit_text_recognition
Charts
fl_chart
Line, bar, and pie charts
PDF Generation
pdf + printing
A4 report export
Navigation
GoRouter
Declarative routing
🗄️ Database Architecture — Full Firestore Schema (13 Collections)
NeoBank's data model is designed around 13 Firestore collections with document references linking related entities.
Module 1 · 💼 Wallet & Income Management (gestion_wallet)
Tracks global balance sheets, cumulative incomes/expenses, and enables physical invoice scanning.
Dashboard — Dark
Dashboard — Light
Advanced Business Logic:
Receipt OCR Pipeline: Encodes camera frame as Base64 → sends to OCR.space API → raw text parsed by extractMontant and extractCategorie custom Dart functions, identifying amounts and merchant categories from French receipt layouts (Carrefour, MG, Aziza, Monoprix, Clinique, Taxi).
Cost-Free Image Storage: Receipt photos are encoded to Base64 using imageToBase64 and stored directly in the reculmage Firestore field, avoiding Firebase Storage costs.
Budget Threshold Alerts: Four boolean flags (notif50Shown–notif100Shown) on the Wallet document trigger in-app notifications at 50%, 70%, 90%, and 100% consumption milestones.
Module 2 · 📊 Budgeting & AI Financial Advisory (gestion_budget)
Sets spending caps per category and provides AI-driven financial coaching using LLMs.
Advanced Business Logic:
Llama 3.3 70B Budget Advisor (GeminiAnalyseCall): Sends budget category, target, days remaining, and current spend to Groq. Returns a structured French-language JSON with alerts, savings actions, and recommendations tailored to Tunisian spending (TND).
Gemini Pro Dart Action (analyserBudgetIA): A native Dart custom action calling gemini-pro:generateContent with a financial advisory prompt — returns a styled TND-context budget assessment.
Structured PDF Export (exportBudgetPDF): Generates A4 reports with category progress bars, color-coded risk indicators (green/orange/red), and spent/remaining ratios using the Flutter pdf and printing packages.
Manages all user cards with security controls, spending limits, transaction maps, and AI-powered fraud prevention.
My Cards
Add Card (OCR)
Card Limits
New Transaction
Tx Details + Map
Analytics
Advanced Business Logic:
On-Device ML Card Scanner (extract12DigitCard): Activates device camera → runs google_mlkit_text_recognition Latin model entirely on-device. Corrects OCR errors ('O'→'0', 'l'→'1'), then applies regex to extract 12–16 digit sequences. Auto-fills card form fields in real time.
Luhn Algorithm Generator (generateCardNumber): Produces mathematically valid Visa card numbers using the ISO/IEC 7812 Luhn (mod-10) algorithm.
Konnect Payment Gateway (InitPaymentCall): POST to Konnect API — returns a payUrl redirect for card top-ups in TND (e-DINAR / bank card).
Geocoded Merchant Map (getMapUrl): Resolves merchant names to coordinates. Wraps an <iframe> in a custom HTML string bypassing WebView sandbox restrictions.
Heuristic Fraud Detection (isTransactionFraudulent): Scores transactions by amount, merchant keywords, and hour of execution — flags if risk score exceeds 75.
Card Statement PDF (generateStatementPDF): Pulls Firestore transaction records and builds formatted A4 credit/debit statements.
Module 4 · 👥 Shared Expense Groups (gestion_group)
Group wallets for split bills — roommates, trips, events.
Advanced Business Logic:
Geoapify Geocoding (SearchPlaceGeoapifyCall): GET to https://api.geoapify.com/v1/geocode/search — returns latitude/longitude coordinates stored on groupes documents, enabling geolocated expense tagging.
Cloudinary Media Upload (UploadImageToCloudinaryCall): POST group avatars and receipt images to Cloudinary using unsigned preset. Stores returned URL in Firestore.
Module 5 · 📈 Investment & Live Crypto Tracker (gestion_invest)
Tracks asset portfolios, computes growth, and shows live Bitcoin data.
Investment Details
Portfolio Balance
Bitcoin Tracker
Advanced Business Logic:
TradingView Live Charts: Flutter WebView embeds TradingView's interactive candlestick widget for real-time crypto visualization.
CoinGecko BTC Tracker (GetBitcoinPriceCall): GET to https://api.coingecko.com/api/v3/simple/price — returns BTC/USD rate and 24h change. calculateBTC applies conversion rates.
Monthly Savings Recommendation (calculRecommendationMensuelle): (montantCible - montantActuel) / monthsRemaining — recommends monthly deposit to hit the target goal on time.
🔒 Security, Authentication & KYC
Sign In
Sign Up
Settings
Advanced Business Logic:
Biometric Auth (local_auth): Toggle in General Settings binds FaceID or Fingerprint scanner to session authentication.
Twilio SMS 2FA (SendTwilioSMSCall): generateOTP produces a random 4-digit code → POST to Twilio → user enters OTP to verify identity.
KYC Identity Card Capture: Camera captures user's CIN → serialized with fileToBase64Image → stored in cin_image_url with kyc_status: "pending" until admin review.
EmailJS Onboarding (SendWelcomeEmailCall): POST to EmailJS API → sends a personalized welcome email upon registration.
💻 Core Business Logic — Key Algorithms
1 · Luhn Algorithm — Valid Card Number Generation
// Generates a Visa-prefix (4) card number passing the Luhn mod-10 checkfinal random = math.Random();
String digits ="4"; // Visa prefixfor (int i =0; i <10; i++) digits += random.nextInt(10).toString();
int sum =0;
bool alternate =true;
for (int i = digits.length -1; i >=0; i--) {
int n =int.parse(digits[i]);
if (alternate) { n *=2; if (n >9) n = (n %10) +1; }
sum += n;
alternate =!alternate;
}
int checkDigit = (10- (sum %10)) %10;
String full = digits + checkDigit.toString();
// Returns "XXXX XXXX XXXX"return"${full.substring(0,4)} ${full.substring(4,8)} ${full.substring(8,12)}";
🔒 This is a Portfolio Showcase — Source Code is Intentionally Not Included
This GitHub repository contains only the architecture documentation, database schemas, business logic descriptions, and UI screenshots of the NeoBank application.
The full Flutter/FlutterFlow source code is intentionally withheld. This project represents personal and academic work and is shared here exclusively to demonstrate technical design, architectural decisions, and advanced implementation capabilities.
If you are interested in discussing the project or exploring collaboration, feel free to reach out via GitHub.
Built with ❤️ for the Tunisian fintech ecosystem
About
Premium Flutter & Firebase digital banking app — AI budgeting, on-device ML card OCR, fraud detection, Bitcoin tracker & split-bill groups. (Showcase only)