All Projects → Shashwat-Joshi → WikiSearch

Shashwat-Joshi / WikiSearch

Licence: GPL-3.0 license
A flutter search engine based on MediaWiki with caching.

Programming Languages

dart
5743 projects
C++
36643 projects - #6 most used programming language
CMake
9771 projects
HTML
75241 projects
c
50402 projects - #5 most used programming language
swift
15916 projects

Projects that are alternatives of or similar to WikiSearch

Taskly
Flutter app to manage tasks.
Stars: ✭ 126 (+223.08%)
Mutual labels:  flutter-app, hivedb
onpc
Enhanced Music Controller
Stars: ✭ 90 (+130.77%)
Mutual labels:  flutter-app
retrocache
This library provides an easy way for configure retrofit for use a 2 layer cache (RAM and Disk)
Stars: ✭ 35 (-10.26%)
Mutual labels:  caching
Flood Mobile
GSoC 21' @CCExtractor. A modern mobile UI for various torrent clients with a Node.js backend and Flutter frontend.
Stars: ✭ 48 (+23.08%)
Mutual labels:  flutter-app
EasyTask MVVM Kotlin
Todo app based on MVVM, Kotlin Coroutines, Navigation Component, Room Database, Retrofit, Data Binding
Stars: ✭ 49 (+25.64%)
Mutual labels:  caching
SemanticResultFormats
Provides additional visualizations (result formats) for Semantic MediaWiki
Stars: ✭ 40 (+2.56%)
Mutual labels:  mediawiki
core
An advanced and highly optimized Java library to build frameworks: it's useful for scanning class paths, generating classes at runtime, facilitating the use of reflection, scanning the filesystem, executing stringified source code and much more...
Stars: ✭ 100 (+156.41%)
Mutual labels:  caching
SemanticBreadcrumbLinks
Provides in-page navigation by building breadcrumb links from an attributive property filter.
Stars: ✭ 15 (-61.54%)
Mutual labels:  mediawiki
workout timer
No description or website provided.
Stars: ✭ 48 (+23.08%)
Mutual labels:  flutter-app
Flutter-Bottom-Tab-Bar
No description or website provided.
Stars: ✭ 72 (+84.62%)
Mutual labels:  flutter-app
justBreathe
A minimal meditation app made with Flutter
Stars: ✭ 47 (+20.51%)
Mutual labels:  flutter-app
cache warmup
Generiert den Cache vorab, so dass die Website bereits beim Erstaufruf performant läuft
Stars: ✭ 36 (-7.69%)
Mutual labels:  caching
Flutter-Photography-Application
Flutter Photography Application Design and Animation - day 22
Stars: ✭ 73 (+87.18%)
Mutual labels:  flutter-app
indexed-cache
A tiny Javsacript library for sideloading static assets on pages and caching them in the browser's IndexedDB for longer-term storage.
Stars: ✭ 56 (+43.59%)
Mutual labels:  caching
node-version-assets
Version your static assets with MD5 hashes using node.js
Stars: ✭ 65 (+66.67%)
Mutual labels:  caching
change app package name
Change App Package Name with single command. It makes the process very easy and fast.
Stars: ✭ 72 (+84.62%)
Mutual labels:  flutter-app
Fetch
A resource based network abstraction based on Alamofire.
Stars: ✭ 24 (-38.46%)
Mutual labels:  caching
movie-catalog
🎬 A movie catalog app for both Android & IOS ~ Flutter.io project in Dart | Dart, Bloc, Movies
Stars: ✭ 46 (+17.95%)
Mutual labels:  flutter-app
Flutter-Facebook-Redesign
Flutter Facebook Redesign Application Design and Animation - day 19
Stars: ✭ 168 (+330.77%)
Mutual labels:  flutter-app
cuba-weather-flutter
Application for mobile devices of the Cuba Weather project implemented with Flutter
Stars: ✭ 28 (-28.21%)
Mutual labels:  flutter-app

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].