A flutter search engine based on MediaWiki with caching.

Overview

WikiSearch

Issues Contributors License Flutter

Table of contents

Project Description

  • WikiSearch is a Flutter search engine which was build using BLoC/Cubit pattern and powered by the MediaWiki API.
  • It also uses the NewsApi to show the latest news in its homescreen.
  • WikiSearch also uses caching to improve UX, for caching we have used a NoSQL database called HiveDB.

Working

App Architecture

App Architecture

Application logic flow :

  1. When initiated either by a function call or initState, cubit receives this request.
  2. Then the cubit calls the repositories which further makes an API call to fetch this data.
  3. This data is stored in the cubit and once successful the cubit emits a suitable state and UI changes accordingly.
  4. If the data was fetched successfully it is cached using HiveDB.
  5. The UI is displayed according to these states.

BLoC/Cubit Pattern

BLoC is a state management solution for flutter. In this project we have used cubit pattern.
Below is a diagramatic representation of how cubit pattern works :

To know more about BLoC: https://github.com/felangel/bloc

Caching using HiveDB

Flutter logo

Caching is used to improve the app's performance in terms of UX, caching in this app was implemented using HiveDB.

Hive - Hive is a lightweight and blazing fast key-value database written in pure Dart.
Hive is a NoSQL database which has really great performance in terms of both write and read operations.

Data we are caching in this application:

  1. Search history (whatever keywords the user searched for).
  2. List of wiki articles that are being fetched from the MediaWiki API.

App UI

Project Setup

The basic steps you need to follow to get started with this project.

Requirements :

Step 1: Clone this repo

git clone https://github.com/Shashwat-Joshi/WikiSearch.git

Step 2: Run these commands in the project directory to download the required packages

flutter clean
flutter pub get

Step 3: To run the project in release

flutter run --release

To-Do

  • Implementing pagination ( caching should only be done for top 10 results)
    • Pagination for top news in home screen.
    • Pagination for wiki search results
  • Light Theme mode ( 🌓 )
  • Connecting weather API
    • Fetch data from weather API and display it on home screen.
    • Cache weather data.
  • Improving documentation ( 😅 )

How to get started with Flutter

Flutter logo

A few resources to get you started if this is your first Flutter project:

For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

Releases(v1.0-beta)
Owner
Shashwat Joshi
C++, Python, C, Flutter
Shashwat Joshi
A platform-adaptive search for Flutter

Flutter Platform Search Flutter platform search is an abstract implementation of the Flutter search delegate. It is a time saving way to implement a p

QuickBird Studios 24 Nov 11, 2021
Space Themed Turn-Based Strategy Game developed in Flutter

Space Empires ?? Introduction ?? Space Empires A 4X Space themed Strategy Game made with Flutter Complete Rules and Instruction can be accessed from t

Satyam 31 Nov 24, 2021
This repo is a boilerplate to create flutter application easily. It is based on **GetX**.

flutter-app boilerplate This repo is a boilerplate to create flutter application easily. It is based on GetX. More info about GetX here. The app has b

NEWWAVE SOLUTIONS JSC 17 Nov 12, 2021
Bhagavad Gita app using flutter & Bhagavad-Gita-API is A lightweight Node.js based Bhagavad Gita API [An open source rest api on indian Vedic Scripture Shrimad Bhagavad Gita].

Gita Bhagavad Gita flutter app. Download App - Playstore Web Application About Bhagavad Gita app using flutter & Bhagavad-Gita-API is A lightweight No

Ravi Kovind 7 Sep 29, 2021
This is template toolkit fasten your project setup within a minute. The toolkit is based on MVC+S structure.

BWeird Flutter Toolkit! Hi! From a Weirder Flutter has been great on mobile development and I took this opportunity to make it even greater with templ

Setak Varaman !!!! 6 Aug 22, 2021
Socket library for creating real-time multiplayer games. Based on TCP, with the ability to send messages over UDP (planned).

Game socket The library was published in early access and is not stable, as it is being developed in parallel with other solutions. English is not a n

Stanislav 6 Nov 17, 2021
Push Notification service for anime episodes and news. The episode updates will be based on actual upload on the internet and NOT Japan tv schedule as other apps do.

Quantz Push Notification service for anime episodes and news. Features Sub and dub - get notified with latest anime episodes on the internet. Ongoing

null 12 Nov 13, 2021
Create a Flutter User Profile Page UI where you can access and edit your user's information within your Flutter app.

Flutter Tutorial - User Profile Page UI 1/2 Create a Flutter User Profile Page UI where you can access and edit your user's information within your Fl

Johannes Milke 17 Nov 21, 2021
Create a Flutter User Profile Page UI where you can access and edit your user's information within your Flutter app.

Flutter Tutorial - User Profile Page UI #2 Create a Flutter User Profile Page UI where you can access and edit your user's information within your Flu

Johannes Milke 13 Nov 9, 2021
Let's create a selectable Flutter Navigation Drawer with routing that highlights the current item within the Flutter Sidebar Menu.

Flutter Tutorial - Sidebar Menu & Selectable Navigation Drawer Let's create a selectable Flutter Navigation Drawer with routing that highlights the cu

Johannes Milke 8 Oct 31, 2021
Components that optimize Flutter fluency.(Flutter 流畅度优化的通用方案,轻松解决卡顿问题)

Flutter fluency optimization component "Keframe" Page switching fluency improved: How to use Project depend on: Quick learning Constructor Description

Ke Technologies 436 Nov 26, 2021
Challenge yourself every weekend with flutter. Join me to implement challenging UI & digital designs using Flutter.

Weekend With Flutter This is my new challenge. Every weekend, I want to implement challenging UI & digital designs using Flutter. you can join me with

Payam Zahedi 16 Nov 8, 2021
Let's create a complete Flutter User Profile Page with SharedPreferences to persist the user's information in Flutter.

Flutter Tutorial - User Profile & SharedPreferences Let's create a complete Flutter User Profile Page with SharedPreferences to persist the user's inf

Johannes Milke 9 Oct 9, 2021
Let's create a Flutter Collapsible Sidebar Menu that can collapse and expand the Navigation Drawer in Flutter.

Flutter Tutorial - Collapsible Sidebar Menu & Navigation Drawer Let's create a Flutter Collapsible Sidebar Menu that can collapse and expand the Navig

Johannes Milke 10 Oct 30, 2021
🚗 Apple CarPlay for Flutter Apps. Aims to make it safe to use apps made with Flutter in the car by integrating with CarPlay.

CarPlay with Flutter ?? Flutter Apps now on Apple CarPlay! flutter_carplay aims to make it safe to use iPhone apps made with Flutter in the car by int

Oğuzhan Atalay 82 Nov 20, 2021
A quick sample app on how to implement a friend list and a profile page in Flutter.

FlutterMates All code resides in the /lib folder: there's no Android / iOS specific code needed. The article, slides and how this came to be, is here.

Codemate Ltd 480 Nov 15, 2021
A weather app built to learn how to use Canvas and Animation in Flutter.

Weather Quick Disclaimer I removed my private OpenWeather API key from the repo, if you want to get the weather forecast use your own in the openweath

Alessandro Aime 141 Oct 28, 2021
TodoMVC for Flutter

flutter_architecture_samples TodoMVC for Flutter! Flutter provides a lot of flexibility in deciding how to organize and architect your apps. While thi

Brian Egan 7.5k Dec 2, 2021