UNPKG

@zerooneit/expressive-tea

Version:
256 lines (194 loc) 10.6 kB
<p align="center"> <!-- Npm Version --> <a href="https://www.npmjs.com/package/@zerooneit/expressive-tea"> <img alt="npm (scoped)" src="https://img.shields.io/npm/v/@zerooneit/expressive-tea?style=for-the-badge"> </a> <!-- Test Coverage --> <a href="https://codecov.io/gh/Expressive-Tea/expresive-tea"> <img alt="Codecov" src="https://img.shields.io/codecov/c/github/Expressive-Tea/expresive-tea?style=for-the-badge"> </a> <!-- Build --> <a href="https://travis-ci.org/Zero-OneiT/expresive-tea"> <img alt="Circle CI" src="https://img.shields.io/circleci/build/github/Expressive-Tea/expresive-tea/master?style=for-the-badge"> </a> <!-- License --> <a href="https://github.com/Zero-OneiT/expresive-tea/blob/develop/LICENSE"> <img alt="NPM" src="https://img.shields.io/npm/l/@zerooneit/expressive-tea?style=for-the-badge"> </a> <!-- Downloads --> <a href="https://www.npmjs.com/package/@zerooneit/expressive-tea"> <img alt="npm" src="https://img.shields.io/npm/dw/@zerooneit/expressive-tea?style=for-the-badge"> </a> <!-- Dependencies --> <a href="https://libraries.io/npm/@zerooneit%2Fexpressive-tea"> <img alt="Libraries.io dependency status for latest release, scoped npm package" src="https://img.shields.io/librariesio/release/npm/@zerooneit/expressive-tea?style=for-the-badge"> </a> <!-- Vulnerabilities --> <a href="https://snyk.io//test/github/Expressive-Tea/expresive-tea?targetFile=package.json"> <img alt="Snyk Vulnerabilities for npm package" src="https://img.shields.io/snyk/vulnerabilities/github/Expressive-Tea/expresive-tea?style=for-the-badge"> </a> <!-- Last Commit <a href="https://github.com/Zero-OneiT/expresive-tea"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Zero-OneiT/expresive-tea?style=for-the-badge"> </a> --> <!-- Stars --> <a href="https://github.com/Zero-OneiT/expresive-tea/stargazers"> <img alt="GitHub stars" src="https://img.shields.io/github/stars/Zero-OneiT/expresive-tea?style=for-the-badge"> </a> <!-- Source Rank <a href="https://libraries.io/npm/@zerooneit%2Fexpressive-tea/sourcerank"> <img alt="Libraries.io SourceRank, scoped npm package" src="https://img.shields.io/librariesio/sourcerank/npm/@zerooneit/expressive-tea?style=for-the-badge"> </a> --> <!-- Rating <a href="https://pkgreview.dev/npm/@zerooneit%2Fexpressive-tea"> <img alt="pkgreview.dev Package Ratings" src="https://img.shields.io/pkgreview/rating/npm/@zerooneit/expressive-tea?style=for-the-badge"> </a> --> <!-- Issues <a href="https://github.com/Zero-OneiT/expresive-tea/issues"> <img alt="GitHub issues" src="https://img.shields.io/github/issues-raw/Zero-Oneit/expresive-tea?style=for-the-badge"> </a> --> <!-- Gitter --> <a href="https://gitter.im/Zero-OneiT/expresive-tea"> <img alt="Gitter" src="https://img.shields.io/gitter/room/zero-oneit/expresive-tea?style=for-the-badge"> </a> </p> <!-- PROJECT LOGO --> <br /> <p align="center"> <a href="https://github.com/Zero-OneiT/expresive-tea"> <img src="images/logo.png" alt="Logo" width="160" /> </a> <h3 align="center">Expressive Tea</h3> <p align="center"> A Clean, simple, modulable, extendable ExpressJS over Typescript framework. <br /> <a href="https://zero-oneit.github.io/expresive-tea/"><strong>Explore the docs »</strong></a> <br /> <br /> <a href="https://codesandbox.io/s/expressive-tea-2kmg7?fontsize=14&hidenavigation=1&theme=dark">View Demo</a> · <a href="https://github.com/Zero-OneiT/expresive-tea/issues">Report Bug</a> · <a href="https://github.com/Zero-OneiT/expresive-tea/issues">Request Feature</a> </p> </p> <!-- TABLE OF CONTENTS --> ## Table of Contents * [About the Project](#about-the-project) * [Motivation](#motivation) * [Features](#features) * [Built With](#built-with) * [Getting Started](#getting-started) * [Prerequisites](#prerequisites) * [Installation](#installation) * [Setting Up Typescript](#setting-up-typescript) * [Examples](#examples) * [Contributing](#contributing) * [Versioning](#versioning) * [Contributors](#contributors) * [Support](#support) * [Principal Sponsors](#principal-sponsors) * [Stay on touch](#stay-on-touch) * [License](#license) * [Disclaimers](#disclaimers) ## About the project Expressive Tea is a framework to help build server-side applications in [NodeJS](https://nodejs.org/) and use modern Javascript powered by [Typescript](https://www.typescriptlang.org/). As Expressive Tea is using [express](https://expressjs.com/) is compatible with all the middlewares and modules and provides easy migration from express applications. Expressive Tea is a flexible framework. It also gives developers the freedom to build their architectures by providing descriptive decorators, a plugin engine, shareable modules, and modern Javascript. ### Motivation Server-side applications contain excellent tools, helpers, and libraries to improve productivity, but at the same time, it haves a considerable downside, **architecture**. Expressive Tea's primary motivation is a relief the stress of the architecture by providing shareable/pluggable projects; you can write a plugin to set up express middlewares, databases settings, or WebSockets, to name some; and you can share them through your following projects or the community. The main goal is making uncomplicated creation of server-side applications, module-driven, pluggable, accessible, and effortless architecture. Main goal is making uncomplicaded creation of server-side applications, modulables, plugables, free and efortless architecture. ### Features * Easy Setting up and start-up of a webserver. * Extends and configuration with plugins and well-defined boot stages. * Modules are not complex dependencies and can be shareable between projects. * Declare Server Middlewares configuration as hard or soft dependent at the server level. * Dependency Injection is available for controllers as providers declared in modules using InversifyJs. * Declarative Router on Controllers. * Declarative Verbs and Middlewares under module and verb level. * Declarative Exceptions for a better Error Handling. ### Built With * [Express](https://github.com/expressjs/express) - The web framework used * [Typescript](https://www.typescriptlang.org/) - Main Language * [Inversify](https://github.com/inversify/InversifyJS/) - Used for dependency Injection * [Reflect Metadata](https://github.com/rbuckton/reflect-metadata) - Used to get code metadata. ## Getting Started ### Prerequisites **Important!** Expressive Tea requires Node >= 6, Express >= 4, TypeScript >= 2.0 and the `experimentalDecorators`, `lib` compilation options in your `tsconfig.json` with the next configuration. Expressive Tea is woking as **Bring Your Own Architecture**, which means is not include any plugin or particular configuration for Express. ### Installation using Tea CLI #### Installing tea ```bash npm i -g @expressive-tea/tea ``` #### Create a Project ```bash tea brew <name_of_project> ``` #### Run Project In the project directory. ```bash tea serve ``` ### Installation by pure typescript ```bash npm i --save @zerooneit/expressive-tea ``` ### Setting up Typescript ```json { "compilerOptions": { "baseUrl": ".", "sourceMap": true, "noEmit": true, "noImplicitAny": true, "target": "es6", "lib": ["es6", "dom"], "module": "commonjs", "moduleResolution": "node", "experimentalDecorators": true, "emitDecoratorMetadata": true } } ``` ### Examples You can look into our simple example [here](https://github.com/Zero-OneiT/expressive-tea-sandbox), or edit or see how is working on our live preview. <p align="center"> <br/> <a href="https://codesandbox.io/s/expressive-tea-2kmg7?fontsize=14&hidenavigation=1&module=%2Fmain.ts&theme=dark"> <img src="https://codesandbox.io/static/img/play-codesandbox.svg"> </a> </p> ## Contributing Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c63ec426) for details on our code of conduct and the process for submitting pull requests to us. ## 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). ## Contributors * **Diego Resendez** - *Lead Developer / Author* - [zerooneit](https://github.com/zerooneit) See also the list of [contributors](https://github.com/Zero-OneiT/expresive-tea/contributors) who participated in this project. ## Support If you are experiencing any issues, we will be happy to help. You can report a problem using the [issues page](https://github.com/Zero-OneiT/expresive-tea/issues) or the [chat](https://gitter.im/Zero-OneiT/expresive-tea). You can also ask questions at [Stack overflow](http://stackoverflow.com/tags/expressive-tea) using the `expressive-tea` tag. If you want to share your thoughts with the development team or join us, you will do so using the [official mailing list](https://groups.google.com/forum/#!forum/expressive-tea/). You can check out the [wiki](https://github.com/Zero-OneiT/expresive-tea/blob/develop/README.md) to learn more about Expressive Tea internals or check our [documentation](https://zero-oneit.github.io/expresive-tea/). Expressive Tea is an open-source project; our goal is to create a fantastic framework that helps build marvelous server-side applications. If you like to join as a Sponsor or backer to continue growing, don't hesitate to get in touch with us at [projects@zero-oneit.com](mailto:projects@zero-oneit.com). #### Principal Sponsors <table style="text-align:center;"><tr><td> <a href="https://zerooneit.com" target="_blank"><img src="images/zero-oneit.png" width="180" valign="middle" /></a></td><td> </tr></table> ## Stay on Touch * Author - [Diego Resendez](https://twitter.com/diegoresendez) * Twitter - [@expressive_tea](https://twitter.com/expressive_tea) * Email - [support@expressive-tea.io](support@expressive-tea.io) ## License This project is licensed under the Apache-2.0 License - see the [LICENSE](LICENSE) file for details. <p align="center"> <a href="https://app.fossa.io/projects/git%2Bgithub.com%2FZero-OneiT%2Fexpresive-tea?ref=badge_large"> <img src="https://app.fossa.io/api/projects/git%2Bgithub.com%2FZero-OneiT%2Fexpresive-tea.svg?type=large" /> </a> </p> ## Disclaimers The banner and the logo is a derivate work [Designed by Freepik](http://www.freepik.com)