Giter VIP home page Giter VIP logo

windmill-react-ui's Introduction

Windmill React UI

The component library for fast and accessible development of gorgeous interfaces.

codecov Build npm MIT License

Projects using it: Windmill Dashboard React

Mission

Be the most accessible it can be out of the box and the fastest way to production.

Go to docs to see complete, live examples

🚀 Usage

Install

npm i @windmill/react-ui

Inside tailwind.config.js

const windmill = require('@windmill/react-ui/config')
module.exports = windmill({
  purge: [],
  theme: {
    extend: {},
  },
  variants: {},
  plugins: [],
})

Then place Windmill at the root of your project (the order doesn't matter, as long as your application is inside).

// index.js
import React from 'react'
import ReactDOM from 'react-dom'
import App from './App'
import { Windmill } from '@windmill/react-ui'

ReactDOM.render(
  <Windmill>
    <App />
  </Windmill>,
  document.getElementById('root')
)

Use components inside your project

import { Button } from '@windmill/react-ui'

function App() {
  return <Button>Hi there!</Button>
}

export default App

🔌 Contributing

  • Fork
  • Clone
  • npm install
  • npm run storybook

It will start a local server at localhost:6006 with all components rendered.

⚠ Use npm run cz instead of git commit! It will guide you through some short questions and guarantee that you commit message is standardized.

Commit will also trigger linting and test coverage.

windmill-react-ui's People

Contributors

dependabot[bot] avatar estevanmaito avatar mantovanig avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

windmill-react-ui's Issues

TableFooter could use <tfoot> ?

Reproduction:

Run <TableFooter> within <Table>.

Problem description:

index.js:1 Warning: validateDOMNesting(...): <div> cannot appear as a child of <tfoot>.
    at div
    at http://localhost:3000/static/js/vendors~main.chunk.js:4627:21
    at tfoot
    at table
    at div
    at http://localhost:3000/static/js/vendors~main.chunk.js:4340:21
    at div

Suggested solution:

Use <tfoot> element instead of plain div element for TableFooter component.

useLayoutEffect does nothing on the server

windmill-react-ui version: 0.1.0-alpha.8

Relevant code or config:

import React from 'react'
import '../css/tailwind.css'
import { Windmill } from 'windmill-react-ui'

function MyApp({ Component, pageProps }) {
  return (
    <Windmill>
      <Component {...pageProps} />
    </Windmill>
  )
}

export default MyApp

What you did:

Rendered Windmill component with NextJS

What happened:

Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://fb.me/react-uselayouteffect-ssr for common fixes.

Reproduction:

Docs repo of this project (not available yet)

Design file - Adobe XD or figma file for windmill-react-ui

Hello, I just came across this awesome UI library. The UI looks very clean and modern. So I want to use this for a project of mine. but I'll need to develop a few custom components, which are specific to my project. Later on, if I get the time I'm considering opening a PR and adding those to this library as well.

Is there any design project/ file that you can provide, with the existing components and layouts built-in ? that would be really helpful since I can do my modifications on top of that, and that way everything will be consistent.

Trying to setup `windmill` library and got error after start app

  • windmill-react-ui version: 0.6.0
  • tailwindcss version: 3.0.24
  • remix version: 1.4.0

Relevant code or config:

tailwind.config.js

/* eslint unicorn/prefer-module: off, @typescript-eslint/no-var-requires: off */
const defaultTheme = require('tailwindcss/defaultTheme')
const windmill = require('@windmill/react-ui/config')

/**
 * @type {import('tailwindcss').Config}
 */
module.exports = windmill({
  mode: 'jit',
  content: ['./app/**/*.{js,ts,jsx,tsx,md,mdx}'],
  purge: ['./app/**/*.{js,ts,jsx,tsx,md,mdx}'],
  theme: {
    extend: {
      ...defaultTheme,
    },
  },
  plugins: [
    require('@tailwindcss/line-clamp'),
    require('@tailwindcss/typography'),
  ],
})

root.tsx

import type { LinksFunction, MetaFunction } from '@remix-run/node'
import {
  Links,
  LiveReload,
  Meta,
  Outlet,
  Scripts,
  ScrollRestoration,
} from '@remix-run/react'
import { Windmill } from '@windmill/react-ui'

import globalStyles from './styles/global.css'
import tailwindStyles from './styles/app.css'

export const meta: MetaFunction = () => ({
  // eslint-disable-next-line unicorn/text-encoding-identifier-case
  charset: 'utf-8',
  title: 'New Remix App',
  viewport: 'width=device-width,initial-scale=1',
})

export const links: LinksFunction = () => [
  { rel: 'stylesheet', href: globalStyles },
  { rel: 'stylesheet', href: tailwindStyles },
]

export default function App() {
  return (
    <html lang="en">
      <head>
        <Meta />
        <Links />
      </head>
      <body>
        <Windmill>
          <Outlet />
        </Windmill>
        <ScrollRestoration />
        <Scripts />
        <LiveReload />
      </body>
    </html>
  )
}

What you did:

I configurated library with documentation and got that error

What happened:

warn - The `purge`/`content` options have changed in Tailwind CSS v3.0.
warn - Update your configuration file to eliminate this warning.
warn - https://tailwindcss.com/docs/upgrade-guide#configure-content-sources
/Users/igormakowski/Documents/rigtch-music-www/node_modules/@tailwindcss/forms/src/index.js:34
          'border-color': theme('colors.gray.500', colors.gray[500]),
                                                              ^

TypeError: Cannot read properties of undefined (reading '500')
    at /Users/igormakowski/Documents/rigtch-music-www/node_modules/@tailwindcss/forms/src/index.js:34:63
    at registerPlugins (/Users/igormakowski/Documents/rigtch-music-www/node_modules/tailwindcss/lib/lib/setupContextUtils.js:600:61)
    at Object.createContext (/Users/igormakowski/Documents/rigtch-music-www/node_modules/tailwindcss/lib/lib/setupContextUtils.js:801:5)
    at createContext (/Users/igormakowski/Documents/rigtch-music-www/node_modules/tailwindcss/lib/processTailwindFeatures.js:36:48)
    at /Users/igormakowski/Documents/rigtch-music-www/node_modules/tailwindcss/lib/cli.js:487:36
    at /Users/igormakowski/Documents/rigtch-music-www/node_modules/tailwindcss/lib/processTailwindFeatures.js:38:11
    at Object.Once (/Users/igormakowski/Documents/rigtch-music-www/node_modules/tailwindcss/lib/cli.js:489:23)
    at LazyResult.runOnRoot (/Users/igormakowski/Documents/rigtch-music-www/node_modules/tailwindcss/peers/index.js:5131:27)
    at LazyResult.runAsync (/Users/igormakowski/Documents/rigtch-music-www/node_modules/tailwindcss/peers/index.js:5173:30)
    at LazyResult.async (/Users/igormakowski/Documents/rigtch-music-www/node_modules/tailwindcss/peers/index.js:5024:34)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Problem description:

Application throws error on start

Dropdown cannot be opened again, if closed by clicking on the trigger button

Relevant code or config:

import React, { useState } from "react";
import { Dropdown, DropdownItem } from "@windmill/react-ui";

interface Props {}

const UserDropdown = (props: Props) => {
  const [isProfileMenuOpen, setIsProfileMenuOpen] = useState(false);
  
  function handleProfileClick() {
    setIsProfileMenuOpen(!isProfileMenuOpen);
  }
  
  return (<div className="relative">
        <button
          className="rounded-full focus:shadow-outline-purple focus:outline-none"
          onClick={handleProfileClick}
          aria-label="Account"
          aria-haspopup="true"
        >
          Toggle
        </button>
        <Dropdown
          align="right"
          isOpen={isProfileMenuOpen}
          onClose={() => {
            setIsProfileMenuOpen(false);
          }}
        >
          <DropdownItem tag="a" href="#">
            User
          </DropdownItem>
          <DropdownItem tag="a" href="#">
            Settings
          </DropdownItem>
          <DropdownItem onClick={() => alert("Signout")}>
            Logout
          </DropdownItem>
        </Dropdown>
  </div>)
}

export default UserDropdown;

What you did:

Implemented a dropdown according to the full example of the documentation https://windmillui.com/react-ui/components/dropdown

What happened:

On first render, when user clicks on toggle button, then dropdown pops up. When user clicks the toggle button again, then the dropdown is closed. After the second click the dropdown cannot be opened again and remains closed.

Component Style Change

Currently having trouble changing the styling to components. I've read the documentation for the windmill react ui repo but when it comes to changing colors would this need to happen in the myTheme.js file or in the tailwind.output.css file.

Alert exported undefined

import { Alert } from '@windmill/react-ui'

try it in both ways...

<Alert type="success" onClose={() => { console.log('Close clicked'); }} message={"error"} />

<Alert type="success">Lorem ipsum dolor sit</Alert>

version "@windmill/react-ui": "0.3.1",

Problem with tailwindcss-custom-forms

Tailwind-custom-froms breaks on TailwindCSS v2 and people are switching to official forms plugin. If anyone seeing "value.charCodeAt" error, this might be the reason.

Modal gets closed when mouse is released outside the modal

Reproduction:

Make a left click on a text inside of the modal and do not release the click. Move the mouse outside the modal, then the modal is closed, instead of remaining opened.
-->

Suggested solution:

Remove the onMouseRelease event on the drawer and only fire the closing event of the modal, when the drawer is clicked

Next Data Set Buttons in pagination that will take custom user function as prop

Is your feature request related to a problem? Please describe.
I am not able to load the next x data set via pagination as it is useful if there are large data in the database and I can load data in chunks instead of the complete dataset.

Describe the solution you'd like
A next data and prev data set button that on click will execute a user-defined function to request fresh data it should be optional but very useful.

Additional context
can be passed as functional props to component.

[Feature Request] Drawer Component

Describe the solution you'd like
It would be very useful to have a built in drawer component. The drawer can be configured to appear from the right, left, top, bottom. The Size should also be configurable (small, medium, large)

Add new components

Prioritize atomic components to add when we get out of alpha.

Breadcrumbs

Improved cards

Image cards with aspect-ratio option.

Typography

Add styled variants for h* headings, display headings, normal paragraph, <code>, anchor.

Accordion and tabs

Different components, but very close in implementation.

Alert

(added on 0.4.0)

Don't leave the choice to make it inaccessible. An alert component, composed of a message, icon (danger, warning, success, etc), and a close button. Don't confuse with notifications.

<Alert type="danger" message={message} onClose={onClose} />

New buttons

File and date picker.

Button with dropdown. the foundation already exists:

<Button layout="dropdown">
  <span>Click here</span>
  <Dropdown>
    <DropdownItem>Item 1</DropdownItem>
    <DropdownItem>Item 2</DropdownItem>
  </Dropdown>
</Button>

Bigger components for future

Structural

Header, Sidebar, Footer, Navigation.

I don't see a case for touching layout with components, like columns, rows, etc.

Transition component doesn't work properly on entrance

  • windmill-react-ui version: 0.5.0

What you did:

I updated the windmill-ui package on windmill-dashboard-react.

What happened:

Components are not being animated on entrance.

Problem description:

It looks like modal and sidebar entrance is not animated as they should be, there's also no transition on the docs when you open the modal:

https://windmillui.com/react-ui/components/modal

Suggested solution:

Looks like downgrading back to 0.3.1 solves the issue.

Responsive Layout templates

Meu, que massssssaaaa, tá show, nota dez.

Minha sugestão é fazer um boilerplate para web pages ou landing pages, que todo mundo vai utilizar.

Tem um cara muito legal que fez um milhao de exemplos grátis aqui: https://treact.owaiskhan.me/

Layouts de w-full ou centralizados, com colunas, ficaria muito massa.

Quando descer a serra te pago o almoço aqui em IVOTI-RS.

Add support to programmatically change active page for Pagination

Is your feature request related to a problem? Please describe.
Not related to any problem but could be a usefull featuer. There are cases where users needs to programmatically change the active page number, eg. when searching, the page should change to first page. I have already a merge request prepared.

Describe the solution you'd like
Add support to programmatically change active page for Pagination.

Error

When I use this cofig I always get this error:

const windmill = require("@windmill/react-ui/config");
module.exports = windmill({
purge: ["./src/**/*.{js,jsx,ts,tsx}", "./public/index.html"],
theme: {
extend: {},
},
variants: {},
plugins: [],
});

Error:

./src/assets/dist/main.css (./node_modules/css-loader/dist/cjs.js??ref--5-oneOf-4-1!./node_modules/postcss-loader/src??postcss!./src/assets/dist/main.css)
TypeError: value.charCodeAt is not a function

When I use this cofig, I don´t get this error:

module.exports = {
purge: ["./src/**/*.{js,jsx,ts,tsx}", "./public/index.html"],
darkMode: false, // or 'media' or 'class'
theme: {
extend: {},
},
variants: {
extend: {},
},
plugins: [],
};

Anchor tags should not contain type attribute

  • windmill-react-ui version: 0.3.1

Apparently this only happens on Safari:

Anyways, type is being incorrectly applied in Button component when tag is not button (like a), so it creates invalid syntax like:

<a type="button">...</a>

Local development - Storybook?

Under Contributing, you mention that you're looking for a better setup than styleguide for a local dev server. (In fact, the steps listed there don't work - the dev script is broken.)

Would you be interested in using Storybook for this purpose? It's primarily a tool for developing components, but the latest version makes it possible to generate a full-featured documentation site from your stories, which would eliminate the need for this stand-alone documentation repo.

I could put together a quick proof of concept if this seems like something you might want.

Dropdown does not work with react 17

  • windmill-react-ui version: 0.4.1

I am trying to use this library with react 17.0.1 and Dropdown does not work. On click on the dropdown menu it close automatically.

I must to downgrade to react 16.14.0 and it work ok.

Docs: Default theme customization

In the Customization section of the documentation, the link(s) to the default theme are outdated (they point to default.js instead of default.ts).

Also, unless I'm doing it incorrectly, the note about importing the default theme is unclear:

You can reference it in your code importing the default theme windmill-react-ui/defaultTheme.

I had to import it like so:
import defaultTheme from '@windmill/react-ui/lib/defaultTheme';

Thanks for the great work on this library!

Input typescript does not have name property

  • windmill-react-ui version: 0.5.0

Relevant code or config:

<Input
     name="nickname"
/>

What you did:

I am trying to use react hook form with the Input component

What happened:

name is not included in the property
image

Reproduction:

Problem description:

it will be compiled error in the typescript

Suggested solution:

can try using include more the normal HTML input type

image

React.DetailedHTMLProps<
      React.InputHTMLAttributes<HTMLInputElement>,
      HTMLInputElement
    >

ModalHeader should have option to position contents in `<header>` tag

For ModalHeader component, it would be good to have an option to place the contents within the <header> tag of the Modal, currently, it places contents below it which may not be ideal when it comes to space effeicency. For placing within header, apply justify-between to it so that the header text will be on left and close button on right hand side.

export interface ModalProps extends React.HTMLAttributes<HTMLDivElement> {
  /**
   * Function executed when the dropdown is closed
   */
  onClose: () => void
  /**
   * Defines if the modal is open
   */
  isOpen: boolean
  /**
  * Defines custom child contents to place into header tag of Modal
  */
  header?: React.ReactChild
}
  <header className="flex justify-between">
      <div>{props.header}</div>
      <button
        className="inline-flex items-center justify-center w-6 h-6 text-gray-400 transition-colors duration-150 rounded dark:hover:text-gray-200 hover: hover:text-gray-700"
        aria-label="close"
        onClick={onClose}
      >

Typescript error with Input component: "Property 'css' is missing"

  • windmill-react-ui version: 0.6.0

Relevant code or config:

(Simplified example. Typescript 4.2.4 is used.)

import { Input } from '@windmill/react-ui';

const TestComponent = () => (
  <>
    <Input />
  <>
);
export default TestComponent;

What you did:

We were trying to import the Input component from the Windmill React library. We have Typescript 4.2.4 embedded into our project and it gives us the following error: "Property 'css' is missing" (see screenshot for the full error message). This error persists regardless of what standard properties we include in the declaration (e.g. type="checkbox"). If we add the css property to the code and provide it any value: (e.g. <Input css="" />), the Typescript error disappears. As far as I'm aware an input component has never required or even included a css property.

What happened:

Relevant screenshot providing the full error message:
Screen Shot 2021-06-07 at 11 57 17 am

Problem description:

The current behaviour with Typescript doesn't match any of the documentation, and leaving it as is causes our builds to fail. To work around this issue we've created a wrapper component to mask the css property from the rest of our code (see below), but it would be nice not to have this workaround as I'm sure this isn't an intended behaviour.

import { Input } from '@windmill/react-ui';
import { InputProps } from '@windmill/react-ui/dist/Input';

const InputWrapper = (props: InputProps) => (
  <Input css={null} {...props} />
);

export default InputWrapper;

Suggested solution:

I found within Input.d.ts that the Input component is declared with a "css" property. Maybe this shouldn't be part of the declaration?

Note:

I would like to mention that we've really been enjoying the library so far! Keep up the great work.

TypeScript Support

Is your feature request related to a problem? Please describe.
As of now, there is no TypeScript support.

Describe the solution you'd like
Would you consider a pull request with typings written for each component?

Link buttons don't have a dark style

windmill-react-ui version: 0.1.0-alpha.8

Problem description:

The current link Buttons, on dark themes, render the light styles when hovered/active

Suggested solution:

Add dark: styles.

Type error: Cannot find name 'Mode'.

  • windmill-react-ui version: 0.4.1

What you did:

Updated Windmill to the lastest version (with Typescript)

What happened:

I'm deploying my NextJS project on Vercel and I'm receiving an error on build that says Type error: Cannot find name 'Mode'. Seems that the index.d.ts from types folder is not loading on my project or something like that, (sorry if I'm wrong, I started to use Typescript not a long time ago). My Visual Studio Code shows the following message on @windmill/react-ui import:

Could not find a declaration file for module '@windmill/react-ui'. 'c:/Users/toeof/Documents/React Projects/repair-service/frontend-next/node_modules/@windmill/react-ui/dist/index.js' implicitly has an 'any' type.
Try npm install @types/windmill__react-ui if it exists or add a new declaration (.d.ts) file containing declare module '@windmill/react-ui';

Error on Vercel:
image

Uncaught SyntaxError: The requested module '../../web_modules/@windmill/react-ui.js' does not provide an export named 'Button'

  • windmill-react-ui 0.5.0:

Relevant code :

import React,from 'react';
import { Button } from '@windmill/react-ui';

const Store = () => {
  return (
    <div>
      <Button> Button </Button>
      <h1 className="text-5xl">This Is Store</h1>
    </div>
  );
};

export default Store;

This error comes in importing every component from this library:

The requested module '../../web_modules/@windmill/react-ui.js' does not provide an export named 'Button'

[MAINTAINER] What is the recommended React Testing Library way to test this?

The reports of my death were greatly exaggerated

TL;DR What is the recommended React Testing Library way to test this?

I successfully upgraded Tailwind (to v3) and React (to v18), but there's a problem: contrary to this library, Enzyme is dead and a move to React Testing Library is unavoidable. That's not a bad thing, RTL is better, but this project was setup using a different philosophy.

Testing like this is discouraged using RTL:

  it('should render with large styles', () => {
    const expected = 'w-10 h-10'
    const wrapper = mount(<Avatar src="test" size="large" />)

    expect(wrapper.find(Avatar).getDOMNode().getAttribute('class')).toContain(expected)
  })

A WIP branch is available here if you want to try something, as I had to create my own version of jest-svg-transformer: master...wip-upgrade

There, you'll find that Avatar was already converted to RTL, while Alert is broken and Backdrop is still WIP.

tailwind 2.0 support

Hello there! Nice project 👍
Any plans to support tailwind 2.0 in the near future?

Select doesn't propagate undefined value set in option tag

  • windmill-react-ui version: 0.5.0

Relevant code or config:

<Select
  className="relative flex items-center h-10 py-2 text-base text-black border border-gray-300 w-100"
  name="campaignType"
  onChange={handleCampaignTypeChange}
  >
  <option value={undefined}>{t('allCampaigns')}</option>
</Select>

What you did:

When using an option tag with value undefined, it is not captured in the onChange handler of <Select>.
Instead, the actual content of the option tag is passed to the <Select>.
When using an actual truthy value as option value, it is passed on correctly.

In the example code, using a fallback value of undefined is necessary though, since undefined will be used as a query param and only ignored as actual undefined.

onChange function on pagination component shouldn't be ejecuted on the firtst render.

hello @estevanmaito , im using the pagination component and I discover that onChange funtion is ejecuted on the first render, that's wrong because, onChange function only should be ejecuted when the page is changed, so, I was thinking and I found a problem in the useEffect that handle this function, the problem is that useEffect always will be ejecuted on first render , even if you don't change the state, so my proposal is create a reference using useRef , with that , useEffect will know when the component is rendered for first time.

}, [activePage])

DateTime Picker & Tabs

Is your feature request related to a problem? Please describe.
Thanks for building something so awesome! Please build a dateTime picker and Tabs component.

Describe the solution you'd like
A component to pick time /date/DateTime & Tabs

Describe alternatives you've considered
Currently, have to use other library for it which doesnt suit the tailwind design

.form-input class breaks with Tailwind v2

  • windmill-react-ui version: 0.5.0

What you did:

In development, the form inputs have a border and are styled, but when building a production bundle, the .form-input class loses some properties and the input style is messed up.

You can see a difference between applied styles in development and production here:

DEV
Screenshot from 2021-03-26 17-21-33

PROD
Screenshot from 2021-03-26 17-21-49

Support for NextJS?

  • windmill-react-ui version: ^0.5.1
  • tailwindcss version: ^2.0.4

Relevant code or config:

_app.tsx

import React from 'react'
import { AppProps } from 'next/app'
import { Windmill } from '@windmill/react-ui'

import '../styles/globals.css'

const MyApp: React.FC<AppProps> = ({ Component, pageProps }) => {
  return (
    <Windmill dark>
      <Component {...pageProps} />
    </Windmill>
  )
}

export default MyApp

What you did:

I installed and setup the project as instructed in the docs, but passing the dark option does not make my application dark. (background still white)

Problem description:

Because of the bug reported here: #3 (comment)

I unfortunately can't use the dark theme provided by Windmill. Is there any plans to add support for nextjs?

I want tailwind v3 compatibility for windmill react ui.

Is your feature request related to a problem? Please describe.
I would like @windmill/react-ui package to be supported in applications that are using tailwindcss v3 or above.

Describe the solution you'd like
With the current configuration, I see how windmill wrapper for config uses purge and not content. In order to use it with tailwindcss v3, I guess some changes will be required.

Describe alternatives you've considered
Not really at the moment.

Additional context

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.