{"id":22506023,"url":"https://github.com/panditsamik/quick-chat","last_synced_at":"2026-05-02T13:33:33.111Z","repository":{"id":218140266,"uuid":"612334577","full_name":"panditsamik/Quick-Chat","owner":"panditsamik","description":"Flutter-Firebase chat app with splash screen. Leveraging Firebase Cloud Firestore and Firebase authentication for database and security. Supports Google login and registration, text and emoji messaging.","archived":false,"fork":false,"pushed_at":"2024-10-24T22:04:30.000Z","size":135,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T23:31:03.750Z","etag":null,"topics":["cloudfirestore","firebase-auth","firebase-core","firebase-firestore","firebase-firestore-database","flutter"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/panditsamik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-10T17:58:34.000Z","updated_at":"2024-10-24T22:04:34.000Z","dependencies_parsed_at":"2024-01-20T00:28:31.589Z","dependency_job_id":"f0bc0807-2dee-474f-98a9-43dcbebf56e2","html_url":"https://github.com/panditsamik/Quick-Chat","commit_stats":null,"previous_names":["panditsamik/quick-chat"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/panditsamik/Quick-Chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panditsamik%2FQuick-Chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panditsamik%2FQuick-Chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panditsamik%2FQuick-Chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panditsamik%2FQuick-Chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/panditsamik","download_url":"https://codeload.github.com/panditsamik/Quick-Chat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panditsamik%2FQuick-Chat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32536577,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T12:25:33.646Z","status":"ssl_error","status_checked_at":"2026-05-02T12:24:51.733Z","response_time":132,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloudfirestore","firebase-auth","firebase-core","firebase-firestore","firebase-firestore-database","flutter"],"created_at":"2024-12-07T00:38:58.527Z","updated_at":"2026-05-02T13:33:33.072Z","avatar_url":"https://github.com/panditsamik.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Quick Chat\n## Description\n- A chat app made by Flutter and Firebase(Firebase Cloud Firestore) having beautiful splash screen.\n- Support login with google account, chat with any user, send text, emojis.\n- Firebase Cloud Firestore as well as the Firebase authentication package is used to equip the chat app with a cloud based NoSQL database and secure authentication methods.\n\n## Documentation and References\n### Animations\n\nFor further documentation:\n[Link](https://docs.flutter.dev/development/ui/animations/tutorial)\n\n\n```\nclass _WelcomeScreenState extends State\u003cWelcomeScreen\u003e\n    with SingleTickerProviderStateMixin {\n  get isLoaded =\u003e null;\n\n  late Animation\u003cdouble\u003e animation;\n  late AnimationController controller;\n\n  @override\n  void initState() {\n    // TODO: implement initState\n    super.initState();\n    controller =\n        AnimationController(duration: const Duration(seconds: 7), vsync: this);\n    animation = Tween\u003cdouble\u003e(begin: 60, end: 150).animate(controller)\n      ..addListener(() {\n        setState(() {\n          // The state that has changed here is the animation object’s value.\n        });\n      });\n    controller.forward();\n    animation.addStatusListener((status) {\n      if (status == AnimationStatus.completed) {\n        controller.reverse(from: 150);\n      } else if (status == AnimationStatus.dismissed) {\n        controller.forward();\n      }\n    });\n  }\n\n```\n\n```\n@override\n  void dispose() {\n    controller.dispose();\n    super.dispose();\n  }\n```\n\n## animated_text_kit 4.2.2\n[Link](https://pub.dev/packages/animated_text_kit)\n\n\nA flutter package which contains a collection of some cool and awesome text animations.\n## Installation:\n\n#### Use this package as a library\n#### Depend on it\n#### Run this command:\n#### With Flutter:\n\n```\nflutter pub add animated_text_kit\n```\n\n#### This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get):\n```\ndependencies:\n  animated_text_kit: ^4.2.2\n```\n\n#### Import it\n#### Now in your Dart code, you can use:\n\n```\nimport 'package:animated_text_kit/animated_text_kit.dart';\n```\n\n## firebase_core 2.7.1\n[Link](https://pub.dev/packages/firebase_core)\n\n\nA Flutter plugin to use the Firebase Core API, which enables connecting to multiple Firebase apps.\n## Installation:\n\n#### Use this package as a library\n#### Depend on it\n#### Run this command:\n#### With Flutter:\n\n```\nflutter pub add firebase_core\n```\n\n#### This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get):\n```\ndependencies:\n  firebase_core: ^2.7.1\n```\n\n#### Import it\n#### Now in your Dart code, you can use:\n\n```\nimport 'package:firebase_core/firebase_core.dart';\n```\n\n\n## firebase_auth 4.2.10\n[Link](https://pub.dev/packages/firebase_auth)\n\n\nA Flutter plugin to use the Firebase Authentication API.\n## Installation:\n\n#### Use this package as a library\n#### Depend on it\n#### Run this command:\n#### With Flutter:\n\n```\nflutter pub add firebase_auth\n```\n\n#### This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get):\n```\ndependencies:\n  firebase_auth: ^4.2.10\n```\n\n#### Import it\n#### Now in your Dart code, you can use:\n\n```\nimport 'package:firebase_auth/firebase_auth.dart';\n```\n\n\n## cloud_firestore 4.4.4\n[Link](https://pub.dev/packages/cloud_firestore)\n\n\nA Flutter plugin to use the Cloud Firestore API.\n## Installation:\n\n#### Use this package as a library\n#### Depend on it\n#### Run this command:\n#### With Flutter:\n\n```\nflutter pub add cloud_firestore\n```\n\n#### This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get):\n```\ndependencies:\n  cloud_firestore: ^4.4.4\n```\n\n#### Import it\n#### Now in your Dart code, you can use:\n\n```\nimport 'package:cloud_firestore/cloud_firestore.dart';\n```\n\n## modal_progress_hud_nsn 0.3.0\n[Link](https://pub.dev/packages/modal_progress_hud_nsn)\n\n\nA simple widget wrapper to enable modal progress HUD (a modal progress indicator, HUD = Heads Up Display)\n## Installation:\n\n#### Use this package as a library\n#### Depend on it\n#### Run this command:\n#### With Flutter:\n\n```\nflutter pub add modal_progress_hud_nsn\n```\n\n#### This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get):\n```\ndependencies:\n  modal_progress_hud_nsn: ^0.3.0\n```\n\n#### Import it\n#### Now in your Dart code, you can use:\n\n```\nimport 'package:modal_progress_hud_nsn/modal_progress_hud_nsn.dart';\n```\n\n## Authenticate with Firebase using Password-Based Accounts on Flutter\n\n[Link](https://firebase.flutter.dev/docs/auth/password-auth/)\n\n\n## Before you begin\n\nIf you haven't already, follow the steps in the Get started guide.\n\nEnable Email/Password sign-in:\n\nIn the Firebase console's Authentication section, open the Sign in method page.\nFrom the Sign in method page, enable the Email/password sign-in method and click Save.\n\n\n### Create a password-based account\n```\nonPressed: () async {\n                   \n                    try {\n                      final credential = await FirebaseAuth.instance\n                          .createUserWithEmailAndPassword(\n                        email: email,\n                        password: password,\n                      );\n                      if (credential != null) {\n                        Navigator.pushNamed(context, ChatScreen.id);\n                        \n                      }\n                    } catch (e) {\n                      print(e);\n                    }\n                  },\n```\n\n### Sign in a user with an email address and password\n\n```\nonPressed: () async {\n                    \n                    try {\n                      final credential = await FirebaseAuth.instance\n                          .signInWithEmailAndPassword(\n                              email: email, password: password);\n                      if (credential != null) {\n                        Navigator.pushNamed(context, ChatScreen.id);\n                        \n                      }\n                    } catch (e) {\n                      print(e);\n                    }\n                  },\n```\n\n### For SignOut\n```\nawait FirebaseAuth.instance.signOut();\n```\n\n### Login with Current User\n```\n@override\n  void initState() {\n    // TODO: implement initState\n    super.initState();\n    getCurrentUser();\n  }\n\n  void getCurrentUser() async {\n    try {\n      final user = await _auth.currentUser;\n      if (user != null) {\n        loggedInUser = user;\n      }\n    } catch (e) {\n      print(e);\n    }\n  }\n\n```\n\n## Get data from firestore to flutter app using the StreamBuilder\n\nFor references :\n[Link](https://stackoverflow.com/questions/50542771/stream-builder-from-firestore-to-flutter)\n\n```\nclass MessagesStream extends StatelessWidget {\n  @override\n  Widget build(BuildContext context) {\n    return StreamBuilder\u003cQuerySnapshot\u003e(\n      stream: _firestore\n          .collection('messages')\n          .orderBy('sender', descending: false)\n          .snapshots(),\n      builder: (context, AsyncSnapshot snapshot) {\n        if (!snapshot.hasData) {\n          return const Center(\n            child: CircularProgressIndicator(\n              backgroundColor: Colors.lightBlueAccent,\n            ),\n          );\n        }\n        final messages = snapshot.data!.docs;\n\n        List\u003cMessageBubble\u003e messageBubbles = [];\n        for (var message in messages) {\n          final messageText = message['text'];\n          final messageSender = message['sender'];\n\n          final messageBubble = MessageBubble(\n            sender: messageSender,\n            text: messageText,\n            isMe: loggedInUser.email == messageSender,\n          );\n          messageBubbles.add(messageBubble);\n        }\n        List\u003cMessageBubble\u003e finalmessages = [];\n        finalmessages = messageBubbles.reversed.toList();\n        return Expanded(\n          child: ListView(\n            reverse: true,\n            padding:\n                const EdgeInsets.symmetric(horizontal: 10.0, vertical: 20.0),\n            children: messageBubbles,\n          ),\n        );\n      },\n    );\n  }\n}\n\n```\n\n## Get the Message Bubble\n```\nclass MessageBubble extends StatelessWidget {\n  MessageBubble({required this.sender, required this.text, required this.isMe});\n\n  var sender;\n  var text;\n  bool isMe;\n\n  @override\n  Widget build(BuildContext context) {\n    return Padding(\n      padding: EdgeInsets.all(2.0),\n      child: Column(\n        crossAxisAlignment:\n            isMe ? CrossAxisAlignment.end : CrossAxisAlignment.start,\n        children: [\n          Text(\n            sender,\n            style: TextStyle(\n              fontSize: 9,\n              fontWeight: FontWeight.bold,\n              color: Colors.grey,\n              fontStyle: FontStyle.italic,\n            ),\n          ),\n          SizedBox(height: 3.5),\n          Container(\n            decoration: BoxDecoration(\n              color: isMe ? Color(0xFFe81cff) : Color(0xFF40c9ff),\n              borderRadius: isMe\n                  ? BorderRadius.only(\n                      topLeft: Radius.circular(30.0),\n                      topRight: Radius.circular(30.0),\n                      bottomLeft: Radius.circular(30.0),\n                    )\n                  : BorderRadius.only(\n                      topLeft: Radius.circular(30.0),\n                      topRight: Radius.circular(30.0),\n                      bottomRight: Radius.circular(30.0),\n                    ),\n            ),\n            margin: isMe\n                ? EdgeInsets.only(left: 45.0)\n                : EdgeInsets.only(right: 45.0),\n            child: Text(\n              text,\n              style: TextStyle(\n                fontSize: 14,\n                fontWeight: FontWeight.normal,\n                color: isMe ? Colors.white : Color(0xFF103783),\n                fontStyle: FontStyle.normal,\n              ),\n              textAlign: isMe ? TextAlign.right : TextAlign.right,\n            ),\n            padding: EdgeInsets.all(18.0),\n          ),\n          SizedBox(height: 18.0),\n        ],\n      ),\n    );\n  }\n}\n\n```\n## Data/chats are shown in ListView\n\n## Get started with Cloud Firestore Security Rules\n\n[Link](https://firebase.google.com/docs/firestore/security/get-started#auth-required)\n\n### Security rules version 2\nAs of May 2019, version 2 of the Cloud Firestore security rules is now available. Version 2 of the rules changes the behavior of recursive wildcards {name=**}. You must use version 2 if you plan to use collection group queries. You must opt-in to version 2 by making rules_version = '2'; the first line in your security rules:\n\n```\nrules_version = '2';\nservice cloud.firestore {\n  match /databases/{database}/documents {\n```\n\n\n### Writing rules\n#### Auth required\n\n```\n// Allow read/write access on all documents to any user signed in to the application\nservice cloud.firestore {\n  match /databases/{database}/documents {\n    match /{document=**} {\n      allow read, write: if request.auth != null;\n    }\n  }\n}\n```\n\n# Screenshots\n## Splash Screen\n![WhatsApp Image 2023-03-11 at 12 19 05 AM](https://user-images.githubusercontent.com/91545371/224400616-49e7578e-cef8-4fb8-b79f-f63209c3bc06.jpeg)\n\n## Home Screen\n![WhatsApp Image 2023-03-11 at 12 19 05 AM (1)](https://user-images.githubusercontent.com/91545371/224400704-fc820cd2-30ca-4a2c-b0a6-b15f11d1c8c5.jpeg)\n\n## Login Page\n![WhatsApp Image 2023-03-11 at 12 19 06 AM](https://user-images.githubusercontent.com/91545371/224400838-f067a85d-37af-4150-9f07-c4d0faa29020.jpeg)\n\n## Chat Screen\n![WhatsApp Image 2023-03-11 at 12 19 06 AM (1)](https://user-images.githubusercontent.com/91545371/224400905-bece1765-78fd-4c5a-b5e0-47fae7fdc407.jpeg)\n\n# Video\n\nhttps://user-images.githubusercontent.com/91545371/224401376-7b8a572d-e5b0-4a78-92ee-26e432cc04f9.mp4\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanditsamik%2Fquick-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpanditsamik%2Fquick-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanditsamik%2Fquick-chat/lists"}