https://github.com/blkkkbvsik/askinator
Parody of Akinator using AI to guess what the AI choose
https://github.com/blkkkbvsik/askinator
Last synced: about 2 months ago
JSON representation
Parody of Akinator using AI to guess what the AI choose
- Host: GitHub
- URL: https://github.com/blkkkbvsik/askinator
- Owner: BLKKKBVSIK
- Created: 2024-10-08T13:05:36.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-11-15T13:28:30.000Z (7 months ago)
- Last Synced: 2025-04-02T18:55:31.029Z (2 months ago)
- Language: Dart
- Homepage:
- Size: 5.37 MB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Summary
- [Askinator](#askinator)
- [Current architecture](#current-architecture)
- [Initialization/Requirement](#initialization-requirement)### Askinator
Askinator, a spooky twist on the classic [Akinator](https://en.akinator.com/) game!
In this project, the AI has chosen a character, and your goal is to uncover it by asking questions.
But beware—the AI can only answer 'Yes' or 'No'](https://www.youtube.com/watch?v=pXO6IXGCl1s)
[](https://www.youtube.com/watch?v=pXO6IXGCl1s)You can see the promo video by clicking [this link](https://www.youtube.com/watch?v=pXO6IXGCl1s).
You can also play the game with this link in your browser (https://askinator-c6fe5.web.app)### Current architecture
The project is made using [Flutter](https://flutter.dev/) a Google UI framework created in 2017.
It uses the Google language Dart created in 2011, [Dart](https://dartlang.org/).The application is based on an MVVM architecture using [Stacked](https://pub.dev/packages/stacked) by FilledStacks as a state management.
The usage of [Stacked](https://pub.dev/packages/stacked) is for maintainability and readability.
[Stacked](https://pub.dev/packages/stacked) uses implicitly the [Provider](https://pub.dev/packages/provider) package.
The main idea is to use an MVVM pattern to remove any business logic from the UI layouts by putting this logic in a separated view model. This adds more clarity and maintainability.We can decompose the project into 3 layers: the Models, The Views, and finally the ViewModels.
![]()
In the project, the views are for display only.
They can trigger interactions through Buttons/GestureDetector/Events that will call ViewModel methods.The ViewModel class can extend different types of abstract ViewModels such as:
- [BaseViewModel](https://github.com/Stacked-Org/stacked/blob/master/README_old.md#baseviewmodel-functionality)
- [ReactiveViewModel](https://github.com/Stacked-Org/stacked/blob/master/README_old.md#reactiveviewmodel)
- And many more, but we mostly use those, you can refer to the [stacked documentation](https://pub.dev/documentation/stacked/latest/stacked/stacked-library.html#classes)The ViewModel data-bind all the data from the services and models, create getters for the view, and notifies the view of any changes (using a ReactiveServiceMixin or a NotifyListeners)
The project utilizes [AppWrite.io](https://appwrite.io/) as a cloud backend to handle:
- Database Management: Stores information about the leaderboard.
- Anonymous Authentication: Allows players to start the game without requiring sign-in, making it easy and accessible for quick sessions.
- Cloud Functions: Calls a Hugging Face API to enable the AI to respond with a "Yes" or "No" to user questions.
This integration allows the app to offer a seamless, interactive experience by handling backend processing efficiently, while Hugging Face provides the natural language processing capability for AI responses.### Initialization Requirement
1) Install the Flutter SDK following the [official documentation](https://flutter.dev/docs/get-started/install)
Then use the `flutter doctor` to verify your install
2) Clone the project.
3) Run the `flutter pub get` command to fetch the dependencies needed to build the project.
4) Use the `flutter pub run build_runner build --delete-conflicting-outputs` to generate the [GetIt](https://pub.dev/packages/get_it) config.
4) Finally, use the `flutter run` command to launch your app on your device.