Skip to content

sifrr/sifrr

Repository files navigation

sifrr

GitHub license CircleCI (all branches) npm version PRs Welcome Coverage Status Dependabot badge LGTM

Documentation | Changelog | Contributors | Contributing guidelines | Code of Conduct


sifrr is a set of tiny, customizable, independent libraries for creating modern and fast webapps using JavaScript.

Repository Info

This repository is a monorepo managed using yarn workspaces. This means there are multiple packages managed in this codebase, even though they are published to NPM as separate packages. They will always have same latest version and are released together.

Note that for 0.x releases of this library, the API is not considered stable yet and may break between minor releases. After 1.0, Semantic Versioning will be followed.

Packages

Browser (VanillaJS)

Package Description NPM Documentation Tests
sifrr-dom Small Library to build UIs with custom elements npm version Doscify OK
sifrr-template ⚡ Fast HTML-JS Templating engine used in sifrr-dom npm version Doscify OK
sifrr-fetch Wrapper library for Browser fetch API can be used in node too npm version Doscify OK
sifrr-route Routing for sifrr-dom npm version Doscify OK
sifrr-serviceworker Service worker wrapper library npm version Doscify OK
sifrr-storage Browser persisted storage library (2kb alternate to localforage) npm version Doscify OK

sifrr-dom, sifrr-template, sifrr-fetch, sifrr-serviceworker, sifrr-storage can be used independently. sifrr-route is a sifrr-dom element, hence it should be used with sifrr-dom.

Server (NodeJS)

Package Description NPM Documentation Tests
sifrr-api Create normal/GraphQL APIs with same codebase npm version Doscify OK
sifrr-cli Sifrr cli for creating webapps using sifrr npm version Doscify [WIP]
sifrr-seo Server side pre-rendering using puppeteer with caching npm version Doscify OK
sifrr-server Fast HTTP + WebSockets server npm version Doscify OK

sifrr-api, sifrr-seo, sifrr-server can be used independently. sifrr-cli has functionalities which can be used with sequelize projects, sifrr-api projects and sifrr-dom projects.

Usage

All the packages can be used with node, es6 modules, and are compatible with bundler of your choice (rollup, webpack, browserify)

commonJS (node)

const SifrrDom = require('@sifrr/dom');

ES6 modules (import)

import SifrrDom from '@sifrr/dom'; // default export
import { Element } from '@sifrr/dom'; // named export

standalone distributions (browser packages only)

For eg.

<script src="https://unpkg.com/@sifrr/dom@{version}/dist/sifrr.dom.min.js"></script>
// for v0.0.3
<script src="https://unpkg.com/@sifrr/dom@0.0.3/dist/sifrr.dom.min.js"></script>
// this sets window.Sifrr.Dom as sifrr-dom, same for other packages

Packages that have tests have a working example of that package in test/public folder

Node support (server packages and development)

Sifrr officially supports node v10, v12 (LTS), v13 (current). Other versions might work for some packages.

Browser Support (browser packages)

Sifrr browser packages officially supports these browser versions (for dist files):

Browser Version
Chrome >= 55
Android Chrome >= 55
Firefox >= 63
Android Firefox >= 63
Opera >= 42
Safari >= 10.1
Safari (iOS browsers) >= 10.1

Individual libraries may support older versions too with polyfills listed in docs, or by bundling it with polyfills using babel etc.

Approximately amounts to ~90% of total worldwide browser usage.

To support mini browsers (opera mini, uc browser etc.), You can use sifrr-seo to provide server side rendering.

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

License

Sifrr is MIT Licensed.

FOSSA Status

(c) @aadityataparia