Git Product home page Git Product logo

serverless-plugin-stage-variables's Introduction

serverless-plugin-stage-variables

Add stage variables for Serverless 1.x to ApiGateway, so you can use variables (and CloudFormation references!) in your Lambda's.

Usage

custom:
  stageVariables:
    bucket_name: ${env.BUCKET_NAME}
    endpoint: { "Fn::GetAtt": "CloudFrontEndpoint.DomainName" }
    foo: bar

plugins:
  - serverless-plugin-stage-variables

And then in your lambda's, you can use:

module.exports.foobar = (event, context, cb) => {
  // event.stageVariables.bucket_name
  // event.stageVariables.endpoint
  // event.stageVariables.foo
}

serverless-plugin-stage-variables's People

Contributors

chadjvw avatar dependabot-preview[bot] avatar dmhalejr avatar idandash avatar jaykay avatar jyrkiput avatar lcolman avatar lmammino avatar lzerma avatar mbfisher avatar medikoo avatar nzmkey avatar ryanb58 avatar sakai-y avatar skilleddeveloper avatar svdgraaf avatar vallyscode avatar

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

serverless-plugin-stage-variables's Issues

Trying to enable cloudwatch logs for Api Gateway

I am trying to enable cloudwatch logs for API Gateway. My serverless.yml looks like this:

provider:
name: aws
runtime: java8
cfLogs: true
logs:
restApi: # Optional configuration which specifies if API Gateway logs are used. This can either be set to true to use defaults, or configured via subproperties.
accessLogging: true # Optional configuration which enables or disables access logging. Defaults to true.
#format: 'requestId: $context.requestId' # Optional configuration which specifies the log format to use for access logging.
executionLogging: true # Optional configuration which enables or disables execution logging. Defaults to true.
level: INFO # Optional configuration which specifies the log level to use for execution logging. May be set to either INFO or ERROR.
fullExecutionData: true # Optional configuration which specifies whether or not to log full requests/responses for execution logging. Defaults to true.
#role: arn:aws:iam::123456:role # Existing IAM role for ApiGateway to use when managing CloudWatch Logs. If 'role' is not configured, a new role is automatically created.
#roleManagedExternally: false #

But Serverless is trying to updateStage after running sls deply.
Is there a way that serverless will update it to Cloudformation template?

An error occurred: ApiGatewayStage - Property RestApiId cannot be empty

Hi

When i update to 1.80 i get the following error when i deploy

Serverless Error ---------------------------------------

An error occurred: ApiGatewayStage - Property RestApiId cannot be empty..

Get Support --------------------------------------------
Docs: docs.serverless.com
Bugs: github.com/serverless/serverless/issues
Issues: forum.serverless.com

Your Environment Information -----------------------------
OS: linux
Node Version: 8.11.3
Serverless Version: 1.28.0

When i revert back to version 1.7.10. It works fine.

Here is my serverless.yml file.

`service: alerts

provider:
name: aws
stage: dev
runtime: nodejs8.10
region: ap-southeast-2

iamRoleStatements:
- Effect: "Allow"
Action:
- "lambda:InvokeFunction"
- "ec2:CreateNetworkInterface"
- "ec2:DescribeNetworkInterfaces"
- "ec2:DeleteNetworkInterface"
Resource: "*"

custom:
stageVariables:
env: ${opt:stage, self:provider.stage}

dev:
securityGroupIds:
- sg-70a03a17
subnetIds:
- subnet-a32f56c7
gisHost: xxxxxx
cmsHost: xxxxxx
enableCache: false
requireValidCert: '0'
uat:
securityGroupIds:
- sg-e1a73186
subnetIds:
- subnet-2921584d
gisHost: xxxxxxxx
cmsHost: xxxxxxxx
enableCache: false
requireValidCert: '1'
v1:
securityGroupIds:
- sg-74b02613
subnetIds:
- subnet-76295012
gisHost: xxxxxx
cmsHost: xxxxxx
enableCache: false
requireValidCert: '1'

package:
exclude:
- "/.npmignore"
- "
/node_modules/aws-sdk"
- "/node_modules/serverless-mocha-plugin"
- "
/test"
- "/.gitignore"
- "
/readme.md"

functions:
getAllAlerts:
handler: getAlerts.getAllAlerts
memorySize: 512
timeout: 45
vpc:
securityGroupIds: ${self:custom.${self:custom.stageVariables.env}.securityGroupIds}
subnetIds: ${self:custom.${self:custom.stageVariables.env}.subnetIds}
environment:
GIS_HOST: ${self:custom.${self:custom.stageVariables.env}.gisHost}
CMS_HOST: ${self:custom.${self:custom.stageVariables.env}.cmsHost}
REQUIRE_CERT: ${self:custom.${self:custom.stageVariables.env}.requireValidCert}
events:
- http:
path: alerts
method: get
private: true
cors: true
getDetail:
handler: getDetail.getDetail
memorySize: 128
timeout: 30
vpc:
securityGroupIds: ${self:custom.${self:custom.stageVariables.env}.securityGroupIds}
subnetIds: ${self:custom.${self:custom.stageVariables.env}.subnetIds}
environment:
GIS_HOST: ${self:custom.${self:custom.stageVariables.env}.gisHost}
CMS_HOST: ${self:custom.${self:custom.stageVariables.env}.cmsHost}
REQUIRE_CERT: ${self:custom.${self:custom.stageVariables.env}.requireValidCert}
events:
- http:
path: alerts/{id}
method: get
private: true
cors: true
getAlertByRegion:
handler: getAlerts.getAlertByRegion
memorySize: 512
timeout: 30
vpc:
securityGroupIds: ${self:custom.${self:custom.stageVariables.env}.securityGroupIds}
subnetIds: ${self:custom.${self:custom.stageVariables.env}.subnetIds}
environment:
GIS_HOST: ${self:custom.${self:custom.stageVariables.env}.gisHost}
CMS_HOST: ${self:custom.${self:custom.stageVariables.env}.cmsHost}
REQUIRE_CERT: ${self:custom.${self:custom.stageVariables.env}.requireValidCert}
events:
- http:
path: alerts/region/{regionId}
method: get
private: true
cors: true
getBookingAlerts:
handler: getBookingAlerts.getBookingAlerts
memorySize: 512
timeout: 30
vpc:
securityGroupIds: ${self:custom.${self:custom.stageVariables.env}.securityGroupIds}
subnetIds: ${self:custom.${self:custom.stageVariables.env}.subnetIds}
environment:
GIS_HOST: ${self:custom.${self:custom.stageVariables.env}.gisHost}
CMS_HOST: ${self:custom.${self:custom.stageVariables.env}.cmsHost}
REQUIRE_CERT: ${self:custom.${self:custom.stageVariables.env}.requireValidCert}
events:
- http:
path: alerts/bookingservices/{id}
method: get
private: true
cors: true
resources:
Resources:
ApiGatewayStage:
Type: AWS::ApiGateway::Stage
Properties:
MethodSettings:
- DataTraceEnabled: true
HttpMethod: ""
LoggingLevel: INFO
ResourcePath: "/
"
MetricsEnabled: true
plugins:

  • serverless-mocha-plugin
  • serverless-plugin-stage-variables

`

Could you please provide some guidance.

Thanks

Cannot read property 'cli' of undefined

We encountered this problem in Version 1.9.3 that just released yesterday.

`/codebuild/output/src123456789/src/serverless/sampleproject:
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Excluding development dependencies...
Serverless: Excluding development dependencies...

Type Error ---------------------------------------------

Cannot read property 'cli' of undefined

 For debugging logs, run again after setting the "SLS_DEBUG=*" environment variable. 

Get Support --------------------------------------------
Docs: docs.serverless.com
Bugs: github.com/serverless/serverless/issues
Issues: forum.serverless.com

Your Environment Information -----------------------------
OS: linux
Node Version: 10.14.1
Serverless Version: 1.38.0
`

P/s: we switch back to the previous version and it's working.

Unable to enable cloud watch logs

When trying to enable cloud watch logs for API Gateway using the configuration in serverless.yml, resulting deployment does not have it enabled even though configuration and cloud formation template contains it

Test code:

Serverless:

service:
  name: api-gateway-test

provider:
  name: aws
  profile: dev
  runtime: nodejs10.x

  stage: dev
  region: ap-southeast-1

functions:
  hello:
    handler: index.hello
    events:
      - http:
          path: /hello
          method: GET
  
resources:
  Resources:
    ApiGatewayStage:
      Type: AWS::ApiGateway::Stage        
      Properties:
        RestApiId:
          Ref: ApiGatewayRestApi
        MethodSettings:
          - DataTraceEnabled: true
            HttpMethod: '*'
            LoggingLevel: INFO
            ResourcePath: '/*'
            MetricsEnabled: true

plugins:
  - serverless-plugin-stage-variables

Using SLS_DEBUG=* , this is output during deployment:

Serverless: Invoke aws:info
Serverless: [AWS cloudformation 200 0.075s 0 retries] describeStacks({ StackName: 'api-gateway-test-dev' })
Serverless: [AWS cloudformation 200 0.085s 0 retries] listStackResources({ StackName: 'api-gateway-test-dev' })
Service Information
service: api-gateway-test
stage: dev
region: ap-southeast-1
stack: api-gateway-test-dev
resources: 11
api keys:
  None
endpoints:
  GET - https://1n58uu462m.execute-api.ap-southeast-1.amazonaws.com/dev/hello
functions:
  hello: api-gateway-test-dev-hello
layers:
  None
Serverless: [AWS sts 200 1.253s 0 retries] getCallerIdentity({})
Serverless: [AWS apigateway 200 0.294s 0 retries] getRestApis({ position: undefined, limit: 500 })
Serverless: [AWS apigateway 200 0.074s 0 retries] getStage({ restApiId: '1n58uu462m', stageName: 'dev' })
Serverless: [AWS apigateway 200 0.319s 0 retries] updateStage({ restApiId: '1n58uu462m',
  stageName: 'dev',
  patchOperations:
   [ { op: 'replace', path: '/tracingEnabled', value: 'false' },
     { op: 'replace', path: '/*/*/logging/dataTrace', value: 'false' },
     { op: 'replace', path: '/*/*/logging/loglevel', value: 'OFF' },
     [length]: 3 ] })
Serverless: [AWS apigateway 204 0.087s 0 retries] untagResource({ resourceArn:
   'arn:aws:apigateway:ap-southeast-1::/restapis/1n58uu462m/stages/dev',
  tagKeys: [ 'STAGE', [length]: 1 ] })
Serverless: [AWS cloudwatchlogs 400 0.055s 0 retries] deleteLogGroup({ logGroupName: '/aws/api-gateway/api-gateway-test-dev' })
Serverless: Invoke aws:deploy:finalize
Serverless: [AWS s3 200 0.063s 0 retries] listObjectsV2({ Bucket:
   'api-gateway-test-dev-serverlessdeploymentbucket-11ha0q8axdnya',
  Prefix: 'serverless/api-gateway-test/dev' })
Serverless Enterprise: Run `serverless login` and deploy again to explore, monitor, secure your serverless project for free.

Noticed there are patch operations which show values for datatrace as false.

Value null at 'createStageInput.deploymentId'

Hey,

I was following this article which suggested using your plugin, but when I try deploying I get the following error:
An error occurred: ApiGatewayStage - 1 validation error detected: Value null at 'createStageInput.deploymentId' failed to satisfy constraint: Member must not benull (Service: AmazonApiGateway; Status Code: 400; Error Code: ValidationException; Request ID: b4a97ac8-9f17-11e8-ad43-2f6b195fc4e8).

Any thoughts? Why is that variable not exported? Do you think its an issue with the plugin or on serverless side?

Thanks for your time,

Timotei

Unable to deploy APIGateway - An error occurred: ApiGatewayUsagePlan - API Stage not found

This plugin seems to screw up the way APIGateway is deployed and prevents CloudFront from deploying the pile properly when an apiKey is required in serverless.yml.

serverless.yml :

service:
  name: serviceName

provider:
  name: aws
  runtime: nodejs8.10
  apiKeys:
    - api-key

functions:
  hello:
    handler: handler.hello
    timeout: 15
    events:
      - http:
          path: hello
          method: post
          private: true

This works fine and deploys without a hiccup.

serverless.yml :

service:
  name: serviceName

custom:
  env_var: ${env:USER}-hello
  stageVariables:
    envVar: ${self:custom.env_var}

provider:
  name: aws
  runtime: nodejs8.10
  apiKeys:
    - api-key

functions:
  hello:
    handler: handler.hello
    timeout: 15
    events:
      - http:
          path: hello
          method: post
          private: true

plugins:
  - serverless-plugin-stage-variables

This does not deploy at all, serverless sends back the following error : An error occurred: ApiGatewayUsagePlan - API Stage not found

Going deeper into cloudFormation logs, it seems that the deployment sequence of APIGateway gets awry and fails when CloudFormation tries to create a UsagePlan at the same time as the API Stage.

Using serverless :
Framework Core: 1.59.3
Plugin: 3.2.5
SDK: 2.2.1
Components Core: 1.1.2
Components CLI: 1.4.0

Underscore vs Lodash

The package.json defines the dependency as underscore but src/index.js does require('lodash');

When I do sls deploy I get 'Cannot find module 'lodash' error.

When I installed lodash then it worked.

Stage Variables not being set

Not sure what the failure point is regarding my serverless version or additional plugins but sadly I can never get the stage variables defined on an initial deploy. Here is all the appropriate information: I have reason to believe it is serverless-webpack causing the error but it looks like the hook on this plugin is not even being hit. Any assistance would be helpful and if there is anything I can assist with here I am open to it. Great plugin!

Verbose Serverless Logs:

17:42:54.473 Deploying package...
17:42:55.477 Serverless: �[33mLoad command config�[39m
17:42:55.477 Serverless: �[33mLoad command config:credentials�[39m
17:42:55.607 Serverless: �[33mLoad command create�[39m
17:42:55.608 Serverless: �[33mLoad command install�[39m
17:42:55.679 Serverless: �[33mLoad command package�[39m
17:42:55.681 Serverless: �[33mLoad command deploy�[39m
17:42:55.681 Serverless: �[33mLoad command deploy:function�[39m
17:42:55.681 Serverless: �[33mLoad command deploy:list�[39m
17:42:55.682 Serverless: �[33mLoad command deploy:list:functions�[39m
17:42:55.684 Serverless: �[33mLoad command invoke�[39m
17:42:55.684 Serverless: �[33mLoad command invoke:local�[39m
17:42:55.685 Serverless: �[33mLoad command info�[39m
17:42:55.686 Serverless: �[33mLoad command logs�[39m
17:42:55.690 Serverless: �[33mLoad command login�[39m
17:42:55.696 Serverless: �[33mLoad command logout�[39m
17:42:55.705 Serverless: �[33mLoad command metrics�[39m
17:42:55.705 Serverless: �[33mLoad command print�[39m
17:42:55.706 Serverless: �[33mLoad command remove�[39m
17:42:55.707 Serverless: �[33mLoad command rollback�[39m
17:42:55.707 Serverless: �[33mLoad command rollback:function�[39m
17:42:55.708 Serverless: �[33mLoad command slstats�[39m
17:42:55.709 Serverless: �[33mLoad command plugin�[39m
17:42:55.772 Serverless: �[33mLoad command plugin�[39m
17:42:55.772 Serverless: �[33mLoad command plugin:install�[39m
17:42:55.772 Serverless: �[33mLoad command plugin�[39m
17:42:55.772 Serverless: �[33mLoad command plugin:uninstall�[39m
17:42:55.772 Serverless: �[33mLoad command plugin�[39m
17:42:55.772 Serverless: �[33mLoad command plugin:list�[39m
17:42:55.772 Serverless: �[33mLoad command plugin�[39m
17:42:55.772 Serverless: �[33mLoad command plugin:search�[39m
17:42:55.772 Serverless: �[33mLoad command config�[39m
17:42:55.772 Serverless: �[33mLoad command config:credentials�[39m
17:42:56.056 Serverless: �[33mLoad command rollback�[39m
17:42:56.056 Serverless: �[33mLoad command rollback:function�[39m
17:42:56.693 Serverless: �[33mLoad command webpack�[39m
17:42:57.086 Serverless: �[33mLoad command offline�[39m
17:42:57.086 Serverless: �[33mLoad command offline:start�[39m
17:42:57.203 Serverless: �[33mInvoke deploy�[39m
17:42:57.204 Serverless: �[33mInvoke package�[39m
17:42:57.205 Serverless: �[33mInvoke aws:common:validate�[39m
17:42:57.206 Serverless: �[33mInvoke aws:common:cleanupTempDir�[39m
17:42:57.209 Serverless: �[33mInvoke webpack:validate�[39m
17:42:57.210 Serverless: �[33mUsing configuration:�[39m
17:42:57.210 �[33m{�[39m
17:42:57.210 �[33m  "webpackConfig": "./webpack.config.js",�[39m
17:42:57.210 �[33m  "includeModules": true,�[39m
17:42:57.210 �[33m  "packager": "npm",�[39m
17:42:57.210 �[33m  "packagerOptions": {}�[39m
17:42:57.210 �[33m}�[39m
17:42:57.221 Serverless: �[33mRemoving /build/.webpack�[39m
17:42:57.222 Serverless: �[33mInvoke webpack:compile�[39m
17:42:57.222 Serverless: �[33mBundling with Webpack...�[39m
17:42:58.803    12 modules
17:42:58.804 Serverless: �[33mInvoke webpack:package�[39m
17:42:58.805 Serverless: �[33mFetch dependency graph from /build/package.json�[39m
17:43:02.198 Serverless: �[33mPackage lock found - Using locked versions�[39m
17:43:02.213 Serverless: �[33mPacking external modules: axios@^0.18.0�[39m
17:43:06.953 Serverless: �[33mPackage took [4740 ms]�[39m
17:43:07.005 Serverless: �[33mCopy modules: /build/.webpack/service [51 ms]�[39m
17:43:08.293 Serverless: �[33mPrune: /build/.webpack/service [1288 ms]�[39m
17:43:08.294 Serverless: �[33mRun scripts: /build/.webpack/service [0 ms]�[39m
17:43:08.526 Serverless: �[33mZip service: /build/.webpack/service [232 ms]�[39m
17:43:08.527 Serverless: �[33mPackaging service...�[39m
17:43:08.528 Serverless: �[33mRemove /build/.webpack�[39m
17:43:08.564 Serverless: �[33mInvoke aws:package:finalize�[39m
17:43:08.572 Serverless: �[33mInvoke aws:common:moveArtifactsToPackage�[39m
17:43:08.573 Serverless: �[33mInvoke aws:common:validate�[39m
17:43:08.756 Serverless: �[33mInvoke aws:deploy:deploy�[39m
17:43:09.241 Serverless: �[33mUploading CloudFormation file to S3...�[39m
17:43:09.410 Serverless: �[33mUploading artifacts...�[39m
17:43:09.411 Serverless: �[33mUploading service .zip file to S3 (152.21 KB)...�[39m
17:43:09.712 Serverless: �[33mValidating template...�[39m
17:43:09.919 Serverless: �[33mCreating Stack...�[39m
17:43:10.327 Serverless: �[33mChecking Stack create progress...�[39m
17:43:57.460 Serverless: �[33mStack create finished...�[39m
17:43:57.460 Serverless: �[33mInvoke aws:info�[39m
17:43:57.767 Serverless: �[33mInvoke aws:deploy:finalize�[39m

Appropriate package.json:

"axios": "^0.18.0",
"serverless": "^1.32.0",
"serverless-plugin-stage-variables": "^1.8.0"

serverless.yml:

service: <redacted>

custom:
  stageVariables:
    test: test
  webpack:
    webpackConfig: ./webpack.config.js
    includeModules: true
  serverless-offline:
    port: 7001
    skipCacheInvalidation: false

provider:
  name: aws
  runtime: nodejs8.10
  stage: int
  role: <redacted>
  cfnRole: <redacted>
  deploymentBucket:
    name: <redacted>
  environment:
     BASE_URL: <redacted>
    API_KEY_NAME: <redacted>
  apiKeys:
    - <redacted>

functions:
  app:
    handler: handler.main
    events:
      - http:
          path: / # this matches the base path
          method: ANY
          private: true
          integration: lambda
          authorizer:
            arn: ${file(./config/${opt:stage, self:provider.stage}.json):authorizer.arn}
            identitySource: method.request.header.Authorization, stageVariables.scopes
            type: request
      - http:
          path: /{any+} # this matches any path, the token 'any' doesn't mean anything special
          method: ANY
          private: true
          integration: lambda
          authorizer:
            arn: ${file(./config/${opt:stage, self:provider.stage}.json):authorizer.arn}
            identitySource: method.request.header.Authorization, stageVariables.scopes
            type: request
plugins:
  - serverless-webpack
  - serverless-offline
  - serverless-plugin-stage-variables

Unable to use custom provider resources

Serverless provide a way to add custom provider resources in serverless.yam. EG:

service: lambda-blah
custom:
  stageVariables:
    env: ${self:provider.stage} 
plugins:
  - serverless-plugin-stage-variables
provider: aws
functions:
  ...
resources:
  Resources:
    ApiGatewayStage:
      Type: AWS::ApiGateway::Stage
      Properties:
        MethodSettings:
          - DataTraceEnabled: true
            HttpMethod: "*"
            LoggingLevel: INFO
            ResourcePath: "/*"
            MetricsEnabled: true

The existing code will always overwrite the custom resources merged earlier in serverless/lib/plugins/aws/deploy/lib/mergeCustomProviderResources.js

Suggest do check if template.Resources.ApiGatewayStage already exists before setting

Error provisioning stack - ApiGatewayStage - stage already exists

I tried to set up the variables below:

custom:
  stageVariables:
    stage: ${opt:stage, self:provider.stage}
    service: ${self:service}

plugins:
  - serverless-plugin-stage-variables

But got the following error:

  Serverless Error ---------------------------------------

     An error occurred while provisioning your stack: ApiGatewayStage
     - dev already exists.

  Stack Trace --------------------------------------------

ServerlessError: An error occurred while provisioning your stack: ApiGatewayStage - dev already exists.
    at sdk.request.then (/usr/local/lib/node_modules/serverless/lib/plugins/aws/lib/monitorStack.js:91:33)
    at tryCatcher (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:509:31)
    at Promise._settlePromise (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:566:18)
    at Promise._settlePromise0 (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:611:10)
    at Promise._settlePromises (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:690:18)
    at Async._drainQueue (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/async.js:138:16)
    at Async._drainQueues (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/async.js:148:10)
    at Immediate.Async.drainQueues (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/async.js:17:14)
    at runCallback (timers.js:570:20)
    at tryOnImmediate (timers.js:550:5)
    at processImmediate [as _immediateCallback] (timers.js:529:5)

Not sure if this is some kind of conflict with having stage set in the provider which looks like:

provider:
  name: aws
  runtime: nodejs4.3
  region: ap-southeast-2
  stage: dev

When I take out the plugin config everything deploys fine

Staging Variables not showing up, but are in the cloud-flare template?

I have things setup like so and am not getting any staging variables in my API Gateway.

service: groups

...

custom:
  stageVariables:
    thestage: iamavariable
  dotenv:
    path: /app/.env
  packageExternal:
    external:
      - '../lib'
  pythonRequirements:
    dockerizePip: false
  stage: ${opt:stage, self:provider.stage}

plugins:
  - serverless-python-requirements
  - serverless-dotenv-plugin
  - serverless-plugin-stage-variables
  - serverless-package-external

And deploy with:

sls deploy -s beta

After the deploy, I am not seeing my variable in the staging variables area on my API. This was working about a week ago, and I haven't changed anything in this codebase since. Did AWS change something?

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.