Code Monkey home page Code Monkey logo

expresive-tea's Introduction

npm (scoped) npm Snyk Vulnerabilities for npm package GitHub stars Codecov Travis (.org) branch


Logo

Expressive Tea

A Clean, simple, modulable, extendable ExpressJS over Typescript framework.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents

About the project

Expressive Tea is framework to help build server-side applications in NodeJS and use modern Javascript powered by Typescript. As Expressive Tea is using express is compatible with all the middlewares and modules and provide an easy migration from express applications.

Expressive Tea is a flexible framework but also giving freedom to the developer to build their own architectures by providing descriptive decorators, a plugin engine, shareable modules and moder Javascript.

Motivation

Server-side applications it contains awesome tools, helpers, and libraries to improve productivity but at same time it haves a large downside, architecture. Expressive Tea main motivation is relief the stress of the architecture by providing a shareable/pluggable projects, you can write a plugin to setting up express middlewares, databases settings, or websockets to name some; and you can share them through your next projects or the community.

Main goal is making uncomplicaded creation of server-side applications, modulables, plugables, free and efortless architecture.

Features

  • Easy Setting up and start up of webserver.
  • Extends and configuration with plugins and well-defined boot stages.
  • Modules are not hard dependencies and can be shareable between projects.
  • Declare Server Middlewares configuration as hard or soft dependency at 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

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 not having any configuration of any Express Plugin or any database connection beside is built it on Express it is woking as Bring Your Own Architecture.

Installation

npm i --save @zerooneit/expressive-tea

Setting up Typescript

{
  "compilerOptions": {
    "baseUrl": ".",
    "sourceMap": true,
    "noEmit": true,
    "noImplicitAny": true,
    "target": "es6",
    "lib": ["es6", "dom"],
    "module": "commonjs",
    "moduleResolution": "node",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true
  }
}

Examples

You can looking into our simple example here, or edit or see how is working on our live preview using th button below.


Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Contributors

  • Diego Resendez - Lead Developer / Author - zerooneit

See also the list of contributors who participated in this project.

Support

If you are experience any kind of issues we will be happy to help. You can report an issue using the issues page or the chat. You can also ask questions at Stack overflow using the expressive-tea tag.

If you want to share your thoughts with the development team or join us you will be able to do so using the official the mailing list. You can check out the wiki to learn more about Expressive Tea internals or check our documentation.

Expressive Tea is an open source project, our goal is create an awesome framework that helps to build marvelous server side applications. If you like to join as Sponsor or backer to continue grow, please you can contact us on [email protected]

Principal Sponsors

Stay on Touch

License

This project is licensed under the Apache-2.0 License - see the LICENSE file for details

Disclaimers

The banner and the logo is a derivate work Designed by Freepik

expresive-tea's People

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

Watchers

 avatar  avatar  avatar  avatar

expresive-tea's Issues

[FEATURE] Documentation

Is your feature request related to a problem? Please describe.
There is not a way to know which I should use as a developer, is good to have a getting starter as is on README but, should provide more technical description of the library.

Describe the solution you'd like
Should have a wiki on github to represent all the technical details of the project.

[BUG] Reflect Metadata is getting incorrect instance

Describe the bug
When is trying to add multiple plugins, Static and ExpressDirective the core is lost in the context of the instance to get correct metadata.

To Reproduce
Steps to reproduce the behavior:

  1. Create a new project
  2. Create multiple plugins.
  3. Try to run the project.
  4. See error

Expected behavior
Should be able to run application without complications.

Desktop (please complete the following information):

  • Version 1.1.2

[BUG] Plugins are executing inverse order.

Describe the bug
When is adding the Plugin decorator is executing on reverse order creating unexpected behavior on dependent plugins.

To Reproduce
Steps to reproduce the behavior:

  1. Add a plug which is will work as dependency ex. express configuration.
  2. Add another plug with should be use the configurated service.
  3. Executed it will be bottom to top.

Expected behavior
Plugins execution should be top to bottom order.

Screenshots

Additional context

[TypeScript] {Issue found in ts-node-dev package}

Describe the bug
When a user starts a new fresh install of a Expressive Tea project with CLI steps and then npm install is executed, then the user tries to run the application by using tea serve, the application will show errors related to typescript version.

All the errors are

To Reproduce
Steps to reproduce the behavior:

  1. Go to Terminal
  2. Install a new Version of Expressive Tea using Tea CLI with default options.
  3. after installation run npm install.
  4. Run tea serve tea cli command.
  5. You will see the error logs in terminal when server is executed.

Expected behavior
The new start fresh application shouldn't complaint about any Typescript version.

Screenshots
Screen Shot 2022-10-12 at 8 41 41 PM

Desktop (please complete the following information):

  • OS: MacOSX Monterrey v12.3.1

Smartphone (please complete the following information):

  • not applicable

Additional context

  • not applicable

[FEATURE] Types and Definition File

Is your feature request related to a problem? Please describe.
Right now mostly of the code are not typed correctly, it should much better if starting working on create definitions and type everything on the code.

Describe the solution you'd like
Create interfaces or definitions to type the code correctly, also it will be awesome if create the definition file and post it to @types.

[BUG] Using @next decorator is returning empty responses.

Describe the bug
When use next decorator in HTTP responses decorated method but not @param is not moving into the next middleware instead of that is returning null responses.

To Reproduce
Steps to reproduce the behavior:

  1. In an existed controller add a new @get method.
  2. Add the @next as an argument and immediately call the next callback.
  3. restart the server and using postman or in the browser navigate the decorated route.
  4. You should get 200 empty response.

Expected behavior
Should return a 404 Response.

Screenshots

Desktop (please complete the following information):

  • OS: Mac OSX Catalina
  • Browser Chrome
  • Version latest

Smartphone (please complete the following information):

Additional context

[FEATURE] Microservices

Is your feature request related to a problem? Please describe.
no

Describe the solution you'd like
Nowadays microservices architecture is one of the most asked to apply, this should be a MUST for Expressive Tea. This should be auto-configure somehow and should be self-sufficient, including health check and auto scale and load balancing

Describe alternatives you've considered
We can include a new decorator for Proxy requests.

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.