https://github.com/sifrr/sifrr
:zap: Set of tiny, independent libraries for creating modern and fast webapps with javascript/typescript
https://github.com/sifrr/sifrr
backend fast framework frontend fullstack javascript libraries minimal nodejs server sifrr ui
Last synced: about 1 month ago
JSON representation
:zap: Set of tiny, independent libraries for creating modern and fast webapps with javascript/typescript
- Host: GitHub
- URL: https://github.com/sifrr/sifrr
- Owner: sifrr
- License: mit
- Created: 2018-02-21T08:24:15.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2023-02-23T03:22:29.000Z (about 2 years ago)
- Last Synced: 2025-03-12T00:02:13.719Z (2 months ago)
- Topics: backend, fast, framework, frontend, fullstack, javascript, libraries, minimal, nodejs, server, sifrr, ui
- Language: HTML
- Homepage: https://sifrr.github.io/sifrr/
- Size: 24.4 MB
- Stars: 337
- Watchers: 7
- Forks: 20
- Open Issues: 48
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
![]()
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](#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](./packages/browser/sifrr-dom/) | Small Library to build UIs with custom elements | [](https://www.npmjs.com/package/@sifrr/dom) | [](https://sifrr.github.io/sifrr/#/./packages/browser/sifrr-dom/) | [OK](./packages/browser/sifrr-dom/test) |
| [sifrr-template](./packages/browser/sifrr-template/) | :zap: Fast HTML-JS Templating engine used in sifrr-dom | [](https://www.npmjs.com/package/@sifrr/template) | [](https://sifrr.github.io/sifrr/#/./packages/browser/sifrr-template/) | [OK](./packages/browser/sifrr-template/test) |
| [sifrr-fetch](./packages/browser/sifrr-fetch/) | Wrapper library for Browser fetch API can be used in node too | [](https://www.npmjs.com/package/@sifrr/fetch) | [](https://sifrr.github.io/sifrr/#/./packages/browser/sifrr-fetch/) | [OK](./packages/browser/sifrr-fetch/test) |
| [sifrr-route](./packages/browser/sifrr-route/) | Routing for sifrr-dom | [](https://www.npmjs.com/package/@sifrr/route) | [](https://sifrr.github.io/sifrr/#/./packages/browser/sifrr-route/) | [OK](./packages/browser/sifrr-route/test) |
| [sifrr-serviceworker](./packages/browser/sifrr-serviceworker/) | Service worker wrapper library | [](https://www.npmjs.com/package/@sifrr/serviceworker) | [](https://sifrr.github.io/sifrr/#/./packages/browser/sifrr-serviceworker/) | [OK](./packages/browser/sifrr-serviceworker/test) |
| [sifrr-storage](./packages/browser/sifrr-storage/) | Browser persisted storage library (2kb alternate to [localforage](https://github.com/localForage/localForage)) | [](https://www.npmjs.com/package/@sifrr/storage) | [](https://sifrr.github.io/sifrr/#/./packages/browser/sifrr-storage/) | [OK](./packages/browser/sifrr-storage/test) |`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](./packages/server/sifrr-api/) | Create normal/GraphQL APIs with same codebase | [](https://www.npmjs.com/package/@sifrr/api) | [](https://sifrr.github.io/sifrr/#/./packages/server/sifrr-api/) | [OK](./packages/server/sifrr-api/test) |
| [sifrr-cli](./packages/server/sifrr-cli/) | Sifrr cli for creating webapps using sifrr | [](https://www.npmjs.com/package/@sifrr/cli) | [](https://sifrr.github.io/sifrr/#/./packages/server/sifrr-cli/) | \[WIP] |
| [sifrr-seo](./packages/server/sifrr-seo/) | Server side pre-rendering using puppeteer with caching | [](https://www.npmjs.com/package/@sifrr/seo) | [](https://sifrr.github.io/sifrr/#/./packages/server/sifrr-seo/) | [OK](./packages/server/sifrr-seo/test) |
| [sifrr-server](./packages/server/sifrr-server/) | Fast HTTP + WebSockets server | [](https://www.npmjs.com/package/@sifrr/server) | [](https://sifrr.github.io/sifrr/#/./packages/server/sifrr-server/) | [OK](./packages/server/sifrr-server/test) |`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)
```js
const SifrrDom = require('@sifrr/dom');
```### ES6 modules (`import`)
```js
import SifrrDom from '@sifrr/dom'; // default export
import { Element } from '@sifrr/dom'; // named export
```### standalone distributions (browser packages only)
For eg.
```html
// for v0.0.3
// 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](CONTRIBUTING.md)].
### Financial Contributors
Become a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/sifrr-oc/contribute)]
#### Individuals
#### Organizations
Support this project with your organization. Your logo will show up here with a link to your website. [[Contribute](https://opencollective.com/sifrr-oc/contribute)]
## License
Sifrr is [MIT Licensed](./LICENSE).
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fsifrr%2Fsifrr?ref=badge_large)
(c) [@aadityataparia](https://github.com/aadityataparia)