A flashcard app that utilizes the power of AI to make flashcards from documents
Description
QuizWiz is a flashcard app that utilizes the power of AI to make flashcards from documents.
📌 Features
- Create, edit, and combine collections (deck).
- Create cards manually or by uploading pdf files/pasting materials.
- Review cards based on SM-2 algorithm
- Practice reviewed cards using multiple choice or by writing them manually.
- Light and dark themes.
📸 Screenshots
– |
📦 Packages & Technologies
Description | Package |
---|---|
Architecture | Bloc Pattern |
State Management | flutter_bloc |
Dependency Injection | get_it |
Theming | flex_color_scheme |
Internet Connection | connectivity_plus |
Functional Programming | dartz |
database | Isar |
🩻 Project Structure
lib
|
|_ 📁src
|
|__ 📁core
| |__ 📁errors <- define errors and exceptions
| |__ 📁router <- generated router & route names
| |__ 📁services <- dependency injection & internet connection
| |__ 📁theme <- define themes & dynamic theming
| |__ 📁utils <- constants (enums, strings, etc..)
| |__ 📁widgets <- widgets that are used in multiple screens
|
|__ 📁features
|
|__ 📁cards
|__ 📁controller <- Bloc
|__ 📁data <- data retrieval and caching
| |__ 📁models <- business logic
| |__ 📁data_source <- works with db and api
| |__ 📁repository <- combine and map data
|__ 📁presentation <- screens and widgets
🏃♂️ Install & Run The App
- clone the project by running
git clone https://github.com/Dev-Salem/quizwiz.git
in your preferred directory - Run
flutter pub get
- Get an api key from Rapid API [1]
- Go to
lib/features/cards/data/data_source/remote_data_source/api_client.dart
and provide your key, (note: if you intend to publish the app make sure to store the key securely, for more information ) - Run
flutter_run
[1] if you want to use the official chat gpt api or other wrappers, head to lib/core/utils/network_constants.dart
and change the values of gptBaseUrl
, gptHeaderHost
🛠️ Limitations
Due to the limitations of chatgpt 3.5 turbo, the API is only able to summarize ~3 pages at a time.
💡 Contribution
Feel free to add/request features by making a pull request, or by reporting bugs.
🗺️ Roadmap
[ ] add tests
🗞️ License
MIT License