Streamline lead management, agent tracking, and loan processing — all from a single beautifully crafted Flutter application.
Features • Screenshots • Tech Stack • Architecture • Getting Started • Roadmap
LoanConnect is a production-ready, full-stack TeleCRM (Tele-Calling CRM) mobile and web application purpose-built for banks, NBFCs, DSAs, and lending agencies that operate distributed sales teams. It empowers Admins to upload leads in bulk, assign them to tele-calling agents, track them live on a map, and analyze conversion funnels — while giving Employees a frictionless, beautifully animated interface to call customers, log outcomes, and submit loan applications across 7 different loan products.
Built with a clean four-layer architecture (Presentation → Business Logic → Data → Core), real-time Firestore sync, and a modern indigo-purple Material 3 design language inspired by today's best fintech apps.
| Feature | Description |
|---|---|
| 📊 Smart Dashboard | Real-time KPIs — total leads, assigned/unassigned, calls today, conversion rate, active employees |
| 👥 Employee Management | Create, edit, activate/deactivate, and delete tele-calling agents with role-based access |
| 📤 Bulk Contact Upload | Import thousands of leads from CSV / Excel in a single click |
| 🗂️ Lead Assignment | Auto/manual lead distribution to employees with full audit trail |
| 🗺️ Live GPS Tracking | View every field/remote employee on a Google Map in real time |
| 📈 Analytics & Charts | Beautiful charts powered by fl_chart & syncfusion_flutter_charts |
| 📂 Data Export | Export contacts, calls, and loan applications to Excel, CSV, and PDF |
| 🌙 Dark Mode | Full light/dark theme support across every screen |
| Feature | Description |
|---|---|
| 🏠 Personal Dashboard | Daily targets, call stats, and assigned leads at a glance |
| 📞 Direct Calling | One-tap native dialer via flutter_phone_direct_caller |
| 🔄 9-Status Call Logging | Interested · Not Interested · No Answer · Callback · Wrong Number · Rejected · Line Busy · Not Reachable · Follow Up |
| 📝 7 Dynamic Loan Forms | Tailored forms for every loan product (see below) |
| 👤 Customer 360° | Full customer history, previous calls, and loan applications in one screen |
| 📍 Background Location | Privacy-friendly periodic check-ins via workmanager |
| 🏠 Home | 👤 Personal | 💼 Business | 🎓 Education | 🚗 Vehicle | 🪙 Gold | 🌾 Agriculture |
|---|
Each loan type has its own dedicated, validated, multi-step form with conditional fields, file uploads (KYC documents), and direct Firestore submission.
- Framework: Flutter 3.2+ — single codebase, six platforms
- Language: Dart 3.0+
- State Management:
flutter_bloc(BLoC + Cubit) ·equatable·get_it(DI) ·provider - UI / UX:
google_fonts(Poppins) ·animate_do·shimmer·lottie·flutter_svg·cached_network_image - Charts:
fl_chart·syncfusion_flutter_charts - Date Picker:
syncfusion_flutter_datepicker·intl
- Auth: Firebase Authentication (Email/Password)
- Database: Cloud Firestore (real-time, offline-first)
- Storage: Firebase Storage (KYC documents, profile pictures)
- Maps & Location:
google_maps_flutter·geolocator·location - Telephony:
flutter_phone_direct_caller·url_launcher - File I/O:
file_picker·excel·csv·pdf·path_provider·open_file·share_plus - Background:
workmanager - Permissions:
permission_handler - Networking:
dio
LoanConnect follows a clean, layered architecture that keeps UI, business logic, and data sources strictly decoupled — making the app testable, scalable, and easy to onboard new contributors to.
lib/
├── core/ ← Theme, colors, strings, constants, validators
│ ├── constants/ ← App-wide constants (routes, colors, strings)
│ ├── theme/ ← Light & dark Material 3 themes
│ ├── utils/ ← Validators, formatters, permission helpers
│ └── widgets/ ← Reusable UI primitives (buttons, fields, loaders)
│
├── data/ ← Models, repositories & remote services
│ ├── models/ ← UserModel · ContactModel · CallModel · LoanApplicationModel · LocationModel
│ ├── repositories/ ← AuthRepository · ContactRepository · LocationRepository
│ └── services/ ← FirebaseService · LocationService · ExportService
│
├── business_logic/ ← BLoC & Cubit state machines
│ ├── blocs/ ← AuthBloc · ContactBloc
│ └── cubits/ ← ThemeCubit (dark/light)
│
├── presentation/ ← UI layer (screens & widgets)
│ ├── auth/ ← Splash · Login · Forgot Password
│ ├── admin/ ← Dashboard · Employees · Contacts · Tracking · Analytics
│ ├── employee/ ← Dashboard · My Contacts · Call · 7 Loan Forms
│ └── common/ ← Profile · Settings
│
├── firebase_options.dart ← Auto-generated Firebase config
└── main.dart ← App entry point + dependency injection
- Repository Pattern — UI never talks to Firestore directly
- Dependency Injection via
RepositoryProvider&get_it - Reactive Streams — Firestore snapshots → BLoC → UI rebuilds automatically
- Route Management — centralized named routes in
AppRouteswith dynamic arg handling - Theming — single source of truth in
AppColors+ Material 3ColorScheme
| Android | iOS | Web | macOS | Linux | Windows |
|---|---|---|---|---|---|
| ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Make sure the following are installed and configured:
- Flutter SDK 3.2.0+
- Dart SDK 3.0+
- Firebase CLI & FlutterFire CLI
- A configured Google Maps API Key
- Android Studio / Xcode / VS Code with Flutter plugin
git clone https://github.com/V1shal-dev/LoanConnect.git
cd LoanConnectflutter pub getThis project ships with a Firebase configuration. To connect your own Firebase project:
# Install FlutterFire CLI (one-time)
dart pub global activate flutterfire_cli
# Re-generate firebase_options.dart for your project
flutterfire configureThen, in your Firebase Console:
- Enable Authentication → Email/Password
- Create a Cloud Firestore database (start in production mode)
- Enable Firebase Storage
- Create the following collections:
users,contacts,calls,loan_applications,locations
- Android: add to
android/app/src/main/AndroidManifest.xml - iOS: add to
ios/Runner/AppDelegate.swift
# List available devices
flutter devices
# Run on the connected device / emulator
flutter run
# Or target a specific platform
flutter run -d chrome # Web
flutter run -d macos # macOS
flutter run -d windows # Windowsflutter build apk --release # Android APK
flutter build appbundle --release # Android AAB (Play Store)
flutter build ios --release # iOS
flutter build web --release # Web
flutter build macos --release # macOS
flutter build windows --release # WindowsLoanConnect uses a meticulously crafted, fintech-inspired design language:
| Token | Value |
|---|---|
| Primary | #6366F1 Indigo |
| Secondary | #8B5CF6 Purple |
| Accent | #06B6D4 Cyan |
| Success | #10B981 Emerald |
| Warning | #F59E0B Amber |
| Error | #EF4444 Red |
| Font Family | Poppins (400/500/600/700) |
| Theme | Material 3 (Light + Dark) |
Each of the 9 call statuses and 7 loan types has its own dedicated semantic color for instant visual recognition.
loanconnect/
├── android/ ← Android native shell
├── ios/ ← iOS native shell
├── web/ ← PWA / web shell
├── macos/ linux/ windows/ ← Desktop shells
├── assets/
│ ├── fonts/ ← Poppins family
│ ├── images/ ← App icon & illustrations
│ └── animations/ ← Lottie files
├── lib/ ← Dart source (see architecture above)
├── test/ ← Widget & unit tests
├── pubspec.yaml ← Dependencies & app metadata
├── firebase.json ← FlutterFire config
└── README.md ← You are here
flutter test # Run all tests
flutter test --coverage # Generate coverage report
flutter analyze # Static analysis- 🔔 Push Notifications (FCM) for callback reminders & lead assignments
- 🌐 Multi-language support (i18n: English · Hindi · Marathi · Tamil)
- 🤖 AI-powered Lead Scoring using customer engagement metrics
- 📧 WhatsApp & Email integration for omnichannel outreach
- 🧾 In-app loan EMI calculator for instant customer quotes
- 🔐 Biometric authentication (fingerprint / Face ID)
- 📊 Advanced funnel analytics & cohort reports
- 🧑💼 Manager / Team-Lead role (3-tier RBAC)
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
# 1. Fork the repository
# 2. Create your feature branch
git checkout -b feature/AmazingFeature
# 3. Commit your changes (follow conventional commits)
git commit -m "feat: add AmazingFeature"
# 4. Push to the branch
git push origin feature/AmazingFeature
# 5. Open a Pull RequestPlease make sure your PR:
- Passes
flutter analyzewith zero warnings - Includes relevant widget/unit tests
- Follows the existing folder structure & naming conventions
Distributed under the MIT License. See LICENSE for more information.
Copyright (c) 2025 LoanConnect
Built with ❤️ by a Full-Stack Engineer
- 🐙 GitHub: @V1shal-dev
- 📧 Email: [email protected]
- 💼 LinkedIn: https://www.linkedin.com/in/vishal-patil-871744318
- Flutter Team — for an incredible cross-platform toolkit
- Firebase — for the serverless backbone
- Material Design 3 — for the design foundation
- Syncfusion — for industry-grade charts & date pickers
- Every open-source maintainer of the 30+ packages powering this app