• Stars
    star
    4,899
  • Rank 8,568 (Top 0.2 %)
  • Language
    JavaScript
  • License
    Apache License 2.0
  • Created almost 8 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Search UI components for React and Vue

reactivesearch
Reactive Search

UI components library for Elasticsearch: Available for React and Vue

Read how to build an e-commerce search UI

a.) with React, or b.) with Vue

web vue

Check out Searchbox if you're building search UIs for other JS frameworks, React Native or Flutter.


ReactiveSearch Snapshot Tests npm PRs Welcome Mentioned in Awesome React Mentioned in Awesome Elasticsearch


Check out the ReactiveSearch marketplace at reactiveapps.io.


Banner Image showing all the web UI components we offer

Web designer templates for sketch.

Banner Image showing all the mobile UI components we offer

iOS and Android designer templates for sketch.


TOC

  1. ReactiveSearch: Intro
  2. Features
  3. Component Playground
  4. Live Examples
  5. Comparison with Other Projects
  6. Installation
  7. Docs Manual
  8. Contributing
  9. Other Projects You Might Like

1. ReactiveSearch: Intro

ReactiveSearch is an Elasticsearch UI components library for React and React Native. It has 25+ components consisting of Lists, Ranges, Search UIs, Result displays and a way to bring any existing UI component into the library.

The library is conceptually divided into two parts:

  1. Sensor components and
  2. Actuator components.

Each sensor component is built for applying a specific filter on the data. For example:

  • A SingleList sensor component applies an exact match filter based on the selected item.
  • A RangeSlider component applies a numeric range query based on the values selected from the UI.
  • A DataSearch component applies a suggestions and search query based on the search term typed by the user.

Sensor components can be configured to create a combined query context and render the matching results via an actuator component.

ReactiveSearch primarily comes with two actuators: ResultCard and ResultList. ResultCard displays the results in a card interface whereas ResultList displays them in a list. Both provide built-in support for pagination and infinite scroll views. Besides these, the library also provides low level actuators (ReactiveComponent and ReactiveList) to render in a more customized fashion.


2. Features

Design

  • The sensor / actuator design pattern allows creating complex UIs where any number of sensors can be chained together to reactively update an actuator (or even multiple actuators).
  • The library handles the transformation of the UI interactions into database queries. You only need to include the components and associate each with a DB field.
  • Built in live updates - Actuators can be set to update results even when the underlying data changes in the DB.
  • Comes with scoped and styled components. Doesn't require any external CSS library import, comes with className and innerClass support.
  • Is themable via ThemeProvider.

Ease of Use

πŸ†• ReactiveSearch API: Secure your ElasticSearch Queries

Based on a popular request, we have implemented support for a declarative API based on ReactiveSearch. The API is called ReactiveSearch API. It moves the query DSL generation logic to a backend system (an appbase.io service) instead of exposing it directly on the client-side. By strictly enabling only ReactiveSearch API use, you can also prevent script injections.

The main advantages of using it over the ElasticSearch Query DSL are:

  • Query generation happens on the server-side - addressing the primary security concern around query injection.
  • Easy recording of analytics events for search and clicks. Read more
  • Application of query rules and functions for search queries. Read more

Using ReactiveSearch API instead of ElasticSearch's query DSL is an opt-in feature. You need to set the enableAppbase prop as true in your ReactiveBase component. This assumes that you are using appbase.io for your backend.

We recommend checking out this KitchenSink App that demonstrates the use of the ReactiveSearch API for all the ReactiveSearch components.

⬆ Back to Top


3. Component Playground

Try the live component playground at playground. Look out for the knobs section in the playground part of the stories to tweak each prop and see the effects.


4. Live Demos

A set of live demos inspired by real world apps, built with ReactiveSearch.

Web

You can check all of them on the examples section of website.

Mobile

  • Booksearch on Play Store: A booksearch app showing a searchable collection of over 10k books built with ReactiveSearch. Also available as a snack.
  • Gitxplore on Play Store: A Github repository explorer app to search over the 25k+ most popular github repos.
  • ReactiveTodos on App Store: A shared collaborative to-do list app to showcase the capability of Reactivesearch.

⬆ Back to Top


5. Comparison with Other Projects

Here, we share how ReactiveSearch compares with other projects that have similar aims.

# ReactiveSearch SearchKit InstantSearch
Backend Any Elasticsearch index hosted on any Elasticsearch cluster. Any Elasticsearch index hosted on any Elasticsearch cluster. Custom-built for Algolia, a proprietary search engine.
Development Actively developed and maintained. Active issue responses, some development and maintenance. Actively developed and maintained.
Onboarding Experience Starter apps, Live interactive tutorial, getting started guide, component playground, every component has a live working demo with codesandbox. Getting started tutorial, no live component demos, sparse reference spec for many components. Starter apps, getting started guide, component playground.
Styling Support Styled and scoped components. No external CSS import required. Rich theming supported as React props. CSS based styles with BEM, not scoped to components. Theming supported with SCSS. CSS based styles, requires external style import. Theming supported by manipulating CSS.
Types of Components Lists, Ranges, Search, Dates, Maps, Result Displays. Can use your own UI components. Lists, Ranges, Search*, Result*. Can't use your own UI components. (Only one component for Search and Result, resulting in more code to be written for customizability) Lists, Range, Search, Result. Can use your own UI components.
Supported Distribution Platforms React, Vue for Web, React Native for mobile. React for Web. React, Vue, Angular, vanilla JS for Web, React Native for mobile but latter has no UI components.

We welcome contributions to this section. If you are building a project or you know of another project that is in the similar space, let us know and we will update the comparisons.

⬆ Back to Top


6. Installation

Installing ReactiveSearch is just one command.

  • If you're using reactivesearch for web
npm install @appbaseio/reactivesearch

You can check out the quickstart guide with React here.

  • If you're using reactivesearch for mobile (native)
npm install @appbaseio/reactivesearch-native

You can check out the quickstart guide with React Native here.


7. Docs Manual

The official docs for the Web library are at docs.appbase.io/docs/reactivesearch/v3.

The components are divided into four sections:

Docs for React Native version of the library are available at docs.appbase.io/docs/reactivesearch/native.

⬆ Back to Top


8. Contributing

Please check the contribution guide.


9. Other Projects You Might Like

  • arc API Gateway for ElasticSearch (Out of the box Security, Rate Limit Features, Record Analytics and Request Logs).

  • searchbox A lightweight and performance focused searchbox UI libraries to query and display results from your ElasticSearch app (aka index).

    • Vanilla JS - (~16kB Minified + Gzipped)
    • React - (~30kB Minified + Gzipped)
    • Vue - (~22kB Minified + Gzipped)
  • dejavu allows viewing raw data within an appbase.io (or Elasticsearch) app. Soon to be released feature: An ability to import custom data from CSV and JSON files, along with a guided walkthrough on applying data mappings.

  • mirage ReactiveSearch components can be extended using custom Elasticsearch queries. For those new to Elasticsearch, Mirage provides an intuitive GUI for composing queries.

  • ReactiveMaps is a similar project to Reactive Search that allows building realtime maps easily.

  • appbase-js While building search UIs is dandy with Reactive Search, you might also need to add some input forms. appbase-js comes in handy there.

⬆ Back to Top

More Repositories

1

dejavu

A Web UI for Elasticsearch and OpenSearch: Import, browse and edit data with rich filters and query views, create reference search UIs.
JavaScript
8,366
star
2

mirage

🎨 GUI for simplifying Elasticsearch Query DSL
TypeScript
2,202
star
3

reactivemaps

A data aware UI components library for building realtime maps
JavaScript
941
star
4

gem

πŸ’Ž GUI for Data Modeling with Elasticsearch
JavaScript
662
star
5

Docbase

Turn .md docs into beautiful sites
JavaScript
592
star
6

abc

Power of appbase.io via CLI, with nifty imports from your favorite data sources
Go
472
star
7

reactivesearch-api

API Gateway for Elasticsearch with declarative querying and out-of-the-box access controls
Go
190
star
8

searchbox

Lightweight and performance oriented search box UI component libraries for React, Vue, React Native, JS and Flutter
JavaScript
182
star
9

playground

A storybook playground for ReactiveMaps and ReactiveSearch
JavaScript
47
star
10

appbase-js

appbase.io search client library for JavaScript
JavaScript
41
star
11

Docs

ReactiveSearch Developer Hub
JavaScript
33
star
12

reactivecore

Core architecture of reactive UI libraries
JavaScript
33
star
13

dashboard

ReactiveSearch cloud dashboard
JavaScript
32
star
14

appbase-droid

Elasticsearch and appbase.io library for Android (and Java)
Java
24
star
15

appbase-swift

Swift Library for appbase.io and ElasticSearch
Swift
24
star
16

reactivebase

Data components for building reactive UIs
JavaScript
18
star
17

twitterclone

twitter clone built with appbase.io and AngularJS
JavaScript
16
star
18

designkit

Design kit for appbaseio ecosystem
JavaScript
14
star
19

esc

ESC: ElasticSearch Cookbook, with example recipes πŸ“˜
JavaScript
13
star
20

meetupblast

Find out what great meetups people are going to!
JavaScript
12
star
21

reactive-manual

Docs for ReactiveSearch (and Maps)
JavaScript
12
star
22

vue-reactivesearch

This project has been moved to https://github.com/appbaseio/reactivesearch/
JavaScript
11
star
23

reactivesearch-api-docker

HTML
9
star
24

heartbeat-frontend

Heartbeat: Transform REST API endpoints to streaming APIs
JavaScript
7
star
25

vue-playground

A storybook playground for Vue ReactiveSearch
Vue
7
star
26

batteries

Pluggable modules for mappings, search preview and analytics
JavaScript
7
star
27

go-appbase

An ElasticSearch + appbase.io client library (includes data streaming support) for Go
Go
6
star
28

reactivebase-native

Native data components for building reactive UIs
JavaScript
6
star
29

flutter-searchbox

SearchBox UI component library for flutter
Dart
6
star
30

appbase-redis

A realtime events-based document store
JavaScript
5
star
31

reactivesearch-realm-function

Crate for ReactiveSearch API which creates a Realm function based API gateway
TypeScript
5
star
32

docbase-manual

Manual for docbase
HTML
5
star
33

vue-searchbox

JavaScript
4
star
34

generator-docbase

Docbase generator
JavaScript
4
star
35

react-searchbox

JavaScript
3
star
36

reactive-maps-onboarding

JavaScript
3
star
37

searchbox-js

JavaScript
3
star
38

streaming-transporter

Shell
3
star
39

analytics.js

Universal analytics library for appbase.io / ElasticSearch
JavaScript
3
star
40

pipelines-action

GitHub Action to let users create pipelines from a repository directly
JavaScript
3
star
41

grunt-docbase

Grunt plugin to generate html files from your docbase project.
JavaScript
2
star
42

EScompanion

A companion installation app for Autopilot
Go
2
star
43

statuspage

HTML
2
star
44

android-searchbox

Android Search UI widget to build customizable mobile search layouts
Java
2
star
45

appbase.js-deprecate

JavaScript Wrapper for Appbase Rest API
JavaScript
2
star
46

statusp

Python
1
star
47

reactivesearch-shopify-plugin

Shopify Plugin for ReactiveSearch
JavaScript
1
star
48

faceted-search-template

JavaScript
1
star
49

oasis

Oasis
JavaScript
1
star
50

mitter

JavaScript
1
star
51

serverless-search

Dockerfile
1
star
52

appbase-hackathon-deprecate

1
star
53

geo-search-template

JavaScript
1
star
54

flutter-searchbox-typeahead-example

Dart
1
star
55

clients

An experiment in auto-generated REST clients.
1
star
56

pipelines-template

Template repo to get started with ReactiveSearch Pipelines Action
JavaScript
1
star
57

customization-with-reactivesearch

JavaScript
1
star
58

appbaseio-heroku

Dockerfile
1
star
59

reactivesearch-api-k8s

1
star
60

searchbook

Search onboarding
JavaScript
1
star