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

Create Collection Edit, delete, combine collections and cards
Review cards Practice using multiple choice quiz
Practice by writing definitions manually Upload pdf then save all generated cards
Paste text then save individual generated cards

📦 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

  1. clone the project by running git clone https://github.com/Dev-Salem/quizwiz.git in your preferred directory
  2. Run flutter pub get
  3. Get an api key from Rapid API [1]
  4. 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 )
  5. 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

GitHub

View Github