LoopBack makes it easy to build modern API applications that require complex integrations.

Overview

LoopBack4 logo

Continuous Integration Status AppVeyor Build status Coverage Status CodeQL Status

Twitter Facebook LinkedIn Slack

LoopBack makes it easy to build modern applications that require complex integrations.

  • Fast, small, powerful, extensible core
  • Generate real APIs with a single command
  • Define your data and endpoints with OpenAPI
  • No maintenance of generated code

Status: General Availability

LoopBack 4 GA (General Availability) has been released in October 2018, read more in the announcement post.

The documentation website is https://loopback.io/doc/en/lb4/.

Learn about the latest and greatest features and technologies in LoopBack 4 by using it for your next project. Start by having a look at Getting Started.

Check the API documentation for all the API usages in each package.

Long Term Support

We don't provide any LTS version for LoopBack 4 yet. Please join the discussion in loopback-next#4398 if you are interested in a version that's less frequently changed.

We are providing Maintenance support for LoopBack 3 until December 2020.

Version Status Published EOL
LoopBack 4 Current Oct 2018 Apr 2023 (minimum)
LoopBack 3 End-of-Life Dec 2016 Dec 2020
LoopBack 2 End-of-Life Jul 2014 Apr 2019

Please refer to our Long Term Support Policy for more details.

Installation

Make sure you have the following installed:

Install LoopBack 4 CLI to help create new projects as follows:

npm i -g @loopback/cli

To create your first LoopBack 4 application, see Getting Started.

Documentation

Contributing

See the following resources to get you started:

You can join the team by posting a comment to issue #110.

Security

If you think you have discovered a new security issue with any StrongLoop package, please do not report it on GitHub. Instead, send an email to [email protected] with a full description and steps to reproduce.

See SECURITY.md for more details.

Team

Project Architects

Raymond Feng Miroslav Bajtoลก
raymondfeng bajtos

Project Maintainers

Diana Lau Janny Hou Hage Yaapa
dhmlau jannyhou hacksparrow
Agnes Lin Mario Estrada Hugo Da Roit
agnes512 marioestradarosa yaty
Dominique Emond Denny Bartelt Douglas McConnachie
emonddr derdeka dougal83
Rifa Achrinza Francisco Buceta Matthew Schnee
achrinza frbuceta mschnee
Nora Abdelgadir Madaky Nico Flaig
nabdelgadir madaky nflaig

See all contributors.

Alumni

License

MIT

Comments
  • Welcoming Contributors

    Welcoming Contributors

    This issue is for new folks to chime in and say hello and that they'd like to be involved offline (off GitHub) discussions. I'm not expecting the working group on this project to be so large that we can't all get to know each other.

    Just comment here that you'd like to be added to the LoopBack.next contributors list and I'll create a group in the StrongLoop org with all of you - so we can do things like @strongloop/loopback-next for scheduling external meetings and such.

    When we invite you to join our org and you don't receive an email notification for GitHub, then you can accept the invite here: https://github.com/strongloop

    Check out issues labelled as good first issue for tasks suitable for new contributors.


    Updated on 05/31/2019

    Hi all! First of all, thanks for your interests and support in LoopBack 4!

    We have been thinking about how to grow our contributor community together with the user community. There are several ways to contribute:

    • Provide your feedback We'd love to hear your feedback! Feel free to comment on the GitHub issues that interest you or open an issue in this repo
    • Contributing code Please see below for details. For step-by-step instructions in submitting a PR, refer to https://loopback.io/doc/en/lb4/submitting_a_pr.html.
    • Contributing docs From the feedback we got, there's a need to improve our docs. This PR outlines some of the enhancements we'd like to make: https://github.com/strongloop/loopback-next/pull/2925

    Contributing code

    Contribute what you need

    We hope you are contributing to something that you need or will be using. We'd encourage you to take a backlog and see if any of our GitHub issues capture your requirement. If you're planning to implement a more complex feature, it would be helpful to submit a draft PR with minimal implementation to discuss your approach first. It would also be helpful to include your use case so that we can understand your requirements better. This is to make sure the intended implementation would align with our architecture and direction.

    Contribute anything

    If you don't have a particular area you want to contribute, you can look up the help wanted: https://github.com/strongloop/loopback-next/labels/help%20wanted

    New Contributors?

    If you're new to contributing to LoopBack or open source projects in general, don't worry. You can look at issues with good first issue. Those issues are meant for new contributors: https://github.com/strongloop/loopback-next/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22

    marketing 
    opened by ritch 210
  • HasManyThrough using HasMany

    HasManyThrough using HasMany

    This pull request attempts to set up the hasManyThrough relation using the hasMany relation. It does it using a through property that can be provided to the @hasMany() decorator.

    I chose to setup the hasManyThrough this way in an attempt to stick to the existing loopback hasManyThrough spec.

    https://loopback.io/doc/en/lb3/HasManyThrough-relations.html#defining-a-hasmanythrough-relation

    import { Entity, model, hasMany, property } from '@loopback/repository';
    import { Patient, Appointment } from '../models';
    
    @model()
    export class Physician extends Entity {
      @property({
        type: 'string',
        id: true
      })
      id?: string;
    
      @hasMany(() => Patient, { through: () => Appointment })
      patients: Patient[];
    }
    

    See also #2264 See also #2356

    Checklist

    • [x] npm test passes on your machine
    • [x] New tests added or existing tests modified to cover all changes
    • [x] Code conforms with the style guide
    • [x] API Documentation in code was updated
    • [x] Documentation in /docs/site was updated
    • [x] Affected artifact templates in packages/cli were updated
    • [x] Affected example projects in examples/* were updated
    major help wanted Relations 
    opened by clayrisser 80
  • How to integrate socket in loopback 4 server API

    How to integrate socket in loopback 4 server API

    i want implement socket in my loopback4 server API. i have integrate socket in my API but it;s routing is not working.

    app.io = require('socket.io')(await app.start());
      app.io.on('connection', async function (socket: any) {
    
        console.log('connected', socket.id)
        socket.on('disconnect', function () {
          console.log('user disconnected');
        });
      });
    

    it's my code but socket is not connected. i have seen this example.

    https://github.com/raymondfeng/loopback4-example-websocket/ but it's work only socket server not working with API server. please suggest me how i can implement.

    opened by imranalisolanki 63
  • Wish list of LoopBack Next extensions

    Wish list of LoopBack Next extensions

    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

    help wanted 
    opened by raymondfeng 61
  • Inclusion of related models [MVP]

    Inclusion of related models [MVP]

    Description / Steps to reproduce / Feature proposal

    Follow up task for PR #1342

    Inclusion of related models (same as LB3) For example, Customer model has {include: ['order']}. When query on Customer, the result should includes the Order array.

    Duplicates:

    • Include related models in "GET /mymodels" results #1889
    • https://stackoverflow.com/questions/53162562/loopback-4-hasmany-include-filter-error-500/53172949

    Follow-up stories:

    • Add support for "include" and "fields" to findById (REST API) #1721

    Acceptance Criteria

    MVP scope

    2019Q3

    • [x] Add keyFrom to resolved relation metadata #3441
    • [x] Test relations against databases #3442
    • [x] Add findByForeignKeys helper (initial version) #3443
    • [x] Introduce InclusionResolver concept #3445
    • [x] Include related models in DefaultCrudRepository #3446
    • [x] Implement InclusionResolver for hasMany relation #3447
    • [x] Implement InclusionResolver for belongsTo relation #3448
    • [x] Implement InclusionResolver for hasOne relation #3449
    • [x] Update todo-list example to use inclusion resolver #3450

    2019Q4

    • [x] Reject create/update requests when data contains navigational properties #3439
    • [x] Add inclusion resolvers to lb4 relation CLI #3451
    • [x] Verify relation type in resolve{Relation}Metadata #3440
    • [x] Run repository tests for PostgreSQL #3436
    • [x] Run repository tests for Cloudant #3437
    • [x] Blog post: announce Inclusion of related models #3452

    Out of MVP scope

    • [ ] Support inq splitting in findByForeignKeys #3444
    • [x] Include related models with a custom scope #3453
    • [ ] Recursive inclusion of related models #3454
    • [ ] Reject queries with incompatible "filter.fields" and "filter.include" #3455
    • [ ] Spike: robust handling of ObjectID type for MongoDB #3456

    See https://github.com/strongloop/loopback-next/issues/3585 for the full list.

    epic Juggler Relations user adoption feature parity 
    opened by dhmlau 50
  • feat: @loopback/boot

    feat: @loopback/boot

    Initial implementation of a Phase based Booter in Application as well as a @loopback/boot package to contain booters.

    implements #780

    Checklist

    • [x] npm test passes on your machine
    • [x] New tests added or existing tests modified to cover all changes
    • [x] Code conforms with the style guide
    • [x] Related API Documentation was updated
    • [x] Affected artifact templates in packages/cli were updated
    • [x] Affected example projects in packages/example-* were updated
    opened by virkt25 48
  • throws MaxListenersExceededWarning

    throws MaxListenersExceededWarning

    Description

    I'm using LB4 with PostgreSQL DataSource. Currently I have 36 models with multiple relations between them. Throws the following warning

    (node:39148) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 connected listeners added. Use emitter.setMaxListeners() to increase limit

    setup

    "dependencies": {
        "@loopback/boot": "^1.0.7",
        "@loopback/context": "^1.3.0",
        "@loopback/core": "^1.1.2",
        "@loopback/openapi-v3": "^1.1.4",
        "@loopback/repository": "^1.1.0",
        "@loopback/rest": "^1.5.0",
        "@loopback/rest-explorer": "^1.1.3",
        "@loopback/service-proxy": "^1.0.4",
        "loopback-connector-postgresql": "^3.5.0"
      }
    
    bug help wanted 
    opened by Joel-Raju 46
  • Calling for Contributors on LB Extensions

    Calling for Contributors on LB Extensions

    As you might know already, we're wrapping up on the LoopBack4 Core Beta release.ย  We are now calling out to our LB community users (especially @strongloop/loopback-next) to develop LB extensions! ย 

    How it works

    Tell us

    Let us know which extension you'd like to build.ย  Here is the wish list voted by the community: https://github.com/strongloop/loopback-next/issues/512. Examples of LB extensions: - Authentication: https://github.com/strongloop/loopback-next/tree/master/packages/authentication - Log extension: https://github.com/strongloop/loopback4-example-log-extension (currently in dev branch)

    Build it

    One of the LB project maintainers will be assigned to you to walk you through the whole journey of creating an extension from the beginning till the end.

    Get recognized

    We'll broadcast your work in our web site and social media! ย  For more information about LoopBack 4, please refer to: http://loopback.io/doc/en/lb4.

    | Extension | Descriptions | Developers | LB4 Maintainer | ------------- |:-------------:| -----:|-----:| | GraphQL | Component to provide GraphQL Endpoint for Models. https://github.com/strongloop/loopback-next/issues/656 | @virkt25 , @mpicard, @beeman, Help Welcome | Taranveer (@virkt25) | |gRPC | https://github.com/strongloop/loopback-next/issues/675 | @jonathan-casarrubias, @VMois | @raymondfeng or @bajtos | |API Explorer | https://github.com/strongloop/loopback-next/issues/559 | @ssh24 |@b-admike | |MQTT | MQTT transport https://github.com/strongloop/loopback-next/issues/710 | @akashjarad, @Negrero | TBD

    References

    • Extension Starter: https://github.com/strongloop/loopback4-extension-starter
    stale help wanted 
    opened by dhmlau 39
  • Loopback does not process MSSQL tables with 100 million records

    Loopback does not process MSSQL tables with 100 million records

    Steps to reproduce

    At work we have started using Loopback with Mssql and today we have to connect with a view with 100 million records but I have encountered a problem ... Tedious is not able to process the request with filters or limit

    Current Behavior

    I am currently returning an error like this: ?filter[limit]=100: 500 RequestError: Timeout: Request failed to complete in 15000ms

    Expected Behavior

    I expected him to give me 100 records back, I don't expect them to ever return me, it's impossible in less than 15 seconds!

    Additional information

    darwin x64 13.1.0

    โ”œโ”€โ”€ @loopback/[email protected]
    โ”œโ”€โ”€ @loopback/[email protected]
    โ”œโ”€โ”€ @loopback/[email protected]
    โ”œโ”€โ”€ @loopback/[email protected]
    โ”œโ”€โ”€ @loopback/[email protected]
    โ”œโ”€โ”€ @loopback/[email protected]
    โ”œโ”€โ”€ @loopback/[email protected]
    โ”œโ”€โ”€ @loopback/[email protected]
    โ”œโ”€โ”€ @loopback/[email protected]
    โ”œโ”€โ”€ @loopback/[email protected]
    โ””โ”€โ”€ [email protected]
    
    
    bug help wanted db:MSSQL 
    opened by frbuceta 38
  • feat(context): add support to watch context bindings

    feat(context): add support to watch context bindings

    Recreated from https://github.com/strongloop/loopback-next/pull/2111 due to branch renaming.

    • ContextView - watches matching bindings of a context and maintain a live collection of values
    • @inject.view - injects an array of values resolved from bindings that match the filter function
    • Enhance @inject and @inject.getter to accept a binding filter function

    See docs.

    Checklist

    • [x] npm test passes on your machine
    • [x] New tests added or existing tests modified to cover all changes
    • [x] Code conforms with the style guide
    • [x] API Documentation in code was updated
    • [x] Documentation in /docs/site was updated
    • [ ] Affected artifact templates in packages/cli were updated
    • [ ] Affected example projects in examples/* were updated
    feature major IoC/Context 
    opened by raymondfeng 38
  • feat(core): introduce basic life cycle support for LoopBack applications

    feat(core): introduce basic life cycle support for LoopBack applications

    Implements:

    • https://github.com/strongloop/loopback-next/issues/1845
    • https://github.com/strongloop/loopback-next/issues/2034

    The PR implements the following features:

    • Allow registration and actions of life cycle observers using context bindings - See https://github.com/strongloop/loopback-next/blob/lifecycle/docs/site/Life-cycle.md
    • Discover and boot life cycle scripts
    • Add lb4 observer command to generate life cycle scripts - See https://github.com/strongloop/loopback-next/blob/lifecycle/docs/site/Life-cycle-observer-generator.md

    Test observer cli

    cd loopback-next
    git checkout lifecycle
    npm run build
    cd sandbox
    ../packages/cli/bin/cli-main.js app life
    cd life
    ../../packages/cli/bin/cli-main.js observer
    cd ../..
    npm i
    cd sandbox/life
    npm start
    

    Checklist

    • [x] npm test passes on your machine
    • [x] New tests added or existing tests modified to cover all changes
    • [x] Code conforms with the style guide
    • [x] API Documentation in code was updated
    • [x] Documentation in /docs/site was updated
    • [x] Affected artifact templates in packages/cli were updated
    • [ ] Affected example projects in examples/* were updated
    feature major CLI Docs Boot Core 
    opened by raymondfeng 38
  • chore: update dependency ajv to ^8.12.0

    chore: update dependency ajv to ^8.12.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | ajv (source) | ^8.11.2 -> ^8.12.0 | age | adoption | passing | confidence |


    Release Notes

    ajv-validator/ajv

    v8.12.0

    Compare Source


    Configuration

    ๐Ÿ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    ๐Ÿšฆ Automerge: Enabled.

    โ™ป Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    ๐Ÿ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 1
  • fix(cli): openapi generator implementation for controllers

    fix(cli): openapi generator implementation for controllers

    This PR adds implementation to controllers.

    Signed-off-by: Muhammad Aaqil [email protected]

    Checklist

    • [x] DCO (Developer Certificate of Origin) signed in all commits
    • [x] npm test passes on your machine
    • [x] New tests added or existing tests modified to cover all changes
    • [x] Code conforms with the style guide
    • [x] API Documentation in code was updated
    • [x] Documentation in /docs/site was updated
    • [x] Affected artifact templates in packages/cli were updated
    • [x] Affected example projects in examples/* were updated

    ๐Ÿ‘‰ Check out how to submit a PR ๐Ÿ‘ˆ

    opened by aaqilniz 1
  • npm test under packages/cli fails for one scenario

    npm test under packages/cli fails for one scenario

    Describe the bug

    npm test fails under packages/cli for one of the test scenarios. The reason for this test failing is the fact that $schema under tsconfig.json in the examples under the repository has the value: https://json.schemastore.org/tsconfig. While the examples available at npm registry has http://json.schemastore.org/tsconfig.

    Logs

    1) lb4 example
           removes project references from tsconfig:
    
          AssertionError: expected Object {
      $schema: 'http://json.schemastore.org/tsconfig',
      extends: '@loopback/build/config/tsconfig.common.json',
      compilerOptions: Object { outDir: 'dist', rootDir: 'src', composite: false },
      include: Array [ 'src/**/*', 'src/**/*.json' ]
    } to equal Object {
      $schema: 'https://json.schemastore.org/tsconfig',
      extends: '@loopback/build/config/tsconfig.common.json',
      compilerOptions: Object { outDir: 'dist', rootDir: 'src', composite: false },
      include: Array [ 'src/**/*', 'src/**/*.json' ]
    } (at $schema, A has 'http://json.schemastore.org/tsconfig' and B has 'https://json.schemastore.org/tsconfig')
          + expected - actual
    
           {
          -  "$schema": "http://json.schemastore.org/tsconfig"
          +  "$schema": "https://json.schemastore.org/tsconfig"
             "compilerOptions": {
               "composite": false
               "outDir": "dist"
               "rootDir": "src"
          
          at Assertion.fail (/***/loopback-next/packages/testlab/node_modules/should/as-function.js:275:17)
          at Assertion.value (/***/loopback-next/packages/testlab/node_modules/should/as-function.js:356:19)
          at /***/loopback-next/packages/cli/test/integration/generators/example.integration.js:125:33
    

    Additional information

    No response

    Reproduction

    https://github.com/loopbackio/loopback-next/tree/master/packages/cli

    bug 
    opened by aaqilniz 3
  • fix(cli): response type from array to object in belongsTo

    fix(cli): response type from array to object in belongsTo

    Signed-off-by: Muhammad Aaqil [email protected]

    In case of a belongsTo relation, the openAPI docs show array in the responses for the route: /sourceModel/:{targetId}/targetModel. (e.g: /orders/1/customer.

    The target instance will always be a single record in case of belongsTo relation. Hence the type should be object. This PR changes the type in the response (in openAPI docs) from array to object.

    There is one thing though, the actual response of the API is actually an object - not an array.

    Checklist

    • [x] DCO (Developer Certificate of Origin) signed in all commits
    • [x] npm test passes on your machine
    • [x] New tests added or existing tests modified to cover all changes
    • [x] Code conforms with the style guide
    • [x] API Documentation in code was updated
    • [x] Documentation in /docs/site was updated
    • [x] Affected artifact templates in packages/cli were updated
    • [x] Affected example projects in examples/* were updated
    opened by aaqilniz 2
  • chore: lock file maintenance

    chore: lock file maintenance

    Mend Renovate

    This PR contains the following updates:

    | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed |

    ๐Ÿ”ง This Pull Request updates lock files to use the latest dependency versions.


    Configuration

    ๐Ÿ“… Schedule: Branch creation - "before 3am on Monday" (UTC), Automerge - At any time (no schedule defined).

    ๐Ÿšฆ Automerge: Enabled.

    โ™ป Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    ๐Ÿ‘ป Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 1
  • REST-connector-example (lb3) shows up under lb4 docs

    REST-connector-example (lb3) shows up under lb4 docs

    Describe the bug

    I was looking up an example of the REST connector and reached here. Though the example shows up under lb4 docs, the example is actually for lb3.

    Is this somehow expected?

    Logs

    No response

    Additional information

    No response

    Reproduction

    https://loopback.io/doc/en/lb4/REST-connector-example.html

    bug 
    opened by aaqilniz 0
Owner
StrongLoop and IBM API Connect
API lifecycle from creation to management
StrongLoop and IBM API Connect
Modern framework for fast, powerful React apps

FUSION.JS Modern framework for fast, powerful React apps What is it? fuยทsion โ€” noun The process or result of joining two or more things together to fo

Fusion.js 1.5k Dec 30, 2022
Actionhero is a realtime multi-transport nodejs API Server with integrated cluster capabilities and delayed tasks

Actionhero The reusable, scalable, and quick node.js API server for stateless and stateful applications NPM | Web Site | Latest Docs | GitHub | Slack

Actionhero 2.3k Dec 29, 2022
๐Ÿš€ A RESTful API generator for Node.js

A RESTful API generator rest-hapi is a hapi plugin that generates RESTful API endpoints based on mongoose schemas. It provides a powerful combination

Justin Headley 1.2k Dec 31, 2022
Linked Data API for JavaScript

rdflib.js Javascript RDF library for browsers and Node.js. Reads and writes RDF/XML, Turtle and N3; Reads RDFa and JSON-LD Read/Write Linked Data clie

Read-Write Linked Data 527 Jan 1, 2023
In-memory filesystem with Node's API

In-memory filesystem with Node's API

Vadim Dalecky 1.4k Jan 4, 2023
LoopBack makes it easy to build modern API applications that require complex integrations.

LoopBack makes it easy to build modern applications that require complex integrations. Fast, small, powerful, extensible core Generate real APIs with

StrongLoop and IBM API Connect 4.4k Jan 4, 2023
Bearer provides all of the tools to build, run and manage API integrations.

Bearer - The API Integration Framework Bearer provides all of the tools to build, run and manage API Learn more Archive Status Bearer JS has been arch

Bearer.sh 22 Oct 31, 2022
Bearer provides all of the tools to build, run and manage API integrations.

Bearer - The API Integration Framework Bearer provides all of the tools to build, run and manage API Learn more Archive Status Bearer JS has been arch

Bearer.sh 22 Oct 31, 2022
This package support to build a complex application with domain driven design.

The library implement Domain Driven Design for Nodejs base on Typescript. Description This package support to build a complex application with th doma

null 11 Nov 7, 2022
Flutter makes it easy and fast to build beautiful apps for mobile and beyond

Flutter is Google's SDK for crafting beautiful, fast user experiences for mobile, web, and desktop from a single codebase. Flutter works with existing

Flutter 148.1k Jan 7, 2023
๐Ÿ”ฎ Proxies nodejs require in order to allow overriding dependencies during testing.

proxyquire Proxies nodejs's require in order to make overriding dependencies during testing easy while staying totally unobtrusive. If you want to stu

Thorsten Lorenz 2.7k Dec 27, 2022
browser-side require() the node.js way

browserify require('modules') in the browser Use a node-style require() to organize your browser code and load modules installed by npm. browserify wi

null 14.3k Jan 2, 2023
browser-side require() the node.js way

browserify require('modules') in the browser Use a node-style require() to organize your browser code and load modules installed by npm. browserify wi

null 14.3k Dec 31, 2022
browser-side require() the node.js way

browserify require('modules') in the browser Use a node-style require() to organize your browser code and load modules installed by npm. browserify wi

null 14.3k Dec 29, 2022
A demo of using the new require.context syntax in Expo with Metro bundler

Metro Context Modules Demo This is a demo of using the experimental 'Context Module' (require.context) feature in Metro bundler. Setup metro.config.js

Evan Bacon 17 Nov 19, 2022
Shikhar 4 Oct 9, 2022
Talk to anyone connected to your network, be it LAN or your hotspot. Doesn't require internet.

Apophis CLI to talk to anyone connected to your network, be it LAN or your hotspot. Doesn't require internet. Installation Make sure you have NodeJS (

Saurav Pal 3 Oct 16, 2022
API dot Open Sauced is NestJS and SupaBase powered OAS3 backend designed to remove client complexity and provide a structured graph of all @open-sauced integrations

?? Open Sauced Nest Supabase API ?? The path to your next Open Source contribution ?? Prerequisites In order to run the project we need the following

TED Vortex (Teodor-Eugen Duศ›ulescu) 13 Dec 18, 2022