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.

You might also like...

Flutter file based routing - File based routing and nested layouts for Flutter

Flutter File Based Routing I was inspired by the routing in remix.run with neste

Sep 29, 2022

A Flutter based to do list app (yes, another to do list... but... this time based on a beautiful design)

A Flutter based to do list app (yes, another to do list... but... this time based on a beautiful design)

✔️ Flutter to do App "To Do List" A Flutter app based on the design of the To Do App, created by Rudi Hartono, see more on: Uplabs. Getting Started 🚀

Dec 31, 2022

Facebook based-app - A Facebook based app which actually looks like Facebook

Facebook based-app - A Facebook based  app which actually looks like Facebook

Facebook based mobile application This project is a mobile application which act

Nov 23, 2022

181011450390-FLUTTER-CHALLENGE - Example GitHub Search app built in Flutter & RxDart

Example GitHub Search app built in Flutter & RxDart Simple app using the Flutter

Jan 3, 2022

Flutter user list calendar - A flutter app that displays registered users on a calendar/list and allows to search for users using the full name

Flutter User Calendar A flutter app that displays registered users on a calendar

Jan 20, 2022

A platform-adaptive search for Flutter

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

Dec 31, 2022

A mobile application that allows you to search and fetch recipes using Flutter, TheMealDB and Domain Driven Design

recipe_app A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if th

Dec 4, 2021

Search and view popular Youtube videos with Youtube API in Flutter App

Search and view popular Youtube videos with Youtube API in Flutter App

getx_bottom_nav_sample The sample of AnimatedBottomNavBar with GetX 주요 Package 설명 1.url_launcher url_launcher pub.dev flutter 에서 인앱, 외부 브라우저로 연길 시켜 주는

Dec 25, 2021
Releases(v1.0-beta)
Owner
Shashwat Joshi
C++, Python, C, Flutter
Shashwat Joshi
Flutter shareable package of object-oriented classes for local caching of user data in json

json_cache Json Cache is an object-oriented package to serve as a layer on top of local storage packages - packages that persist data locally on the u

Dartoos 10 Dec 19, 2022
An advanced image provider provides caching and retrying for flutter app

Flutter Advanced Network Image Provider An advanced image provider provides caching and retrying for flutter app. Now with zoomable widget and transit

Dark Knight 287 Sep 15, 2022
A flutter library for loading images from network, resizing as per container size and caching while being memory sensitive.

Optimized Cached Image A flutter library for loading images from network, resizing and caching them for memory sensitivity. This resizes and stores th

Anvith Bhat 76 Dec 20, 2022
Stories like in Instagram, each story can include multiple images and videos. Package supports video, titles, preliminary caching.

flutter_instagram_stories A Flutter package for displaying stories just like Whatsapp & Instagram. Built-in groups (multiple stories with one icon), c

Alex Awaik 125 Dec 9, 2022
Dart package for Async Data Loading and Caching. Combine local (DB, cache) and network data simply and safely.

Stock is a dart package for loading data from both remote and local sources. It is inspired by the Store Kotlin library.

xmartlabs 59 Dec 24, 2022
Github-search - Allows users to search users on github Uses flutter

Github Search Github Search is a cross-platform mobile application powered by Flutter Framework and Github API. The application was built with simplic

Saul 3 Sep 13, 2022
A google browser clone which is made by using flutter and fetching the google search api for the search requests.

google_clone A new Flutter project. Project Preview Getting Started This project is a starting point for a Flutter application. A few resources to get

Priyam Soni 2 May 31, 2022
Starlight search bar - Starlight search bar with flutter

starlight_search_bar If you find the easiest way to search your item, this is fo

Ye Myo Aung 1 Apr 20, 2022
Embeddable unity game engine view for Flutter.

flutter_unity_widget Flutter unity 3D widget for embedding unity in flutter. Now you can make awesome gamified features of your app in Unity and get i

Rex Raphael 1.7k Jan 8, 2023
A quickjs engine for flutter.

flutter_qjs English | 中文 This plugin is a simple js engine for flutter using the quickjs project with dart:ffi. Plugin currently supports all the plat

ekibun 119 Dec 26, 2022