Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wish list of LoopBack Next extensions #512

Closed
raymondfeng opened this issue Aug 15, 2017 · 61 comments
Closed

Wish list of LoopBack Next extensions #512

raymondfeng opened this issue Aug 15, 2017 · 61 comments

Comments

@raymondfeng
Copy link
Member

@raymondfeng raymondfeng commented Aug 15, 2017

A list of potential extensions for LoopBack Next.

Add a 馃憤 reaction to any of the comments below if you are interested in seeing these features / extensions

@ritch
Copy link
Member

@ritch ritch commented Aug 17, 2017

  1. Actions for REST/HTTP req/res processing
  • CORS
  • Logging
  • Rate Limiting
  • Authorization
  • Express/KOA middleware
@ritch
Copy link
Member

@ritch ritch commented Aug 17, 2017

  1. Transports/protocols
  • WebSocket
  • MQTT
  • gRPC (HTTP2 & ProtoBuffer3)
@ritch
Copy link
Member

@ritch ritch commented Aug 17, 2017

  1. API styles
@ritch
Copy link
Member

@ritch ritch commented Aug 17, 2017

  1. Cloud native integration
  • Docker/compose/k8s/
  • Istio: Metrics/Distributed tracing
  • Bluemix/AWS/Azure
@ritch
Copy link
Member

@ritch ritch commented Aug 17, 2017

  1. Built-in models
  • User/Team/Organization
  • Application
  • AccessToken
@ritch
Copy link
Member

@ritch ritch commented Aug 17, 2017

  1. Mixins
@ritch
Copy link
Member

@ritch ritch commented Aug 17, 2017

  1. Connectors
@ritch
Copy link
Member

@ritch ritch commented Aug 17, 2017

  1. CLI commands
@ritch
Copy link
Member

@ritch ritch commented Aug 17, 2017

  1. Caching
@ritch
Copy link
Member

@ritch ritch commented Aug 17, 2017

  1. Boot
  • OpenAPI Specs
  • Controllers
  • Repositories/Services
  • Components
  • Model definitions
    • JSON schemas
    • OpenAPI specs
    • WSDL/XML Schema
    • GraphQL Schema
    • ...
  • Data sources
  • Connectors
  • gRPC service/message
  • ...
@proreact-mj
Copy link

@proreact-mj proreact-mj commented Sep 14, 2017

A visual builder/app inspector to develop, modify and debug a Loopback4 app.
ARC, but more functionality
API Connect Developer Toolkit, but without the IBM account tie-in.
Node-RED, but for Loopback :)

@VMois
Copy link

@VMois VMois commented Oct 19, 2017

  1. Connectors
@jpventura
Copy link

@jpventura jpventura commented Oct 27, 2017

A well defined connector fintech/payment interface whose services such as credit cards, Plaid, PayPal, Android Pay, Apple Pay could be reduced to.

@VinayaSathyanarayana
Copy link

@VinayaSathyanarayana VinayaSathyanarayana commented Dec 5, 2017

CMS like Keystone.js

@kattsushi
Copy link

@kattsushi kattsushi commented Dec 6, 2017

  • Implementation for Angular Universal and SSR
@howientc
Copy link

@howientc howientc commented Dec 14, 2017

Left and Inner Joins on queries. Perhaps just use GraphQL with something like Join Monster to generate smart SQL behind the scenes.

@bajtos
Copy link
Member

@bajtos bajtos commented Dec 15, 2017

Cross-posting from #540 (cc @delebash)

Offline first synchronization

In loopback 3 you have offline sync abilities. I think being able to have two way sync from local to remote database is very important. At least for me :)

PouchDB is a good example of offline first synchronization

Another example not reliant on CouchDB is DexieJs seems like they have a nice synchronization component built in and are nearing version 2.0 release

@ovidius72
Copy link

@ovidius72 ovidius72 commented Dec 21, 2017

A customizable control panel for administrators similar to strapi.io ?
Could this be provided as an extension ?

@ElBiG12
Copy link

@ElBiG12 ElBiG12 commented Jan 7, 2018

  • Add a client SDK for VueJs.
  • Internationalization
@ganeshkbhat
Copy link

@ganeshkbhat ganeshkbhat commented Mar 20, 2018

Feature/External Component Support

Please remove whatever is implemented. I have not read 4.0 docs completely

  • Current 3.0 like generators (Model, Relation, API, Swagger support, etc)
  • Model property level ACL
  • Multi-Tenant level support (add remove model properties for specific tenant, different ACLs for tenant) for models
  • Flow Support (possible extended component for Workflow support component based on BPMN/CMMN)
  • OAuth Server (Auth/Resource) / Login system External Component
  • Comprehensive Storage External Component
  • Comprehensive DB Support like 3.0 Single API Component
  • Working Example or Implementation based Documentation (bettered). Currently new loopback users can find it blocking to implement some sections without working example
@Extarys
Copy link

@Extarys Extarys commented Apr 7, 2018

  • ArangoDB connector
@Extarys
Copy link

@Extarys Extarys commented Apr 7, 2018

  • RethinkDB connector
@Extarys
Copy link

@Extarys Extarys commented Apr 7, 2018

To extend what @jpventura said about a payment interface. Could add Stripe.

@stablehacks
Copy link

@stablehacks stablehacks commented Apr 11, 2018

FireStore connector

@dhmlau
Copy link
Member

@dhmlau dhmlau commented Feb 1, 2019

Merging #509 into this issue so that we have all extension wish list in one place

Cross posting #509 (comment) from @bajtos .

17 馃憤 in the original post


Cross-posting from #119

Real-Time features

I'm opening this thread to discuss and define a scope for real-time functionalities possibly provided by LB-Next.

Currently there are implemented functionalities like event streams, but honestly are not helpful at all when building real life applications, therefore I have built several real-time approaches on top of loopback, which I believe 2 were the most important.

1.- Implemented PubSub functionality.
2.- Implemented Firebase alike interface.

@dhmlau
Copy link
Member

@dhmlau dhmlau commented Feb 1, 2019

Merging #509 into this issue so that we have all extension wish list in one place

Cross posting #509 (comment) from @jackrvaughan .

14 馃憤 in the original post


ACL Restrictions on Model Properties

Restrict certain model properties to different user types. For example, a user model could have an account-type property that could only be changed by an admin and not by the owner (but the rest of the model could be changed by the owner).

Will You Build It?

I don't think I'd know where/how to start - but I could definitely try with some guidance.

@dhmlau
Copy link
Member

@dhmlau dhmlau commented Feb 1, 2019

Merging #509 into this issue so that we have all extension wish list in one place

Cross posting #509 (comment) from @akashjarad.

9 馃憤 in the original post


Loopback mqtt/amqp support.
make an extension for MQTT protocol.
Will You Build It?
i am willing to contribute , and need guidance .

@dhmlau
Copy link
Member

@dhmlau dhmlau commented Feb 1, 2019

Merging #509 into this issue so that we have all extension wish list in one place

Cross posting #509 (comment) from @rpinaa .

5 馃憤 in the original post


Features!

  • Define validating data inside @Property annotation like Java Bean Validation (https://docs.oracle.com/javaee/6/tutorial/doc/gircz.html). Making this approach we can delegate the business constraints to domain-model layer.
  • Standardize the environment profiles, local (default), development, staging and production; perhaps using the loopback 3.x.x functionality or making it better.
  • Improve the transactional support for relational data bases, helping it with an annotation @transactional and define isolation levels like loopback 3.x.x approach.
@dhmlau
Copy link
Member

@dhmlau dhmlau commented Feb 1, 2019

Merging #509 into this issue so that we have all extension wish list in one place

Cross posting #509 (comment) from @monster910 .


API Tool Improvements

  1. Make a custom API and expose it to explorer
    https://groups.google.com/forum/#!searchin/loopbackjs/swagger%7Csort:date/loopbackjs/l6FQGCjNpEY/rrTqHFbZAQAJ

  2. Make a custom API and generate swagger def from it. Same as #1 above except make sure the export to swagger works

  3. Improved error handing for APIs using 400 and 500 HTML status codes and allow the explorer to test those cases

  4. Generate swagger properly from #3 above

  5. Ability to defined a API that is NOT attached to a model

Will You Build It?

Perhaps

@dhmlau
Copy link
Member

@dhmlau dhmlau commented Feb 1, 2019

Merging #509 into this issue so that we have all extension wish list in one place

Cross posting #509 (comment) from @ganeshkbhat .

2 馃憤 in the original post


Feature/External Component Support

Please remove whatever is implemented. I have not read 4.0 docs completely

  • Current 3.0 like generators (Model, Relation, API, Swagger support, etc)
  • Model property level ACL
  • Multi-Tenant level support (add remove model properties for specific tenant, different ACLs for tenant) for models
  • Flow Support (possible extended component for Workflow support component based on BPMN/CMMN)
  • OAuth Server (Auth/Resource) / Login system External Component
  • Comprehensive Storage External Component
  • Comprehensive DB Support like 3.0 Single API - Multiple DB Adaptor Component
  • Working Example or Implementation based Documentation (bettered). Currently new loopback users like me can find it blocking to implement some sections without working example

Will you build it?

I would definitely like to contribute if I have guidance

@dhmlau dhmlau mentioned this issue Feb 12, 2019
@Royedc4
Copy link

@Royedc4 Royedc4 commented Mar 1, 2019

  • Discovering models from a database (as done in loopback 2 with slc arc)
@clayrisser
Copy link
Member

@clayrisser clayrisser commented Mar 1, 2019

Metrics

@mdbetancourt
Copy link
Contributor

@mdbetancourt mdbetancourt commented Mar 18, 2019

firestore connector

@JoergFechner
Copy link

@JoergFechner JoergFechner commented Apr 12, 2019

Open the where-filter, to get something like this

labels @> ARRAY['pommes','ketchup']::varchar[]

to work.

@jheysen
Copy link

@jheysen jheysen commented Apr 18, 2019

Is there any plan to add support for Compression Middleware? Also, it would be nice to have some form of logging out of the box, maybe with morgan

@bajtos
Copy link
Member

@bajtos bajtos commented Jun 24, 2019

Is there any plan to add support for Compression Middleware? Also, it would be nice to have some form of logging out of the box, maybe with morgan

Eventually, we would like to allow LB4 applications to mount any Express middleware for request pre-processing, but we are not there yet. See #1293.

For now, you can mount LB4 application on a top-level Express application and configure middleware like compression and morgan on that Express application. See
https://loopback.io/doc/en/lb4/express-with-lb4-rest-tutorial.html

Personally, I'd prefer to use 馃尣pino馃尣 as the default logger, because of its performance.

@mrmodise
Copy link
Contributor

@mrmodise mrmodise commented Aug 19, 2019

  1. Authorisation headers in GraphQL mutation and queries.
  2. Reading session information headers.
@ckoliber
Copy link
Member

@ckoliber ckoliber commented Aug 25, 2019

  1. Built-in models
  • User/Team/Organization
  • Application
  • AccessToken

User, Group, Role, Permission models was added on loopback-authorization-extension

@consultantcraig
Copy link

@consultantcraig consultantcraig commented Sep 28, 2019

A visual builder/app inspector to develop, modify and debug a Loopback4 app.
ARC, but more functionality
API Connect Developer Toolkit, but without the IBM account tie-in.
Node-RED, but for Loopback :)

I'd like to add an idea for some low-hanging but powerful fruit: There's a great visual model builder I'm using called GenMyModel.com (free for solo use). You can export your data model as .xmi file. And I've just convinced one of my clients to let me re-create their back end with lb4. Would be nice if I could feed the .xmi to loopback and it would auto-scaffold everything in one command including lb4 model, controllers, and database. Then I can just go and tweak the routing and functionality as needed. I might build that extension myself if I get time in a few months.

@bajtos
Copy link
Member

@bajtos bajtos commented Sep 30, 2019

I'd like to add an idea for some low-hanging but powerful fruit: There's a great visual model builder I'm using called GenMyModel.com (free for solo use). You can export your data model as .xmi file. And I've just convinced one of my clients to let me re-create their back end with lb4. Would be nice if I could feed the .xmi to loopback and it would auto-scaffold everything in one command including lb4 model, controllers, and database. Then I can just go and tweak the routing and functionality as needed. I might build that extension myself if I get time in a few months.

Thank you @consultantcraig for posting this idea. Our CLI tool can be invoked in a non-interactive headless mode where answers from prompts are supplied via a JSON file. I think it should be possible to build a tool you have described using this feature.

I can also imagine adding a new command to the CLI that will accept a single JSON file with a list of commands & their arguments to run. With such command in place, your .xmi converter can be simple - just convert .xmi into JSON input expected by LB4 CLI.

Having said that, I don't think we will have bandwidth to make these CLI improvements ourselves in the near future. However, we are happy to help you along the way if you decide to contribute it yourself.

@ddsultan
Copy link
Contributor

@ddsultan ddsultan commented Oct 10, 2019

Schematics support with the CLI like in Angular CLI

@ghguy
Copy link

@ghguy ghguy commented Oct 13, 2019

SLC ARC with visual builder like version 3. Not command line based like apic discover.

@ibmjm
Copy link
Contributor

@ibmjm ibmjm commented Nov 6, 2019

Left and Inner Joins on queries. Perhaps just use GraphQL with something like Join Monster to generate smart SQL behind the scenes.

I'd also like a simple solution to modelling a database table which doesn't have a typical primary key (e.g. a column named id). I often have to build applications that read data from an IW that was designed more for management reports, where the tables use "real data" columns for their primary key. A simple example could be an order view/table where the order number is the primary key, or a product table where the part number (or SKU) is the PK. Or a list of employees where w3 ID is the PK. It's a common scenario when an application needs to interface to a database that's owned by a third-party.

Similarly, there are times when I want to include data within one LB4 model that is sourced from more than one table in the database layer. Sample use case: an Inventory model, where I would like to include the product description from the Product table along with the inventory data.

@kchraniuk
Copy link

@kchraniuk kchraniuk commented Nov 13, 2019

Better documentation with more useful examples about WebSocket e.g:
#4044

@achrinza achrinza unpinned this issue Mar 3, 2020
@achrinza achrinza pinned this issue Mar 3, 2020
@aaamitsingh
Copy link

@aaamitsingh aaamitsingh commented Aug 26, 2020

Messaging connectors and bridge:
strong-pubsub
strong-pubsub-bridge
strong-pubsub-connection-mqtt

@bajtos bajtos unpinned this issue Sep 29, 2020
@Code-Crash
Copy link

@Code-Crash Code-Crash commented Oct 31, 2020

  • AWS Services Extensions like:
  1. S3 bucket datasource to handle file object related operations.
  2. Elastic Search datasource extension.
  3. Lambda functions supports extensions (development/deployment using loopback extensions)
@samarpanB
Copy link
Contributor

@samarpanB samarpanB commented Feb 11, 2021

Merging #509 into this issue so that we have all extension wish list in one place

Cross posting #509 (comment) from @MartinCerny-awin .

20 in the original post

Audit Log

Log changes performed on models. It would help to keep track of who used, created or changed an entity and the point in time this happened.

The same model that is being audited would be created with added properties mentioned in what should be stored section. This model will get updated when audit action happens.

When should audit happen (taken from #2872)

  1. We give users the option which RESTfull endpoint (or which model) they want to have the audit middleware active for. Or introducing exceptions option which makes the middleware active for all endpoints except the ones mentioned in exceptions
  2. We give them option which req.methods they want to have this middleware active for... I think it does not make sense to have this middleware active for req.method == 'GET' since this middleware would become a bottleneck of the application and you would not get that useful information either.

What should be stored

  • Model properites
  • Created timestamp
  • Modified timestamp
  • HTTP method
  • Path
  • User Id

We created this extension few months back. I hope it caters to the list of requirements. If not, please feel free to raise a feature request. We'll try to add that soon. https://www.npmjs.com/package/@sourceloop/audit-log

@bajtos bajtos closed this Mar 11, 2021
@strongloop strongloop locked and limited conversation to collaborators Mar 11, 2021

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet