{"id":22330657,"url":"https://github.com/rodrigobertotti/askless-flutter-client","last_synced_at":"2025-10-23T00:48:05.165Z","repository":{"id":56826243,"uuid":"334490280","full_name":"RodrigoBertotti/askless-flutter-client","owner":"RodrigoBertotti","description":"Build Flutter Apps with PostgreSQL, MySQL, or any database, stream data changes through websockets effortlessly, and handle websocket authentication like a pro","archived":false,"fork":false,"pushed_at":"2024-08-10T18:36:36.000Z","size":30512,"stargazers_count":13,"open_issues_count":0,"forks_count":7,"subscribers_count":3,"default_branch":"dev","last_synced_at":"2024-11-16T03:27:35.395Z","etag":null,"topics":["dart","flutter","flutterwithnodejs","nodejs","realtime","websocket"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RodrigoBertotti.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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":"2021-01-30T19:05:12.000Z","updated_at":"2024-10-06T22:33:10.000Z","dependencies_parsed_at":"2023-11-16T16:04:37.836Z","dependency_job_id":"41471568-1953-4fd7-b328-d2359630544b","html_url":"https://github.com/RodrigoBertotti/askless-flutter-client","commit_stats":null,"previous_names":["rodrigobertotti/askless-flutter-client","wisetap/askless-flutter-client"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RodrigoBertotti%2Faskless-flutter-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RodrigoBertotti%2Faskless-flutter-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RodrigoBertotti%2Faskless-flutter-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RodrigoBertotti%2Faskless-flutter-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RodrigoBertotti","download_url":"https://codeload.github.com/RodrigoBertotti/askless-flutter-client/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228041291,"owners_count":17860221,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["dart","flutter","flutterwithnodejs","nodejs","realtime","websocket"],"created_at":"2024-12-04T04:07:28.598Z","updated_at":"2025-10-23T00:48:04.085Z","avatar_url":"https://github.com/RodrigoBertotti.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Askless for Flutter\n\nBuild Flutter Apps with PostgreSQL, MySQL, or any database, stream data changes through websockets effortlessly, and handle websocket authentication like a pro\n\n🌟 If you want to build your Flutter App without Firebase and stream data from a database (like SQL) to the Flutter App,\nAskless will save you a lot of time!\n\nThis is the Flutter side,\n**[click here to access the Backend side in Node.js](https://github.com/RodrigoBertotti/Askless)**\n\n## Built with Askless\n\nCheck the example of a [Flutter Chat App with PostgreSQL / MySQL databases and Node.js](https://github.com/RodrigoBertotti/flutter_chat_app_with_nodejs).\n\nhttps://github.com/RodrigoBertotti/flutter_chat_app_with_nodejs/assets/15431956/42428123-76ab-4c5c-8ba1-29321d11b74b\n\n\u003csup\u003e 🔊 The video above contains audio, click on the right side to turn it on\u003c/sup\u003e\n\n## Why Askless?\n\n### :muscle: **Stream data from PostgreSQL, MySQL or other database** to your Flutter App through websockets\n\nThe Askless Framework (Backend in Node.js) is designed to make your Flutter App\nstream data in without Firebase, create your own routes that interact with your database,\ncall `route.notifyChanges(..)` when something changes so the users will receive the changes!\n\n### :airplane: Skip websocket details and focus in your application!\n\nAskless Design is a result of thorough analysis to make websockets in Flutter easy and productive.\nIt can be tricky to build websockets to transport data from a database from scratch for your Flutter App:\n\n\u003csup\u003e:grey_exclamation:\u003c/sup\u003e you need to add logic to handle different kinds of data that will move through the websockets\n\n:grey_exclamation: **Authentication events come first**, so you don't want to your client receive data he doesn't have permission to.\n\n:grey_exclamation: If the websockets disconnect, either because of the user device or because of the server, we need to \n**try to connect back again** as soon as possible\n\n:grey_exclamation: Ops! The user was receiving data by websockets, but he lost connection for a second and connected again, \nnow we need to **handle authentication BEFORE sending data again**\n\n:grey_exclamation: We may want to know once the user started streaming data and when the user received data, so we can know\ndata was received, so an additional event like \"message_received\" needs to be added and handled in the App and backend, more work to\nsimply add a double-check icon in your chat app once the message is delivered\n\n:white_check_mark: **You don't need to mull over implementing these details anymore** :grinning: **Askless is here to make your life easier!**\n\n\n## Important links\n*  [Askless Backend in Node.js](https://github.com/RodrigoBertotti/askless) the backend side of this Flutter client\n*  [Documentation](documentation.md)\n*  [Askless Node.js Server](https://github.com/RodrigoBertotti/Askless)\n\n#### Examples\n*  \u003csup\u003eLevel:\u003c/sup\u003e \u003csup\u003e:red_circle: :white_circle: :white_circle: :white_circle: :white_circle:\u003c/sup\u003e [Flutter Random Numbers Example](example/random_numbers): Random numbers are generated on the server.\n*  \u003csup\u003eLevel:\u003c/sup\u003e \u003csup\u003e:red_circle: :red_circle: :white_circle: :white_circle: :white_circle:\u003c/sup\u003e [Flutter Simple Chat Example](example/simple_chat): Simple chat between the colors blue and green.\n*  \u003csup\u003eLevel:\u003c/sup\u003e \u003csup\u003e:red_circle: :red_circle: :red_circle: :white_circle: :white_circle:\u003c/sup\u003e [Flutter Catalog Example](example/catalog): Users adding and removing products from a catalog.\n*  \u003csup\u003eLevel:\u003c/sup\u003e \u003csup\u003e:red_circle: :red_circle: :red_circle: :red_circle: :red_circle:\u003c/sup\u003e [Flutter Chat App with MySQL or PostgreSQL](https://github.com/RodrigoBertotti/flutter_chat_app_with_nodejs): A Flutter Chat App with MySQL, WebSockets, and Node.js\n\n## Getting Started\n\nThe \"Getting Started\" is an example of the Flutter client,\nan example is executed locally.\n \n**1 -** First create the server, [click here](https://github.com/RodrigoBertotti/askless) and\nfollow the server instructions in the section \"Getting Started\"\n\n**2 -** (Optional) To use an unencrypted connection in a **test environment** such as this example\n(`ws://` connection instead of `wss://`) [follow these instructions](https://flutter.dev/docs/release/breaking-changes/network-policy-ios-android). **Do not apply this on a production environment.**\n\n\u003c!-- **3 -** (Optional) If you want to add video and audio calls for your Flutter App, [follow these instructions to set it up](documentation.md#video-and-audio-calls) --\u003e\n\n**3 -** Install\n\npubspec.yaml:\n\n    dependencies:\n      flutter:\n        sdk: flutter\n        \n      # Add this line:\n      askless: ^3.1.1\n\n**4 -** Import the package\n\n    import 'package:askless/askless.dart';\n\n**5 -** Initialize\ninforming the server URL with port (default: 3000).\nYou can also access the `myAsklessServer.localUrl` attribute on your server-side in node.js\nto discover what the local URL of your server is.\n\n**6 -** Start Askless with `AsklessClient.instance.start()`\n    \nExample:\n\n    void main() {\n      AsklessClient.instance.start(serverUrl:\"ws://192.168.0.8:3000\"); // TODO: replace with the URL of your Askless Server\n      runApp(MyApp());\n    }    \n\n**7 -** Here we go! Now you can start using building your Flutter App with Askless,\ncheck the **[documentation](documentation.md)** and **[examples](#Examples)**!\n\n## Thanks\nThank you for using Askless!\n\nThanks also ALL the developers who developed the libraries that Askless\nrely on and the authors of these two very good articles! [A Comprehensive Guide to Flutter WebRTC](https://www.100ms.live/blog/flutter-webrtc) and [Flutter-WebRTC: A Complete Guide](https://www.videosdk.live/blog/flutter-webrtc).\n\n## License\n\n[MIT](LICENSE.txt)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodrigobertotti%2Faskless-flutter-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frodrigobertotti%2Faskless-flutter-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodrigobertotti%2Faskless-flutter-client/lists"}