open-index/open-npm huggingface dataset:
npm package: @id6/express
Description: id6 ExpressJS integration
Author: Geoffroy Empain
Latest version: 1.1.0

<p align="center">
  <a href="https://id6.io">
    <img alt="id6-logo" src="https://raw.githubusercontent.com/id6/id6-brand/latest/logo/id6-logo-purple.svg" width="100"/>
  </a>
</p>
<h1 align="center">id6-express</h1>
<p align="center">Express middleware for id6</p>

<p align="center">
  <img alt="npm" src="https://img.shields.io/npm/v/@id6/express">
</p>

## Usage

Install dependencies:

```
npm i @id6/express cookie-parser dotenv
```

Setup authentication:

```js
const express = require('express');
const express = require('cors');
const { authenticate, isAuthenticated } = require('id6-express');

const app = express();

app.use(cors({
  // 1. allow browsers to send the auth cookie
  credentials: true,
}));
// 2. make sure express parses cookies
app.use(cookieParser());
// 3. add the auth middleware
app.use(authenticate({
  url: 'https://authorize.company.com',
  secret: 'changeMe',
}));

app.get('/hello', (req, res) => {
  const user = req.user; // set by id6
  res.json(user ? 'Authenticated' : 'Anonymous');
});
app.get('/private', isAuthenticated, (req, res) => {
  const user = req.user; // set by id6
  res.json(user ? 'Authenticated' : 'Anonymous');
});

app.listen(8000, () => console.log(`Listening on port 8000`));
```
npm package: @id6/react
Description: id6 react integration
Author: id6
Latest version: 1.0.2

<p align="center">
  <a href="https://id6.io">
    <img alt="id6-logo" src="https://raw.githubusercontent.com/id6/id6-brand/latest/logo/id6-logo-purple.svg" width="100"/>
  </a>
</p>
<h1 align="center">id6-react</h1>
<p align="center">React integration for id6</p>

<p align="center">
  <img alt="npm" src="https://img.shields.io/npm/v/@id6/react">
</p>

## Install

```bash
npm install --save @id6/react
```

## Usage

```tsx
import React from 'react'
import { AuthProvider, useAuth } from '@id6/react'

function Home() {
  const { loading, error, user, signOut } = useAuth();

  const logout = () => {
    signOut().catch(console.error);
  };

  return loading ? (
    <p>Loading...</p>
  ) : error ? (
    <p>Error: {error.message}</p>
  ) : (
    <div>
      {user ? (
        <p>
          Signed in as {user.name}
          <button type="button" onClick={logout}>Sign out</button>
        </p>
      ) : (
        <a href={process.env.REACT_APP_ID6_LOGIN_URL}>Sign in</a>
      )}
    </div>
  );
}

function App() {
  return (
    <AuthProvider url="http://id6.company.com">
      <Home/>
    </AuthProvider>
  );
}
```

## Development

```bash
npm i
npm start
```

To test the example app:

``` bash
cd example
npm i
npm start
```

## License

MIT © [id6](https://github.com/id6)
npm package: @ida-dar/id-generator
Description: Random ID generator
Latest version: 1.0.1

# @ida-dar/id-generator

randomID is a module creating a random string with letters and numbers. The string's length is customizable.

# Usage
```const randomID = require('@ida-dar/id-generator');```

```randomId(); // to generate random id```

# Installation

```yarn add @ida-dar/randomid-generator```

or 

```npm i @ida-dar/randomid-generator```
npm package: @idagio/assert-env
Description: Utility function for asserting node-env variables have a non null value before server startup
Author: IDAGIO GmbH
Latest version: 1.0.0

# @IDAGIO/assert-env
Utility function for asserting node-env variables have a non null value before server startup

Works as a compliment to [node-assert-env](https://github.com/wilmoore/node-assert-env) which only asserts the presence of keys and that the keys have been assigned. This library asserts presence, non null values and non empty string values.

## See Also

Our cookie management module is available as: [`@IDAGIO/cookie-middleware`](https://github.com/IDAGIO/idagio-cookie-middleware)

Our session management module is available as: [`@IDAGIO/session-middleware`](https://github.com/IDAGIO/idagio-session-middleware)

## Usage

Call this module before before starting up your server. If the assertions fail, the node process will exit and print what values are missing.

```js
require('@idagio/assert-env')([
  'KEY1',
  'KEY2',
  'KEY3'
]);

// Start your server here
```
npm package: @idagio/intl-utils
Description: Utilities for managing l10n of react apps
Author: IDAGIO
Latest version: 0.0.4

# @idagio/intl-utils
This package acts as a wrapper around [babel-plugin-react-intl](https://github.com/yahoo/babel-plugin-react-intl) and exposes utility functions meant to make it easier to use in an automation workflow.

You can read more about the background of this package [in this medium article](https://medium.com/@david_naas/a51ca600c430). The article explains this package's intended use and how it's different from using the babel plugin directly.

Also make sure to check out and follow the guidelines of [react-intl](https://github.com/yahoo/react-intl) and [babel-plugin-react-intl](https://github.com/yahoo/babel-plugin-react-intl).

## Installation
For global cli use only:
```
$ npm install -g @idagio/intl-utils
```

For other uses:
```
$ npm install @idagio/intl-utils
```

#### A note on babel
It is not required of the user to install `babel-plugin-react-intl`, this dependency is already provided and will automatically be appended to the babel config. However, it is important that the babel config provided contains the correct presets and that these presets are installed. Otherwise this package might not be able to parse the provided source files.  

### Usage
```js
const { lint, extract } = require('@idagio/intl-utils');
```
#### extract
Traverses all `.js` and `.jsx` files in your specified src directory and extracts their `react-intl` messages. It will then construct a json file out of these and write it to the specified location. This json file is intended to be used as `react-intl`'s default locale data.
##### Arguments
1. `sourcePath` (*String*): relative path to your source directory
2. `targetPath` (*String*): relative path to resulting json file
3. `babelConfigPath` (*String*): relative OR absolute path to your babelrc file.

*Example usage*:
```js
extract('src', 'locales/en-GB.json', './.babelrc');
```
#### lint
Traverses all `.js` and `.jsx` files in your specified src directory and checks for potential problems. The linter can error because `babel-plugin-react-intl` errors or because messages were duplicated incorrectly across files. It is not allowed to define two messages with the same `id` but with differing `defaultMessage`.
##### Arguments
1. `sourcePath` (*String*): relative path to your source directory
2. `babelConfigPath` (*String*): relative OR absolute path to your babelrc file.

*Example usage*:
```js
lint('src', './.babelrc');
```

### CLI
The package can also be used as a CLI tool. The commands and arguments are completely analogous to the ones in the programming interface.
##### extract  
```
$ intl-utils extract <path-to-src> <target-file-path> <babel-config-path>
```
##### lint
```
$ intl-utils lint <path-to-src> <babel-config-path>
```
npm package: @idagio/shortwreck
Description: A nice short wrapper for Wreck
Author: IDAGIO GmbH
Latest version: 1.0.0

# @idagio/shortwreck

A nice short wrapper for [Wreck](https://github.com/hapijs/wreck).

## Usage

```js
const ShortWreck = require('@idagio/shortwreck');

const ApiClient = ShortWreck({
  json: true
});

ApiClient.request("GET", "https://httpbin.org/get", (err, res, payload) => {
  if (err) {
    console.log(err);
    return;
  }

  console.log(res);
  console.log(payload);
});
```

## API

### `new ShortWreck(options)`

Takes the exact same options as wreck's [`defaults(options)`](https://github.com/hapijs/wreck#basic).

### `ShortWreck.prototype.request(method, uri /*, [options], callback */)`

- `method` - A string specifying the HTTP request method, defaulting to 'GET'.
- `uri` - The URI of the requested resource.
- `options` - Optional config object containing settings for both `request` and
  `read` operations. This will override the options initially passed to `new ShortWreck(options)`.
- `callback` - The callback function using the signature `function (err, response, payload)` where:
    - `err` - Any error that may have occurred during handling of the request.
    - `response` - The [HTTP Incoming Message](http://nodejs.org/api/http.html#http_http_incomingmessage)
       object, which is also a readable stream.
    - `payload` - The payload in the form of a Buffer or (optionally) parsed JavaScript object (JSON).

Returns an instance of the node.js [ClientRequest](http://nodejs.org/api/http.html#http_class_http_clientrequest) object.
npm package: @idahoedokpayi/basic-landing-page-components
Description: React Components module for basic-landing-page-components
Author: Idaho Edokpayi
Latest version: 0.3.3

# Basic Landing Page Components

A central respository for various React Components used in [Basic Landing Pages](https://github.com/utdcometsoccer/basiclandingpage).

## Getting Started
### Installation
npm i @idahoedokpayi/basic-landing-page-components
### Local Development
npm run start 
### Prerequisites
React version 16.13.1
React DOM version 16.13.1
Gatsby version 2.21.9
jQuery version 3.5.0
Bootstrap version 4.5
Node version 12.13.1
NPM version 6.14.5


## Built With

* [Webpack](https://webpack.js.org/) - Webpack is our build pipeline
* [React](https://reactjs.org/) - React components are the end product
* [React Styleguidist](https://react-styleguidist.js.org/) - Used to preview various components and understand their use
* [Typescript](https://www.typescriptlang.org/) - Definition files provided
* [Bootstrap](https://www.typescriptlang.org/) - UI Framework

## Contributing

All contributions welcome. Please be nice!

## Versioning

We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags). 

## Authors

* **Idaho Edokpayi** - *Initial work* - [Basic Landing Pages](https://github.com/utdcometsoccer/basiclandingpage)

## License

This project is licensed under the MIT License - see the [LICENSE.md](..\..\LICENSE.md) file for details

## Acknowledgments

* Hat tip to anyone whose code was used
npm package: @idahoedokpayi/basic-landing-page-images
Description: Image files for Basic Landing Pages
Author: Idaho Edokpayi
Latest version: 0.1.10

# Basic Landing Page Images

A central respository for various image files used in [Basic Landing Pages](https://github.com/utdcometsoccer/basiclandingpage).

## Getting Started

npm i @idahoedokpayi/basic-landing-page-images

### Prerequisites
Node version 12.13.1
NPM version 6.14.5

## Deployment

Add additional notes about how to deploy this on a live system

## Contributing

All contributions welcome. Please be nice!

## Versioning

We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags). 

## Authors

* **Idaho Edokpayi** - *Initial work* - [Basic Landing Pages](https://github.com/utdcometsoccer/basiclandingpage)

## License

This project is licensed under the MIT License - see the [LICENSE.md](..\..\LICENSE.md) file for details

## Acknowledgments

* Hat tip to anyone whose code was used
npm package: @idahoedokpayi/basic-landing-page-svg
Description: SVG files exposed as React components for Basic Landing Page Components
Author: Idaho Edokpayi
Latest version: 1.0.0

# Basic Landing Page SVG

A central respository for various SVG files used in [Basic Landing Pages](https://github.com/utdcometsoccer/basiclandingpage).

## Getting Started

npm i @idahoedokpayi/basic-landing-page-svg

### Prerequisites
Node version 12.13.1
NPM version 6.14.5

## Built With

* [Webpack](https://webpack.js.org/) - Webpack is our build pipeline
* [React](https://reactjs.org/) - React components are the end product
* [SVGR](https://react-svgr.com/docs/webpack/) - SVGR to convert svg files into React components
* [Typescript](https://www.typescriptlang.org/) - Definition files provided


## Contributing

All contributions welcome. Please be nice!

## Versioning

We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags). 

## Authors

* **Idaho Edokpayi** - *Initial work* - [Basic Landing Pages](https://github.com/utdcometsoccer/basiclandingpage)

## License

This project is licensed under the MIT License - see the [LICENSE.md](..\..\LICENSE.md) file for details

## Acknowledgments

* Hat tip to anyone whose code was used
npm package: @idahoedokpayi/gatsby-theme-bootstrap-album
Description: Gatsby Theme based on Bootstrap 4 album
Author: Idaho Edokpayi
Latest version: 0.1.0

# Bootstrap Album

Gatsby theme copied from the [Bootstrap Album example](https://getbootstrap.com/docs/4.4/examples/album/)

# To include
```javascript
module.exports = {
  plugins: [
    {
        resolve: '@idahoedokpayi/gatsby-theme-bootstrap-album',
        options: {excludemdx:false} // excludemdx should be true if gatsby-plugin-mdx has already been included. defaults to false
    }
  ]
};
```
## Built With

* [Typescript](https://www.typescriptlang.org/) - Definition files provided
* [bootstrap](https://getbootstrap.com)
* [jQuery](https://jquery.com/)
* [popper.js](https://popper.js.org/)

## How to install

```
npm i @idahoedokpayi/gatsby-theme-bootstrap-album
```

## When do I use this plugin?

When you want to build a photo album or portfolio  

## Contributing

All contributions welcome. Please be nice!

## Versioning

We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags). 

## Authors

* **Idaho Edokpayi** - *Initial work* - [Basic Landing Pages](https://github.com/utdcometsoccer/basiclandingpage)

## License

This project is licensed under the MIT License - see the [LICENSE.md](..\..\LICENSE.md) file for details

## Acknowledgments

* Hat tip to anyone whose code was used
npm package: @idahoedokpayi/gatsby-theme-corporate-homepage
Description: Gatsby Theme utilizing Bootstrap for corporate home page
Author: Idaho Edokpayi
Latest version: 0.0.15

## Description
# Corporate Home Page:
Gatsby theme for Corporate home pages 

## Built With

* [Typescript](https://www.typescriptlang.org/) - Definition files provided
* [bootstrap](https://getbootstrap.com)
* [jQuery](https://jquery.com/)
* [popper.js](https://popper.js.org/)

## How to install

```
npm i @idahoedokpayi/gatsby-theme-corporate-homepage
```

## When do I use this plugin?

When you want a company home page   

## Examples of usage

# To include
```javascript
module.exports = {
  plugins: [
    '@idahoedokpayi/gatsby-theme-corporate-homepage'
  ]
};
```

## Contributing

All contributions welcome. Please be nice!

## Versioning

We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags). 

## Authors

* **Idaho Edokpayi** - *coding* - [Who Is Idaho](https://whoisidaho.com/)
* **Scott Miller** - *design* [Bullet Boy Design](http://bulletboydesign.com/)

## License

This project is licensed under the MIT License - see the [LICENSE.md](..\..\LICENSE.md) file for details

## Acknowledgments

* Hat tip to anyone whose code was used
npm package: @idahoedokpayi/gatsby-theme-product-landing-page
Description: Gatsby Theme utilizing Bootstrap Product example
Author: Idaho Edokpayi
Latest version: 0.1.1

# Product Landing Page

Gatsby theme based on the [Product Bootstrap example](https://getbootstrap.com/docs/4.5/examples/product/)

# To include
```javascript
module.exports = {
  plugins: [
    '@idahoedokpayi/gatsby-theme-product-landing-page'
  ]
};
```
## Built With

* [Typescript](https://www.typescriptlang.org/) - Definition files provided
* [bootstrap](https://getbootstrap.com)
* [jQuery](https://jquery.com/)
* [popper.js](https://popper.js.org/)


## How to install

```
npm i @idahoedokpayi/gatsby-theme-product-landing-page
```

## When do I use this plugin?

When you want to build a web site for a product



## Contributing

All contributions welcome. Please be nice!

## Versioning

We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags). 

## Authors

* **Idaho Edokpayi** - *Initial work* - [Basic Landing Pages](https://github.com/utdcometsoccer/basiclandingpage)

## License

This project is licensed under the MIT License - see the [LICENSE.md](..\..\LICENSE.md) file for details

## Acknowledgments

* Hat tip to anyone whose code was used
npm package: @idan-loo/expression
Description: 基于后缀表达式的表达式生成，计算库
Author: Idan Loo &lt;im@siwei.lu&gt;
Latest version: 0.1.0

# expression

基于后缀表达式的表达式生成，计算库

## 使用方法

### 从 `npm` 下载

```sh
npm i --save expression
```

### 在代码中引入

```javascript
import Expression from '@idan-loo/expression'

// 随机获得一个表达式
const expr = Expression.make()
// 格式化为中缀表达式
console.log(expr.infix)
// 格式化为后缀表达式
console.log(expr.postfix)
// 计算结果
console.log(expr.result)
```

## 更新记录

### v0.1.0

#### Feats:

- 实现功能
npm package: @idan-loo/middleware
Description: Create your own middlewares to divide a large logic into serveral wares
Author: Idan Loo
Latest version: 2.0.0

# middleware [![CircleCI](https://circleci.com/gh/IdanLoo/middleware.svg?style=svg)](https://circleci.com/gh/IdanLoo/middleware)

Create your own middlewares to divide a large logic into serveral wares.

It is inspired by the middleware system of [Koa](https://koajs.com/)

## Install

```bash
# with npm
npm install --save @idan-loo/middleware
# with yarn
yarn add @idan-loo/middleware
```

## Usage

```js
import { compose } from '@idan-loo/middleware'

const mw1 = async (ctx, next) => {
  ctx.name = 'mw1'
  await next()
}

const mw2 = async (ctx, next) => {
  ctx.name = 'mw2'
  await next()
}

const mw3 = async (ctx, next) => {
  ctx.name = 'mw3'
  await next()
}

const exec = compose(
  mw1,
  mw2,
  mw3
)
await exec({ name: 'test' })
```

## Middleware

### Each middleware should return a Promise object. You can simply add an `async` keyword in front of the function declation, or just return `next()`.

```js
import { Next } from '@idan-loo/middleware'

type Context = {
  name: string,
}

const mw1 = async (ctx: Context, next: Next) => {
  ctx.name = 'mw1'
  return next()
}

const mw2 = async (ctx: Context, next: Next) => {
  ctx.name = await anAsyncAction()
  await next()
}

const mw3 = async (ctx: Context, next: Next) => {
  await next()
  ctx.name = 'after next'
}
```

### If you want to go on executing the next middlewares, you should call `next()` manually.

```js
import { compose } from '@idan-loo/middleware'

const mw1 = async (ctx: Context, next: Next) => {
  ctx.name = 'mw1'
  return next()
}

const mw2 = async (ctx: Context) => {
  ctx.name = 'mw2'
}

const mw3 = async (ctx: Context, next: Next) => {
  ctx.name = 'mw3'
  return next()
}

// mw3 won't be executed because mw2 doesn't call the next method
const exec = compose(
  mw1,
  mw2,
  mw3
)
exec({ name: 'test' })
```

### Each calling of `compose` returns a middleware as well, so you can combine several middlewares by simply calling the `compose` method

```js
import { compose } from '@idan-loo/middleware'

const checkAuthed = async (ctx, next) => {
  // Go next only if the `ctx.isAuthed` is true
  if (ctx.isAuthed) {
    return next()
  }
}

const getSomePrivacy = async (ctx, next) => {
  /* Do some things */
  return next()
}

/* 
   Combine the `getSomePrivacy` with the `checkAuthed`.
   `checkAuthed` can be reused in everywhere you need.
 */
const getSomePrivacyIfAuthed = compose(
  checkAuthed,
  getSomePrivacy
)

const exec = compose(
  getSomePrivacyIfAuthed,
  handleThePrivacy
)
await exec(ctx)
```
npm package: @idan666/ulai
Description: Returns a random boolean answer
Latest version: 1.0.3

@idan666/ulai

[![GitHub issues](https://img.shields.io/github/issues/idan666/ulai)](https://github.com/idan666/ulai/issues)
[![GitHub forks](https://img.shields.io/github/forks/idan666/ulai)](https://github.com/idan666/ulai/network)
[![GitHub stars](https://img.shields.io/github/stars/idan666/ulai)](https://github.com/idan666/ulai/stargazers)
[![GitHub license](https://img.shields.io/github/license/idan666/ulai)](https://github.com/idan666/ulai)

Ulai is 'Maybe' in Hebrew,
Randomly returns boolean response, 'true' or 'false', in javascript. No Errors and no tests Required!

## Install

```
$ npm install @idan666/ulai
```

## Usage

```js
const ulai = require("@idan666/ulai");

ulai();
//=> true
//=> false
npm package: @idangazit/snowbank
Description: A template for create-snowpack-app with React, Typescript and Tailwind CSS
Author: Idan Gazit
Latest version: 1.0.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# New Project

> ✨ Bootstrapped with Create Snowpack App (CSA).

## Available Scripts

### npm start

Runs the app in the development mode.
Open http://localhost:8080 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

### npm test

Launches the test runner in the interactive watch mode.
See the section about running tests for more information.

### npm run build

Builds a static copy of your site to the `build/` folder.
Your app is ready to be deployed!

**For the best production performance:** Add a build bundler plugin like "@snowpack/plugin-webpack" or "@snowpack/plugin-parcel" to your `snowpack.config.json` config file.

### Q: What about Eject?

No eject needed! Snowpack guarantees zero lock-in, and CSA strives for the same.
npm package: @idango/crypt3
Description: Node.js crypt(3) bindings
Author: Jaakko-Heikki Heusala
Latest version: 1.0.0

This is a fork of https://github.com/sendanor/node-crypt3, since that is an unmaintained project.

# node-crypt3

[crypt3link]: https://en.wikipedia.org/wiki/Crypt_(C) "crypt() in C"

[crypt(3)][crypt3link] for Node.js

## Installation

Install using `npm install crypt3` and use:

### Promise version using [Q library](https://github.com/kriskowal/q)

```javascript
var crypt = require('crypt3/q');
```

```javascript
crypt('6Xz7sS6fEmnWScMb6Ayf363e5cdqF4Kh', '$1$SrkubyRm$DEQU3KupUxt4yfhbK1HyV/').then(function(value) {
	if( value !== '$1$SrkubyRm$DEQU3KupUxt4yfhbK1HyV/' ) {
		console.error('Access denied!');
		return;
	}
}).fail(function(err) {
	...
});
```

### Async version

```javascript
var crypt = require('crypt3/async');
```

```javascript
crypt('6Xz7sS6fEmnWScMb6Ayf363e5cdqF4Kh', '$1$SrkubyRm$DEQU3KupUxt4yfhbK1HyV/', function(err, value) {
	if(err) {
		...
		return;
	}
	if( value !== '$1$SrkubyRm$DEQU3KupUxt4yfhbK1HyV/' ) {
		console.error('Access denied!');
		return;
	}
});
```

### Sync version

```javascript
var crypt = require('crypt3/sync');
```

```javascript
if( crypt('6Xz7sS6fEmnWScMb6Ayf363e5cdqF4Kh', '$1$SrkubyRm$DEQU3KupUxt4yfhbK1HyV/') !== '$1$SrkubyRm$DEQU3KupUxt4yfhbK1HyV/' ) {
	console.error('Access denied!');
	return;
}
```

#### Example password encoding

Use `crypt(key[, salt])`:

```javascript
console.log( crypt('6Xz7sS6fEmnWScMb6Ayf363e5cdqF4Kh') );                                   // Salt generated automatically using default SHA512
console.log( crypt('6Xz7sS6fEmnWScMb6Ayf363e5cdqF4Kh', crypt.createSalt('md5') ) );         // MD5 salt
console.log( crypt('6Xz7sS6fEmnWScMb6Ayf363e5cdqF4Kh', crypt.createSalt('blowfish') ) );    // Blowfish salt (only some Linux distros)
console.log( crypt('6Xz7sS6fEmnWScMb6Ayf363e5cdqF4Kh', crypt.createSalt('sha256') ) );      // SHA-256, glibc2 only
console.log( crypt('6Xz7sS6fEmnWScMb6Ayf363e5cdqF4Kh', crypt.createSalt('sha512') ) );      // SHA-512, glibc2 only
```

Create hashes
-------------

Use `crypt.createSalt([type=sha512])` where type is one of `md5`, `blowfish`, `sha256` or `sha512` (default). 

Please note that this library does not work on Windows, and usually has a limited functionality on other *NIX systems other than Linux.

Commercial Support
------------------

You can buy commercial support from [Sendanor](http://sendanor.com/software).
npm package: @idangoldman/kit
Description: Opinionated Ui-Kit with a dream to become a Design System one day.
Author: Idan Goldman
Latest version: 0.1.3

# Kit
Opinionated Ui-Kit with a dream to become a Design System one day.

The Kit is still under-development and not ready for production or even for ~~`npm install kit`~~ experimental use.

Want to help developing the Kit? Keep on reading...

## Install
This is as basic as running:

```
  yarn install
  bundle install
```

### Prerequisite
This repository using `node` version `10.16.3` and `ruby` version `2.6.4`.

#### Node
Don't have `node` or have a different version other than, then I would recommand installing [FNM](https://github.com/Schniz/fnm) or [NVM](https://github.com/nvm-sh/nvm) (Node package managers) with the right version of Node for this project.

#### Ruby
Don't have Ruby or have a different version other than, then I would recommand installing [RVM](https://rvm.io/) (Ruby package managers) with the right version of Ruby for this project.


## Test
What? Tests for SASS? YES!!! Those tests are built with the awesome [True](https://github.com/oddbird/true) unit-testing tool and run by [Jest](https://github.com/facebook/jest).

Here are the command you can run to test stuff:

```
  rake test                  # Running all the tests once.
  rake test:watch            # Running and watching all
```

Tests are awesome, with that written they are also a pain in the ass to set up and maintain. So, if you see badly written tests or lack of them in some areas, fill free to let me know or better yet send a pull request.

## Docs
Want to make sense of the code? Here are the commands that will help you with that:

```
  rake doc       # Generates a ./docs folder.
  rake doc:open  # Open's that folder in the browser.
```

This section is still partially done, any help will be much appreciated. I'm using [SassDoc](https://github.com/SassDoc/) as documentation tool. You can see the outcome  [documantation](https://idangoldman.github.io/kit) here.

## Rake disclaimer
I love Yarn and prefer it over NPM, but don't like to type `yarn` command at all. I prefer typing `rake` command instead. That is why the project has a `Rakefile` which is a mirror of the `package.json` file commands. Feel free to keep using NPM, Yarn or join me with this weirdness.
npm package: @idangoldman/plate
Description: A simple boilerplate for web development
Author: Idan Goldman
Latest version: 0.10.0

# JavaScript on a PLATE

Opinionated web development library built upon principles and practices everyone already knows and use daily.

Inspired by work done on jQuery, Rails, YAML, and Python, and many other projects.

Code should be joyful to write and easily read thus understandable to maintain. This is the promise upon PLATE web library created on. Like modern day poetry blocks of a poem if you will.

We say "best tool for the job" and mostly I think we don't mean that or know what it really means. What if there are several tools we should use to complete the job?

Ok, enough with the Chinese cookie placebo. What is the library all about? The easiest way for me to explain would be to go over the folder structure of the project and dive into each one. Please take the following explanation with a grain of salt because the codebase in it's early stages and everything in it might move/change/disappear/improve.

## Core Principles

- Code should be joyful to write and easily read thus understandable to maintain.
- Indention first codebase
- Apply best tools with-in their domain to complete the job.

## Getting Started

To get started with PLATE, run the follow installment command in your project folder with `pnpm` package manager.

```shell
pnpm add @idangoldman/plate
```

Once installed, you're ready to dive into the world of PLATE and experiment with it's powerful capabilities.

## What's on the Plate Right Now?

See [ROADMAP.md](ROADMAP.md) for current and future plans.