{"id":15017654,"url":"https://github.com/lskjs/lskjs","last_synced_at":"2025-05-07T08:24:25.096Z","repository":{"id":13444898,"uuid":"74454316","full_name":"lskjs/lskjs","owner":"lskjs","description":"Lego Starter Kit — Node.js \u0026 React isomorphic app creator (Node.js, Express, React.js, Babel, PostCSS, Webpack)","archived":false,"fork":false,"pushed_at":"2024-03-15T14:24:43.000Z","size":76696,"stargazers_count":38,"open_issues_count":45,"forks_count":19,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-05-01T08:38:12.702Z","etag":null,"topics":["babel","boilerplate","express","nodejs","postcss","react","starter-kit","webpack"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lskjs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-11-22T09:06:54.000Z","updated_at":"2024-05-30T15:24:36.000Z","dependencies_parsed_at":"2023-01-17T00:30:38.954Z","dependency_job_id":"0d4f896e-67f7-47a8-b43d-bc738ea282da","html_url":"https://github.com/lskjs/lskjs","commit_stats":{"total_commits":3071,"total_committers":23,"mean_commits":"133.52173913043478","dds":0.470530771735591,"last_synced_commit":"b82f42a887da98f5c8f3388ee4f9b6ae2a1b0a41"},"previous_names":[],"tags_count":861,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lskjs%2Flskjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lskjs%2Flskjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lskjs%2Flskjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lskjs%2Flskjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lskjs","download_url":"https://codeload.github.com/lskjs/lskjs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252840406,"owners_count":21812301,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["babel","boilerplate","express","nodejs","postcss","react","starter-kit","webpack"],"created_at":"2024-09-24T19:50:48.381Z","updated_at":"2025-05-07T08:24:25.072Z","avatar_url":"https://github.com/lskjs.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LSK.js – lskjs\n\n\u003e @lskjs/lskjs – LSK.js – command line interface scripts\n\n[![LSK logo](https://badgen.net/badge/icon/MADE%20BY%20LSK?icon=zeit\\\u0026label\\\u0026color=red\\\u0026labelColor=red)](https://github.com/lskjs)\n[![NPM version](https://badgen.net/npm/v/@lskjs/lskjs)](https://www.npmjs.com/package/@lskjs/lskjs)\n[![NPM downloads](https://badgen.net/npm/dt/@lskjs/lskjs)](https://www.npmjs.com/package/@lskjs/lskjs)\n[![NPM Dependency count](https://badgen.net/bundlephobia/dependency-count/@lskjs/lskjs)](https://bundlephobia.com/result?p=@lskjs/lskjs)\n[![Have TypeScript types](https://badgen.net/npm/types/@lskjs/lskjs)](https://www.npmjs.com/package/@lskjs/lskjs)\n[![Have tree shaking](https://badgen.net/bundlephobia/tree-shaking/@lskjs/lskjs)](https://bundlephobia.com/result?p=@lskjs/lskjs)\n[![NPM Package size](https://badgen.net/bundlephobia/minzip/@lskjs/lskjs)](https://bundlephobia.com/result?p=@lskjs/lskjs)\n[![Package size](https://badgen.net//github/license/lskjs/lskjs)](https://github.com/lskjs/lskjs/blob/master/LICENSE)\n[![Ask us in Telegram](https://img.shields.io/badge/Ask%20us%20in-Telegram-brightblue.svg)](https://t.me/lskjschat)\n\n\u003c!-- template file=\"scripts/templates/preview.md\" start --\u003e\n\n\u003c!-- template end --\u003e\n\n***\n\n\u003c!-- # 📒 Table of contents  --\u003e\n\n# Table of contents\n\n*   [⌨️ Install](#️-install)\n\n    *   [First principles](#first-principles)\n    *   [Манифест](#манифест)\n    *   [Вопросы на которые стоит ответить создателю:](#вопросы-на-которые-стоит-ответить-создателю)\n    *   [Как запускать любой lsk-образный проект](#как-запускать-любой-lsk-образный-проект)\n    *   [Packages included in this repo](#packages-included-in-this-repo)\n\n*   [Auth](#auth)\n\n*   [Bunyan log levels](#bunyan-log-levels)\n\n    *   *   [Log levels](#log-levels)\n\n*   [Что еще нужно дописать](#что-еще-нужно-дописать)\n\n    *   [Getting Started](#getting-started)\n\n        *   [Requirements](#requirements)\n\n        *   [Структура проекта](#структура-проекта)\n\n        *   [Quick Start](#quick-start)\n\n            *   [1. Get the latest version](#1-get-the-latest-version)\n            *   [2. Run `npm install`](#2-run-npm-install)\n            *   [3. Run `npm start`](#3-run-npm-start)\n\n        *   [How to Build, Test, Deploy](#how-to-build-test-deploy)\n\n        *   [How to Update](#how-to-update)\n\n*   [📖 License](#-license)\n\n*   [👥 Contributors](#-contributors)\n\n*   [👏 Contributing](#-contributing)\n\n*   [📮 Any questions? Always welcome :)](#-any-questions-always-welcome-)\n\n# ⌨️ Install\n\n```sh\n# yarn\nyarn i @lskjs/lskjs \n\n# npm\nnpm i @lskjs/lskjs \n```\n\n***\n\n## First principles\n\n*   Асинхронность все везде\n*   Ленивость всех операций\n*   Декларативный подход для конечного программиста\n\n## Манифест\n\n    Стандарт бы и 5 лет назад, но авангардисты JS создали coffescript, babel и ts, потому что JS окостенел и не двигался. Так же как и ВКшники написали свой KPHP. \n\n    В этом пути нет ничего постыдного, то что еще вчера считалось ебанистикой, завтра может захватить умы своим удобством.\n\n    У меня нет априорной аппеляции к авторитетам из ECMA. \n\n    Я делаю среду комфортную для конечного программиста, который делает продукт для клиента. \n    Если стандарт позволяет написать удобное решение — то придумаем как.\n    Если для этого придется переписать стандарт — значит перепишем. \n    Благо babel максимальным образом позволяет писать собственные диалекты.\n\n    Не задача должна прогибаться под решением, а решение под задачу.\n\n## Вопросы на которые стоит ответить создателю:\n\n*   Пример Api на бэке handler\n*   Пример функции и как ее переопределить\n*   Модели монго как подключить\n*   Как достать, когда пишешь Api\n*   Роутер добавление роута и страницы\n*   CrudApi основные методы\n*   Как оборачивать ответ сервера, чтобы вернулся объект\n*   Как сделать свой стор\n*   Как достать стор на странице\n\n## Как запускать любой lsk-образный проект\n\n1.  git clone `repo`\n2.  npm install\n3.  npm run bootstrap\n4.\n\n*   copy .env.js if needed\n*   npm run dev *or*\n*   cd packages/`package` \u0026\u0026 npm run dev\n\n## Packages included in this repo\n\n|      Package         |    Description  | Activity | Version | Bundle | \u003cnobr\u003ePackage Size\u003c/nobr\u003e\n| -------------------- | --------------- | -------- | ------- | ------ | -------------------------\n| [apiquery](packages/apiquery) | http/s + websockets api client for Web, Node.js and React Native throw fetch or axios | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/apiquery.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/apiquery) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/apiquery.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/apiquery) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/apiquery?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/apiquery) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/apiquery)](https://packagephobia.now.sh/result?p=@lskjs/apiquery)\n| [apm](packages/apm) | LSK.js – apm – module Node.js agent for Elastic APM | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/apm.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/apm) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/apm.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/apm) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/apm?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/apm) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/apm)](https://packagephobia.now.sh/result?p=@lskjs/apm)\n| [auth](packages/auth) | LSK.js – auth – module for authorization by login and password and singup through social networks | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/auth.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/auth) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/auth.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/auth) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/auth?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/auth) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/auth)](https://packagephobia.now.sh/result?p=@lskjs/auth)\n| [autobind](packages/autobind) | LSK ux subrepo: autobind | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/autobind.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/autobind) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/autobind.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/autobind) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/autobind?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/autobind) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/autobind)](https://packagephobia.now.sh/result?p=@lskjs/autobind)\n| [billing](packages/billing) | LSK.js module for adding billing in cabinet | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/billing.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/billing) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/billing.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/billing) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/billing?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/billing) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/billing)](https://packagephobia.now.sh/result?p=@lskjs/billing)\n| [bots](packages/bots) | LSK.js module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots)](https://packagephobia.now.sh/result?p=@lskjs/bots)\n| [bots-base](packages/bots-base) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-base.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-base) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-base.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-base) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-base?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-base) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-base)](https://packagephobia.now.sh/result?p=@lskjs/bots-base)\n| [bots-plugin](packages/bots-plugin) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-plugin.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-plugin.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-plugin?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-plugin) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-plugin)](https://packagephobia.now.sh/result?p=@lskjs/bots-plugin)\n| [bots-plugin-debug](packages/bots-plugin-debug) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-plugin-debug.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-debug) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-plugin-debug.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-debug) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-plugin-debug?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-plugin-debug) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-plugin-debug)](https://packagephobia.now.sh/result?p=@lskjs/bots-plugin-debug)\n| [bots-plugin-menu](packages/bots-plugin-menu) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-plugin-menu.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-menu) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-plugin-menu.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-menu) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-plugin-menu?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-plugin-menu) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-plugin-menu)](https://packagephobia.now.sh/result?p=@lskjs/bots-plugin-menu)\n| [bots-plugin-notify](packages/bots-plugin-notify) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-plugin-notify.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-notify) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-plugin-notify.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-notify) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-plugin-notify?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-plugin-notify) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-plugin-notify)](https://packagephobia.now.sh/result?p=@lskjs/bots-plugin-notify)\n| [bots-plugin-polundra](packages/bots-plugin-polundra) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-plugin-polundra.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-polundra) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-plugin-polundra.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-polundra) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-plugin-polundra?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-plugin-polundra) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-plugin-polundra)](https://packagephobia.now.sh/result?p=@lskjs/bots-plugin-polundra)\n| [bots-plugin-portal](packages/bots-plugin-portal) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-plugin-portal.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-portal) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-plugin-portal.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-portal) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-plugin-portal?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-plugin-portal) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-plugin-portal)](https://packagephobia.now.sh/result?p=@lskjs/bots-plugin-portal)\n| [bots-provider](packages/bots-provider) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider)\n| [bots-provider-clubhouse](packages/bots-provider-clubhouse) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider-clubhouse.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-clubhouse) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider-clubhouse.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-clubhouse) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider-clubhouse?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider-clubhouse) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider-clubhouse)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider-clubhouse)\n| [bots-provider-discord](packages/bots-provider-discord) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider-discord.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-discord) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider-discord.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-discord) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider-discord?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider-discord) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider-discord)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider-discord)\n| [bots-provider-instagram](packages/bots-provider-instagram) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider-instagram.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-instagram) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider-instagram.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-instagram) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider-instagram?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider-instagram) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider-instagram)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider-instagram)\n| [bots-provider-slack](packages/bots-provider-slack) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider-slack.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-slack) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider-slack.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-slack) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider-slack?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider-slack) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider-slack)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider-slack)\n| [bots-provider-telegram](packages/bots-provider-telegram) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider-telegram.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-telegram) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider-telegram.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-telegram) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider-telegram?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider-telegram) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider-telegram)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider-telegram)\n| [bots-provider-twitter](packages/bots-provider-twitter) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider-twitter.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-twitter) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider-twitter.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-twitter) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider-twitter?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider-twitter) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider-twitter)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider-twitter)\n| [bots-provider-vk](packages/bots-provider-vk) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider-vk.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-vk) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider-vk.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-vk) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider-vk?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider-vk) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider-vk)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider-vk)\n| [bots-provider-whatsapp](packages/bots-provider-whatsapp) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider-whatsapp.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-whatsapp) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider-whatsapp.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-whatsapp) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider-whatsapp?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider-whatsapp) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider-whatsapp)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider-whatsapp)\n| [bots-router](packages/bots-router) | LSK.js router for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-router.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-router) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-router.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-router) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-router?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-router) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-router)](https://packagephobia.now.sh/result?p=@lskjs/bots-router)\n| [build-locales](packages/build-locales) | CLI for build i18 locales from Google spreadsheet | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/build-locales.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/build-locales) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/build-locales.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/build-locales) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/build-locales?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/build-locales) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/build-locales)](https://packagephobia.now.sh/result?p=@lskjs/build-locales)\n| [bunyan](packages/bunyan) | Light weight bunyan logger for a JSON logging library for node.js services without dtrace | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bunyan.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bunyan) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bunyan.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/bunyan) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bunyan?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bunyan) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bunyan)](https://packagephobia.now.sh/result?p=@lskjs/bunyan)\n| [config](packages/config) | LSK config. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/config.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/config) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/config.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/config) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/config?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/config) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/config)](https://packagephobia.now.sh/result?p=@lskjs/config)\n| [db](packages/db) | LSK.js module for working with mongodb database | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/db.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/db) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/db.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/db) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/db?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/db) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/db)](https://packagephobia.now.sh/result?p=@lskjs/db)\n| [elastic](packages/elastic) | LSK.js module for elastic search | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/elastic.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/elastic) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/elastic.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/elastic) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/elastic?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/elastic) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/elastic)](https://packagephobia.now.sh/result?p=@lskjs/elastic)\n| [event](packages/event) | LSK module for event. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/event.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/event) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/event.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/event) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/event?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/event) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/event)](https://packagephobia.now.sh/result?p=@lskjs/event)\n| [getspreadsheet](packages/getspreadsheet) | LSK getspreadsheet. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/getspreadsheet.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/getspreadsheet) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/getspreadsheet.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/getspreadsheet) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/getspreadsheet?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/getspreadsheet) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/getspreadsheet)](https://packagephobia.now.sh/result?p=@lskjs/getspreadsheet)\n| [grant](packages/grant) | LSK module for grant. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/grant.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/grant) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/grant.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/grant) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/grant?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/grant) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/grant)](https://packagephobia.now.sh/result?p=@lskjs/grant)\n| [i18](packages/i18) | LSK module for internationalization with i18next. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/i18.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/i18) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/i18.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/i18) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/i18?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/i18) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/i18)](https://packagephobia.now.sh/result?p=@lskjs/i18)\n| [kafka](packages/kafka) | LSK module for kafka. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/kafka.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/kafka) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/kafka.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/kafka) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/kafka?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/kafka) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/kafka)](https://packagephobia.now.sh/result?p=@lskjs/kafka)\n| [launcher](packages/launcher) | LSK Launcher. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/launcher.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/launcher) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/launcher.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/launcher) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/launcher?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/launcher) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/launcher)](https://packagephobia.now.sh/result?p=@lskjs/launcher)\n| [linkall](packages/linkall) | LSK link all. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/linkall.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/linkall) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/linkall.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/linkall) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/linkall?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/linkall) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/linkall)](https://packagephobia.now.sh/result?p=@lskjs/linkall)\n| [log](packages/log) | LSK log. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/log.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/log) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/log.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/log) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/log?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/log) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/log)](https://packagephobia.now.sh/result?p=@lskjs/log)\n| [log](packages/log) | Логгер совмещающий лучшие черты morgan, winston, bunyan, logrus. debug. Базируется на debug-level. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/log.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/log) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/log.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/log) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/log?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/log) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/log)](https://packagephobia.now.sh/result?p=@lskjs/log)\n| [mailer](packages/mailer) | LSK module for send and receive emails. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/mailer.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/mailer) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/mailer.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/mailer) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/mailer?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/mailer) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/mailer)](https://packagephobia.now.sh/result?p=@lskjs/mailer)\n| [mobx](packages/mobx) | LSK module for mobx. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/mobx.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/mobx) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/mobx.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/mobx) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/mobx?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/mobx) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/mobx)](https://packagephobia.now.sh/result?p=@lskjs/mobx)\n| [module](packages/module) | Module system with dependency injection, event emitter, logger and submodules tree | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/module.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/module) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/module.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/module) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/module?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/module) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/module)](https://packagephobia.now.sh/result?p=@lskjs/module)\n| [permit](packages/permit) | LSK module for one time codes and permits. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/permit.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/permit) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/permit.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/permit) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/permit?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/permit) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/permit)](https://packagephobia.now.sh/result?p=@lskjs/permit)\n| [proxy](packages/proxy) | LSK module for proxy. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/proxy.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/proxy) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/proxy.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/proxy) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/proxy?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/proxy) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/proxy)](https://packagephobia.now.sh/result?p=@lskjs/proxy)\n| [rabbit](packages/rabbit) | LSK module for rabbit. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/rabbit.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/rabbit) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/rabbit.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/rabbit) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/rabbit?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/rabbit) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/rabbit)](https://packagephobia.now.sh/result?p=@lskjs/rabbit)\n| [reactapp](packages/reactapp) | LSK ux subrepo: reactapp | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/reactapp.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/reactapp) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/reactapp.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/reactapp) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/reactapp?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/reactapp) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/reactapp)](https://packagephobia.now.sh/result?p=@lskjs/reactapp)\n| [rlog](packages/rlog) | LSK module for remote logger. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/rlog.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/rlog) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/rlog.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/rlog) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/rlog?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/rlog) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/rlog)](https://packagephobia.now.sh/result?p=@lskjs/rlog)\n| [scylla](packages/scylla) | LSK module for scylla. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/scylla.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/scylla) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/scylla.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/scylla) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/scylla?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/scylla) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/scylla)](https://packagephobia.now.sh/result?p=@lskjs/scylla)\n| [sequelize](packages/sequelize) | LSK module for sequelize. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/sequelize.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/sequelize) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/sequelize.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/sequelize) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/sequelize?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/sequelize) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/sequelize)](https://packagephobia.now.sh/result?p=@lskjs/sequelize)\n| [server](packages/server) | LSK server. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/server.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/server) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/server.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/server) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/server?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/server) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/server)](https://packagephobia.now.sh/result?p=@lskjs/server)\n| [server-api](packages/server-api) | LSK server-api. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/server-api.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/server-api) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/server-api.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/server-api) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/server-api?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/server-api) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/server-api)](https://packagephobia.now.sh/result?p=@lskjs/server-api)\n| [sh](packages/sh) | LSK ux subrepo: sh | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/sh.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/sh) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/sh.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/sh) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/sh?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/sh) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/sh)](https://packagephobia.now.sh/result?p=@lskjs/sh)\n| [sms](packages/sms) | LSK module for sms. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/sms.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/sms) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/sms.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/sms) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/sms?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/sms) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/sms)](https://packagephobia.now.sh/result?p=@lskjs/sms)\n| [tbot](packages/tbot) | LSK module. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/tbot.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/tbot) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/tbot.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/tbot) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/tbot?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/tbot) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/tbot)](https://packagephobia.now.sh/result?p=@lskjs/tbot)\n| [uapp](packages/uapp) | LSK universal react app wrapper | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/uapp.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/uapp) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/uapp.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/uapp) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/uapp?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/uapp) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/uapp)](https://packagephobia.now.sh/result?p=@lskjs/uapp)\n| [upload](packages/upload) | LSK module for uploading files. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/upload.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/upload) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/upload.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/upload) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/upload?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/upload) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/upload)](https://packagephobia.now.sh/result?p=@lskjs/upload)\n| [utils](packages/utils) | LSK.js – utils – helpers and functions | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/utils.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/utils) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/utils.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/utils) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/utils?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/utils) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/utils)](https://packagephobia.now.sh/result?p=@lskjs/utils)\n| [worker](packages/worker) | LSK module for worker. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/worker.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/worker) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/worker.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/worker) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/worker?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/worker) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/worker)](https://packagephobia.now.sh/result?p=@lskjs/worker)\n| [add-to-calendar](packages/add-to-calendar) | LSK ux subrepo: extra | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/add-to-calendar.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/add-to-calendar) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/add-to-calendar.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/add-to-calendar) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/add-to-calendar?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/add-to-calendar) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/add-to-calendar)](https://packagephobia.now.sh/result?p=@lskjs/add-to-calendar)\n| [article](packages/article) | LSK ux subrepo: article | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/article.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/article) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/article.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/article) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/article?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/article) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/article)](https://packagephobia.now.sh/result?p=@lskjs/article)\n| [avatar](packages/avatar) | LSK ux subrepo: avatar | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/avatar.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/avatar) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/avatar.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/avatar) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/avatar?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/avatar) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/avatar)](https://packagephobia.now.sh/result?p=@lskjs/avatar)\n| [button](packages/button) | LSK ux subrepo: button | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/button.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/button) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/button.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/button) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/button?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/button) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/button)](https://packagephobia.now.sh/result?p=@lskjs/button)\n| [button2](packages/button2) | LSK ux subrepo: button | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/button2.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/button2) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/button2.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/button2) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/button2?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/button2) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/button2)](https://packagephobia.now.sh/result?p=@lskjs/button2)\n| [chat](packages/chat) | LSK ux subrepo: chat | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/chat.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/chat) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/chat.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/chat) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/chat?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/chat) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/chat)](https://packagephobia.now.sh/result?p=@lskjs/chat)\n| [cookie-consent](packages/cookie-consent) | LSK ux subrepo: cookie-consent | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/cookie-consent.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/cookie-consent) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/cookie-consent.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/cookie-consent) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/cookie-consent?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/cookie-consent) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/cookie-consent)](https://packagephobia.now.sh/result?p=@lskjs/cookie-consent)\n| [css](packages/css) | LSK ux subrepo: css | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/css.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/css) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/css.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/css) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/css?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/css) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/css)](https://packagephobia.now.sh/result?p=@lskjs/css)\n| [dash](packages/dash) | LSK.js – Dash – React components for your own dashboard | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/dash.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/dash) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/dash.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/dash) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/dash?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/dash) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/dash)](https://packagephobia.now.sh/result?p=@lskjs/dash)\n| [dashboard](packages/dashboard) | LSK ux subrepo: dashboard | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/dashboard.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/dashboard) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/dashboard.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/dashboard) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/dashboard?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/dashboard) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/dashboard)](https://packagephobia.now.sh/result?p=@lskjs/dashboard)\n| [dev](packages/dev) | LSK ux subrepo: ui-dev | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/dev.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/dev) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/dev.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/dev) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/dev?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/dev) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/dev)](https://packagephobia.now.sh/result?p=@lskjs/dev)\n| [docs](packages/docs) | lskjs docs | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/docs.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/docs) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/docs.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/docs) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/docs?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/docs) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/docs)](https://packagephobia.now.sh/result?p=@lskjs/docs)\n| [downloads](packages/downloads) | LSK ux subrepo: download | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/downloads.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/downloads) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/downloads.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/downloads) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/downloads?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/downloads) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/downloads)](https://packagephobia.now.sh/result?p=@lskjs/downloads)\n| [extra](packages/extra) | LSK ux subrepo: extra | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/extra.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/extra) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/extra.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/extra) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/extra?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/extra) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/extra)](https://packagephobia.now.sh/result?p=@lskjs/extra)\n| [flag](packages/flag) | LSK ux subrepo: flag | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/flag.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/flag) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/flag.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/flag) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/flag?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/flag) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/flag)](https://packagephobia.now.sh/result?p=@lskjs/flag)\n| [form](packages/form) | LSK ux subrepo: form | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/form.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/form) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/form.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/form) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/form?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/form) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/form)](https://packagephobia.now.sh/result?p=@lskjs/form)\n| [grid](packages/grid) | LSK ux subrepo: grid | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/grid.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/grid) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/grid.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/grid) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/grid?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/grid) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/grid)](https://packagephobia.now.sh/result?p=@lskjs/grid)\n| [gridtable](packages/gridtable) | LSK ux subrepo: gridtable | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/gridtable.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/gridtable) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/gridtable.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/gridtable) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/gridtable?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/gridtable) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/gridtable)](https://packagephobia.now.sh/result?p=@lskjs/gridtable)\n| [image](packages/image) | LSK ux subrepo: image | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/image.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/image) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/image.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/image) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/image?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/image) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/image)](https://packagephobia.now.sh/result?p=@lskjs/image)\n| [landing](packages/landing) | LSK ux subrepo: landing | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/landing.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/landing) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/landing.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/landing) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/landing?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/landing) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/landing)](https://packagephobia.now.sh/result?p=@lskjs/landing)\n| [link](packages/link) | LSK ux subrepo: link | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/link.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/link) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/link.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/link) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/link?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/link) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/link)](https://packagephobia.now.sh/result?p=@lskjs/link)\n| [list](packages/list) | LSK ux subrepo: list | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/list.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/list) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/list.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/list) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/list?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/list) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/list)](https://packagephobia.now.sh/result?p=@lskjs/list)\n| [modal](packages/modal) | LSK ux subrepo: modal | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/modal.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/modal) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/modal.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/modal) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/modal?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/modal) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/modal)](https://packagephobia.now.sh/result?p=@lskjs/modal)\n| [navbar](packages/navbar) | LSK ux subrepo: navbar | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/navbar.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/navbar) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/navbar.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/navbar) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/navbar?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/navbar) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/navbar)](https://packagephobia.now.sh/result?p=@lskjs/navbar)\n| [notification](packages/notification) | LSK ux subrepo: notification | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/notification.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/notification) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/notification.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/notification) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/notification?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/notification) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/notification)](https://packagephobia.now.sh/result?p=@lskjs/notification)\n| [page](packages/page) | LSK ux subrepo: page | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/page.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/page) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/page.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/page) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/page?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/page) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/page)](https://packagephobia.now.sh/result?p=@lskjs/page)\n| [progress](packages/progress) | LSK ux subrepo: progress | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/progress.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/progress) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/progress.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/progress) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/progress?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/progress) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/progress)](https://packagephobia.now.sh/result?p=@lskjs/progress)\n| [scroll](packages/scroll) | LSK ux subrepo: scroll | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/scroll.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/scroll) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/scroll.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/scroll) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/scroll?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/scroll) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/scroll)](https://packagephobia.now.sh/result?p=@lskjs/scroll)\n| [slide](packages/slide) | LSK ux subrepo: slide | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/slide.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/slide) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/slide.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/slide) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/slide?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/slide) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/slide)](https://packagephobia.now.sh/result?p=@lskjs/slide)\n| [t](packages/t) | LSK ux subrepo: t | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/t.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/t) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/t.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/t) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/t?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/t) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/t)](https://packagephobia.now.sh/result?p=@lskjs/t)\n| [tag](packages/tag) | LSK ux subrepo: tag | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/tag.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/tag) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/tag.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/tag) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/tag?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/tag) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/tag)](https://packagephobia.now.sh/result?p=@lskjs/tag)\n| [theme](packages/theme) | LSK ux subrepo: theme | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/theme.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/theme) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/theme.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/theme) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/theme?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/theme) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/theme)](https://packagephobia.now.sh/result?p=@lskjs/theme)\n| [typo](packages/typo) | LSK ux subrepo: typo | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/typo.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/typo) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/typo.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/typo) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/typo?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/typo) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/typo)](https://packagephobia.now.sh/result?p=@lskjs/typo)\n| [ui](packages/ui) | LSK ux subrepo: ui | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/ui.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/ui) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/ui.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/ui) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/ui?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/ui) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/ui)](https://packagephobia.now.sh/result?p=@lskjs/ui)\n| [ui2](packages/ui2) | LSK ux subrepo: ui2 | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/ui2.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/ui2) \t|  [![NPM Badge](https://img.shields.io/npm/v/@lskjs/ui2.svg?logo=npm\\\u0026label=\\\u0026style=flat-square)](https://www.npmjs.com/package/@lskjs/ui2) \t|  [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/ui2?label=\\\u0026style=flat-square)](https://bundlephobia.com/result?p=@lskjs/ui2) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/ui2)](https://packagephobia.now.sh/result?p=@lskjs/ui2)\n\nВдохновлен:\n\n*   [Express.js](): концепция средних слоев, способ их конфигурирования\n*   [Sails.js \u0026 Grails.js]()\n*   [Loopback](egoegoegoegoegoegoeg)\n*   https://github.com/developit/express-es6-rest-api/\n*   react-starter-kit: Фронт, Сборка на ES6 без Gulp, Grunt. Конфиг webpack'а\n\n\u003c!----\u003e\n\n    this.useMiddlewares()\n    this.useRoutes()\n    this.useDefaultRoute()\n\nА также:\n\n*   Express async router\n*   Json Web Token\n*   Bunyan logger with updated view\n\n# Auth\n\nТокен можно прикладывать следующими методами\n\n*   в Header `Authorization: Bearer %USER_TOKEN%`\n*   в Header `X-Access-Token: %USER_TOKEN%`\n*   в Cookie: `token=%USER_TOKEN%`\n*   в GET параметр: `?token=%USER_TOKEN%`\n\n# Bunyan log levels\n\nLSKit принимает стоковый Bunyan логгер\n\n```javascript\nlog.trace('Starting method');\n\nif (!req.user) {\n  log.fatal('Cannot get User');\n  throw new Error('Cannot get User')\n}\n\nlog.info('Method success');\n```\n\n### Log levels\n\n*   fatal\n*   error\n*   warn\n*   info\n*   debug\n*   trace\n\n# Что еще нужно дописать\n\n*   Что из себя представляет модуль\n*   Что такое мидлвара?\n*   Что такое ресурс? Resource ENDPOINT\n*   Универсальная  модель?\n*   Документация со swagger\n\n## Getting Started\n\n### Requirements\n\n*   Mac OS X, Windows, or Linux\n*   [Node.js](https://nodejs.org/) v6.5 or newer\n*   `npm` v3.10 or newer (new to [npm](https://docs.npmjs.com/)?)\n*   `node-gyp` prerequisites mentioned [here](https://github.com/nodejs/node-gyp)\n*   Text editor or IDE pre-configured with React/JSX/Flow/ESlint ([learn more](./how-to-configure-text-editors.md))\n\n### Структура проекта\n\nBefore you start, take a moment to see how the project structure looks like:\n\n    .\n    ├── /build/                     # Директория в которую билдится проект\n    ├── /node_modules/              # Сторонние библиотеки и утилиты\n    ├── /src/                       # Исходный код приложения\n    │   ├── /CoreApp/               # Базовое приложение\n    │   │   ├── /api/               # Интерфейс клиент-серверного взаимодействия\n    │   │   ├── /middlewares/       # Среднии слои express\n    │   │   ├── /models/            # Модели базы данных\n    │   │   ├── /resourses/         # Ресурсы\n    │   │   ├── CoreApp.js          # Класс-реализация базового приложения\n    │   │   ├── requests.js         # Реквесты приложения\n    │   │   └── responses.js        # Респонсы приложения\n    │   ├── /ReactApp/              # Базовое приложение\n    │   │   ├── /compoents/         # React компоненты\n    │   │   ├── /Html/              # Класс-реализа\n    │   │   ├── /Html/              # Класс-реализа\n    │   │   ├── /Html/              # Класс-реализа\n    │   │   ├── /routes/            # Роутер с страницами\\экранами, которые являются React компонентами\n    │   │   ├── /models/            # Модели базы данных\n    │   │   ├── /resourses/         # Ресурсы\n    │   │   ├── /routes/            # Роутер с страницами\\экранами, которые являются React компонентами\n    │   │   ├── /stores/            # Сторы React приложения\n    │   │   ├   └── /AppStore.js    # Главный стор React приложения\n    │   │   ├── ReactApp.client.js  # Класс-реализация базового приложения на клиенте\n    │   │   ├── ReactApp.server.js  # Класс-реализация базового приложения на сервере\n    │   │   ├── requests.js         # Реквесты приложения\n    │   │   └── responses.js        # Респонсы приложения\n    │   ├── /client.js              # Точка входа Клиентского приложения\n    │   ├── /config                 # Общие настройки проекта\n    │   └── /server.js              # Точка входа Серверного приложения\n    ├── /test/                      # Модульные и интеграционные тесты\n    ├── /tools/                     # Скрипты и утилиты для автоматизации сборки проекта\n    │   ├── /config.js              # Конфигурация сборки проекта\n    │   ├── /run.js                 # Система запуска сборки\n    │   └── /webpack.config.js      # Конфигурация Вебпака для клинстких и серверных бандлов\n    └── package.json                # Список сторонних библиотек и утилит\n\n**Note**: The current version of RSK does not contain a Flux implementation.\nIt can be easily integrated with any Flux library of your choice. The most\ncommonly used Flux libraries are [Flux](http://facebook.github.io/flux/),\n[Redux](http://redux.js.org/), and [Relay](http://facebook.github.io/relay/).\n\n### Quick Start\n\n#### 1. Get the latest version\n\nYou can start by cloning the latest version of React Starter Kit (RSK) on your\nlocal machine by running:\n\n```shell\n$ git clone -o lego-starter-kit -b master --single-branch \\\n      https://github.com/isuvorov/lego-starter-kit.git MyApp\n$ cd MyApp\n```\n\nAlternatively, you can start a new project based on RSK right from\n[WebStorm IDE](https://www.jetbrains.com/webstorm/help/create-new-project-react-starter-kit.html),\nor by using [Yeoman generator](https://www.npmjs.com/package/generator-react-fullstack).\n\n#### 2. Run `npm install`\n\nThis will install both run-time project dependencies and developer tools listed\nin [package.json](../package.json) file.\n\n#### 3. Run `npm start`\n\nThis command will build the app from the source files (`/src`) into the output\n`/build` folder. As soon as the initial build completes, it will start the\nNode.js server (`node build/server.js`) and [Browsersync](https://browsersync.io/)\nwith [HMR](https://webpack.github.io/docs/hot-module-replacement) on top of it.\n\n\u003e \u003chttp://localhost:3000/\u003e — Node.js server (`build/server.js`)\u003cbr\u003e\n\u003e \u003chttp://localhost:3000/graphql\u003e — GraphQL server and IDE\u003cbr\u003e\n\u003e \u003chttp://localhost:3001/\u003e — BrowserSync proxy with HMR, React Hot Transform\u003cbr\u003e\n\u003e \u003chttp://localhost:3002/\u003e — BrowserSync control panel (UI)\n\nNow you can open your web app in a browser, on mobile devices and start\nhacking. Whenever you modify any of the source files inside the `/src` folder,\nthe module bundler ([Webpack](http://webpack.github.io/)) will recompile the\napp on the fly and refresh all the connected browsers.\n\n![browsersync](https://dl.dropboxusercontent.com/u/16006521/react-starter-kit/brwosersync.jpg)\n\nNote that the `npm start` command launches the app in `development` mode,\nthe compiled output files are not optimized and minimized in this case.\nYou can use `--release` command line argument to check how your app works\nin release (production) mode:\n\n```shell\n$ npm start -- --release\n```\n\n*NOTE: double dashes are required*\n\n### How to Build, Test, Deploy\n\nIf you need just to build the app (without running a dev server), simply run:\n\n```shell\n$ npm run build\n```\n\nor, for a production build:\n\n```shell\n$ npm run build -- --release\n```\n\nor, for a production docker build:\n\n```shell\n$ npm run build -- --release --docker\n```\n\n*NOTE: double dashes are required*\n\nAfter running this command, the `/build` folder will contain the compiled\nversion of the app. For example, you can launch Node.js server normally by\nrunning `node build/server.js`.\n\nTo check the source code for syntax errors and potential issues run:\n\n```shell\n$ npm run lint\n```\n\nTo launch unit tests:\n\n```shell\n$ npm test              # Run unit tests with Mocha\n$ npm run test:watch    # Launch unit test runner and start watching for changes\n```\n\nBy default, [Mocha](https://mochajs.org/) test runner is looking for test files\nmatching the `src/**/*.test.js` pattern. Take a look at `src/components/Layout/Layout.test.js`\nas an example.\n\nTo deploy the app, run:\n\n```shell\n$ npm run deploy\n```\n\nThe deployment script `tools/deploy.js` is configured to push the contents of\nthe `/build` folder to a remote server via Git. You can easily deploy your app\nto [Azure Web Apps](https://azure.microsoft.com/en-us/services/app-service/web/),\nor [Heroku](https://www.heroku.com/) this way. Both will execute `npm install --production`\nupon receiving new files from you. Note, you should only deploy the contents\nof the `/build` folder to a remote server.\n\n### How to Update\n\nIf you need to keep your project up to date with the recent changes made to RSK,\nyou can always fetch and merge them from [this repo](https://github.com/kriasoft/react-starter-kit)\nback into your own project by running:\n\n```shell\n$ git checkout master\n$ git fetch lego-starter-kit\n$ git merge lego-starter-kit/master\n$ npm install\n```\n\n# 📖 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details\n\n# 👥 Contributors\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\n\u003c!-- prettier-ignore-start --\u003e\n\n\u003c!-- markdownlint-disable --\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://isuvorov.com\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/1056977?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eIgor Suvorov\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"lskjs/lskjs///commits?author=isuvorov\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#design-isuvorov\" title=\"Design\"\u003e🎨\u003c/a\u003e \u003ca href=\"#ideas-isuvorov\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\n# 👏 Contributing\n\n1.  Fork it (\u003chttps://github.com/yourname/yourproject/fork\u003e)\n2.  Create your feature branch (`git checkout -b features/fooBar`)\n3.  Commit your changes (`git commit -am 'feat(image): Add some fooBar'`)\n4.  Push to the branch (`git push origin feature/fooBar`)\n5.  Create a new Pull Request\n\n# 📮 Any questions? Always welcome :)\n\n*   [Email](mailto:hi@isuvorov.com)\n*   [LSK.news – Telegram channel](https://t.me/lskjs)\n*   [Спроси нас в телеграме ;)](https://t.me/lskjschat)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flskjs%2Flskjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flskjs%2Flskjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flskjs%2Flskjs/lists"}