패키지, 저장소 및 앱 카테고리 검색

GitHub 저장소zahra01-m/zahra-ai-chatbot

zahra-ai-chatbot

Groq 및 Gemini 통합을 지원하는 크로스 플랫폼 Flutter AI 챗봇, Firebase 인증 및 실시간 스트리밍 기능 포함

zahra-ai-chatbot 프로젝트 이미지
스타
1
포크
0
최근 푸시(UTC)
2026. 7. 2.
프로젝트 상태
활성

원본 README

아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.

✨ Zahra AI — Cross-Platform Flutter AI Chat Assistant

A production-grade, multi-model AI chatbot built with Flutter, Firebase, and Groq/Gemini APIs — featuring real-time streaming responses, persona switching, file intelligence, and full authentication.

Flutter Dart Firebase Riverpod Groq License Platform

Features • Architecture • Screenshots • Getting Started • Tech Stack • Roadmap • Contributing


📖 About The Project

Zahra AI is a full-stack, cross-platform AI chat assistant built with Flutter and Clean Architecture principles. It integrates multiple large language model providers (Groq — Llama 3.3 70B, Llama 3.1 8B, Mixtral, Qwen 2.5 and Google Gemini Vision) into a single, polished chat experience with real-time token streaming, persistent chat history via Cloud Firestore, and secure authentication through Firebase Auth (Email/Password + Google Sign-In).

Unlike a typical "wrapper" chatbot demo, this project is structured the way production Flutter apps are built: feature-first folder structure, Riverpod for reactive state management, a dedicated service layer for API/network calls, and platform-ready builds for Android, iOS, Web, Windows, macOS, and Linux from a single codebase.

Built as a portfolio-grade demonstration of scalable Flutter architecture, multi-LLM integration, and real-time streaming UX.


🚀 Key Features

Category Feature
🔐 Authentication Firebase Auth with Email/Password + Google Sign-In, persistent session handling
⚡ Real-Time Streaming Token-by-token AI response streaming with an instant Stop Generation control
🧠 Multi-Model AI Engine Hot-swap between Groq models (llama-3.3-70b-versatile, llama-3.1-8b-instant, mixtral-8x7b, qwen-2.5-32b) and Gemini Vision
🎭 AI Personas Switchable personality modes — Helpful, Creative, Technical, Poetic — each with tuned system prompts
💬 Persistent Chat History Multi-session chat storage and retrieval via Cloud Firestore, with live search across past conversations
📎 File Intelligence Upload and parse images, PDFs, and DOCX files directly into the conversation context
🎙️ Voice Input Native speech-to-text dictation for hands-free prompting
📤 Export & Share Export any conversation to .txt and share instantly via WhatsApp, Gmail, Bluetooth, etc.
🌗 Adaptive Theming Fully reactive Light/Dark theme toggle powered by Riverpod StateNotifier
📝 Markdown Rendering Rich Markdown rendering for AI responses (code blocks, lists, headings)
👤 Profile Management Dedicated profile screen for account and session management
🌍 Cross-Platform Single codebase deployed to Android, iOS, Web, Windows, macOS, and Linux

🏗️ Architecture Overview

This project follows a feature-first, Clean Architecture-inspired structure, separating UI, state, and data concerns for scalability and testability.

lib/
├── core/                     # App-wide config, theming, constants
│   ├── config.dart           # Environment & API configuration (.env driven)
│   ├── theme.dart             # Light/Dark ThemeData definitions
│   └── theme_provider.dart    # Riverpod ThemeMode state notifier
│
├── features/                 # Feature-first modules
│   ├── auth/
│   │   ├── providers/         # Auth state (Riverpod StreamProvider on FirebaseAuth)
│   │   └── views/             # Login / Sign-up screens
│   ├── chat/
│   │   ├── providers/         # Chat + persona state notifiers, streaming logic
│   │   ├── views/             # Main chat UI
│   │   └── widgets/           # Message bubble & reusable chat widgets
│   └── profile/
│       └── views/             # User profile screen
│
├── shared/
│   ├── models/                 # Msg, ChatSession — Firestore-serializable data models
│   └── services/               # AIService (Groq/Gemini), FirebaseService (Auth/Firestore/Storage)
│
├── firebase_options.dart       # Auto-generated FlutterFire config
└── main.dart                   # App entry point & provider scope

Data flow at a glance:

User Input → ChatNotifier (Riverpod) → AIService → Groq/Gemini API
                                              ↓
                                     Streamed tokens → UI (live)
                                              ↓
                                  FirebaseService → Cloud Firestore (persisted)

Why this architecture?

  • Separation of concerns — UI never talks to Firebase or the AI API directly; everything routes through providers and services.
  • Testability — Services and notifiers are decoupled from widgets, making unit testing straightforward.
  • Scalability — Adding a new LLM provider or feature module doesn't require touching unrelated code.

📱 Screenshots

Login Sign Up Chat (Streaming)
Chat History & Search Attach Files Export & Share

📸 Replace these with your latest build screenshots any time — just drop new images into /screenshots using the same filenames, or update the paths above.


🧰 Tech Stack

Frontend / Framework

State Management

Backend / Cloud

AI / LLM Providers

File & Media Handling

  • file_picker · image_picker · syncfusion_flutter_pdf · archive (DOCX/ZIP parsing) · speech_to_text · share_plus

Utilities

  • flutter_dotenv (secure env config) · flutter_markdown · connectivity_plus · path_provider · uuid · intl

🖥️ Supported Platforms

Android iOS Web Windows macOS Linux
✅ ✅ ✅ ✅ ✅ ✅

⚙️ Getting Started

Prerequisites
1. Clone the repository
git clone https://github.com/zahra01-m/zahra-ai-chatbot.git
cd zahra-ai-chatbot
2. Install dependencies
flutter pub get
3. Configure environment variables

Create a .env file in the project root (this file is git-ignored and never committed):

GROQ_KEY=your_groq_api_key_here
GEMINI_KEY=your_gemini_api_key_here
GOOGLE_CLIENT_ID=your_google_oauth_client_id_here
4. Connect Firebase

Install the FlutterFire CLI and run:

dart pub global activate flutterfire_cli
flutterfire configure

This regenerates lib/firebase_options.dart for your own Firebase project.

5. Run the app
flutter run

To target a specific platform:

flutter run -d chrome      # Web
flutter run -d windows     # Windows
flutter run -d macos       # macOS
6. Build a release
flutter build apk --release        # Android
flutter build ios --release        # iOS
flutter build web --release        # Web

🔒 Security Notes

  • API keys are loaded via flutter_dotenv and never hard-coded in source.
  • .env is included in .gitignore — always double-check it isn't tracked before pushing.
  • Firebase security rules should restrict Firestore reads/writes to authenticated users only (see firestore.rules if included, or configure via the Firebase Console).

🗺️ Roadmap

  • [ ] Group/shared chat sessions
  • [ ] Offline response caching
  • [ ] In-app model usage analytics dashboard
  • [ ] Custom persona builder (user-defined system prompts)
  • [ ] Push notifications for async AI replies

🤝 Contributing

Contributions, issues, and feature requests are welcome!

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Please open an issue first for major changes to discuss what you'd like to change.


📄 License

Distributed under the MIT License. See LICENSE for more information.


👩‍💻 Author

Zahra Mushtaq Flutter Developer · BS Computer Science, COMSATS University Islamabad

⭐ If you found this project useful, consider giving it a star!

Keywords: Flutter Developer Portfolio · Flutter AI Chatbot · Firebase Flutter App · Riverpod State Management · Groq API Integration · Cross-Platform Mobile App · Clean Architecture Flutter · LLM Chat Application · Flutter Firebase Authentication

ZAHRA_MUSHTAQ GitHub avatar
GitHub 작성자

ZAHRA_MUSHTAQ ↗

Flutter Developer | Dart · Firebase · BLoC · REST APIs | Full Stack Web Dev — PHP · MySQL · Bootstrap | AI Integration | Open to Remote Internships 🌍

@COMSATS University IslamabadVehari, Punjab, Pakistan공식 웹사이트 ↗
언어DartC++CMakeSwiftHTMLCKotlinObjective-C

분류

사용 중인 의존성

의존성 목록 26 개

프로젝트에 맞는 저장소를 선택하려면?

사용 목적에 따라 검색하고 개발 활동을 비교한 뒤 원본 저장소에서 요구 사항을 확인하세요.

  1. 이름, 작성자 또는 설명으로 검색하고 기술 주제로 범위를 좁힙니다.
  2. 스타, 포크, 최근 푸시를 함께 비교하세요. 스타는 관심의 지표이며 품질을 보장하지 않습니다.
  3. 사용하기 전에 GitHub에서 README, 라이선스, Issues를 확인하세요.

출처 및 관리

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗