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

  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