https://github.com/zmitry/ir-sample
https://github.com/zmitry/ir-sample
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/zmitry/ir-sample
- Owner: zmitry
- Created: 2017-04-08T21:48:46.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2017-04-29T14:18:46.000Z (about 9 years ago)
- Last Synced: 2025-03-23T00:26:16.696Z (about 1 year ago)
- Language: JavaScript
- Size: 3.26 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Web search example.

- 1. Опис
- 2. Список використаних бібліотек
- 3. Навіщо воно потрібно.
- 4. Що воно робить.
- 5. Як воно робить.
- 6. Як покращити.
- 7. Як все це запустити.
1. Це Веб застосування, яке демонструє можливість пошуку на клієнті та на сервері з кешуванням данних.
2. Використовувалися такі біблиотеки
```
react -...
redux - state management
redux-saga - side-effects model
redux-search - client-search lib
reselect - lib for data memoization
immutalbe - lib for immutable data structures
react-router - client rouning
auth0 - authentication
json-server - mock-server
faker - fake data
```
3. Offline-first. Кешування запитів на клієнті робить программу більш офлайн спрямованою.
4. Це веб застосування, яке просто кешує пошукові запити і надає можливість пошуку в кешованих запитах
5. Програма викроистовує нормалізований вид данних
```js
{
[id]:{
id:id,
title: '',
author: '',
description: '',
}
}
```
А також іммутабільні структури данних для оптимізації і швидкої перевірки на рівнисть.
Для пошуку на клієнті використовується redux-search. Він індексує колекцію и може робити пошук по заданим полям..
Його можна розширити, додавши власний метод для індексування.
Data flow виглядає наступним чином:
1. на сервер йде пошуковий запит.
2. клієнт отримує його, нормалізує і зберігає під ключем ```data```.
3. результат запиту на сервер зберігається в ключі ```ids```. Посилання на елементи з ```data```.
4. потім наступні запити, які йдуть на пошук по кешованним даннми перезаписують данні в в ключі ```data```


6. Що можна покращити ?
- Кешувати данні не в пам'яті, а в кліентському сторейджі.
тут допоможе redux-persist або redux-offline
- Придумати кращий спосіб для серверних запитів.
7. Як 3апустити ?
```
export AUTH0_DOMAIN='auth domain'
export AUTH0_CLIENT_ID='auth id'
// fake.js file for generaing fake data node fake.js
npm run server
npm run dev
```