Git Product home page Git Product logo

charts's Introduction

charts Build Status Slack Community

README Header

Cloud Posse

This is the Geodesic microservices distribution of Helm charts for Kubernetes.

Geodesic is the fastest way to get up and running with a rock solid, production grade cloud platform. Use standalone our shell to get started quickly and avoid dependency hell. It ships with support for Kubernetes, Kops, Helm and Terraform.

What makes this distribution special is we've developed these charts to integrate with third party services like Github for authentication (OAuth2) and Duo for MFA.


This project is part of our comprehensive "SweetOps" approach towards DevOps.

It's 100% Open Source and licensed under the APACHE2.

Quick Start

How do I install these charts?

After enabling the repositories mentioned above, just run helm install cloudposse-incubator/$chart.

Currently, most of the charts are located in the incubator/ directory until they reach greater maturity.

Incubator Repository

To add the incubator chart repository to your local helm client, run helm repo add:

$ helm repo add cloudposse-incubator https://charts.cloudposse.com/incubator/
"cloudposse-incubator" has been added to your repositories

You can then run helm search cloudposse-incubator to see the charts.

Stable Repository

To add the stable chart repository to your local helm client, run helm repo add:

$ helm repo add cloudposse-stable https://charts.cloudposse.com/stable/
"cloudposse-stable" has been added to your repositories

You can then run helm search cloudposse-stable to see the charts.

Repository Structure

This GitHub repository contains all the source for the versioned charts released at https://charts.cloudposse.com/ (the Chart Repository). The repository is hosted by AWS CloudFront and backed by S3 for maximum reliability. We also maintain a standalone Docker container that contains all of these charts together with helm serve for distributing them inside your cluster. You can self-host this container in kubernetes using our chart for helm-serve.

The Charts in this repository are organized into two folders:

  • stable/ charts that meet the criteria in the technical requirements;
  • incubator/ charts are those that do not meet these criteria

The stable/ directory in the master branch of this repository corresponds to the version of charts packaged and published in the Chart Repository. We also make all previous versions available through the Repository. Every time a Pull Request is merged into master, it goes through our CI/CD process hosted by TravisCI.

Charts remain in the incubator/ directory until we feel confident they are functionally stable and their interface will not radically change. Please take this into consideration when deploying services from this directory. We suggest to always pin your charts to a specific version for stability. We also maintain a separate Chart repository for branches and Pull Requests that are useful for Chart development. These are located at https://charts.dev.cloudposse.com/$branch/incubator/$chart.

Status of the Project

This project is under active development. We try our best to keep all of our repositories stable (even our incubator charts), but you might run into issues. Please let us know if you run into any issue, or better yet, contribute a fix or feature.

Share the Love

Like this project? Please give it a ★ on our GitHub! (it helps us a lot)

Are you using this project or any of our other projects? Consider leaving a testimonial. =)

Related Projects

Check out these related projects.

  • Charts - Official Kubernetes Charts
  • Charts README - To get a quick introduction to Charts
  • Helm - For more information on using Helm, refer to the Helm's

Help

Got a question? We got answers.

File a GitHub issue, send us an email or join our Slack Community.

README Commercial Support

DevOps Accelerator for Startups

We are a DevOps Accelerator. We'll help you build your cloud infrastructure from the ground up so you can own it. Then we'll show you how to operate it and stick around for as long as you need us.

Learn More

Work directly with our team of DevOps experts via email, slack, and video conferencing.

We deliver 10x the value for a fraction of the cost of a full-time engineer. Our track record is not even funny. If you want things done right and you need it done FAST, then we're your best bet.

  • Reference Architecture. You'll get everything you need from the ground up built using 100% infrastructure as code.
  • Release Engineering. You'll have end-to-end CI/CD with unlimited staging environments.
  • Site Reliability Engineering. You'll have total visibility into your apps and microservices.
  • Security Baseline. You'll have built-in governance with accountability and audit logs for all changes.
  • GitOps. You'll be able to operate your infrastructure via Pull Requests.
  • Training. You'll receive hands-on training so your team can operate what we build.
  • Questions. You'll have a direct line of communication between our teams via a Shared Slack channel.
  • Troubleshooting. You'll get help to triage when things aren't working.
  • Code Reviews. You'll receive constructive feedback on Pull Requests.
  • Bug Fixes. We'll rapidly work with you to fix any bugs in our projects.

Slack Community

Join our Open Source Community on Slack. It's FREE for everyone! Our "SweetOps" community is where you get to talk with others who share a similar vision for how to rollout and manage infrastructure. This is the best place to talk shop, ask questions, solicit feedback, and work together as a community to build totally sweet infrastructure.

Discourse Forums

Participate in our Discourse Forums. Here you'll find answers to commonly asked questions. Most questions will be related to the enormous number of projects we support on our GitHub. Come here to collaborate on answers, find solutions, and get ideas about the products and services we value. It only takes a minute to get started! Just sign in with SSO using your GitHub account.

Newsletter

Sign up for our newsletter that covers everything on our technology radar. Receive updates on what we're up to on GitHub as well as awesome new projects we discover.

Office Hours

Join us every Wednesday via Zoom for our weekly "Lunch & Learn" sessions. It's FREE for everyone!

zoom

Contributing

Bug Reports & Feature Requests

Please use the issue tracker to report any bugs or file feature requests.

Developing

If you are interested in being a contributor and want to get involved in developing this project or help out with our other projects, we would love to hear from you! Shoot us an email.

In general, PRs are welcome. We follow the typical "fork-and-pull" Git workflow.

  1. Fork the repo on GitHub
  2. Clone the project to your own machine
  3. Commit changes to your own branch
  4. Push your work back up to your fork
  5. Submit a Pull Request so that we can review your changes

NOTE: Be sure to merge the latest changes from "upstream" before making a pull request!

Copyright

Copyright © 2017-2020 Cloud Posse, LLC

License

License

See LICENSE for full details.

Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.

Trademarks

All other trademarks referenced herein are the property of their respective owners.

About

This project is maintained and funded by Cloud Posse, LLC. Like it? Please let us know by leaving a testimonial!

Cloud Posse

We're a DevOps Professional Services company based in Los Angeles, CA. We ❤️ Open Source Software.

We offer paid support on all of our projects.

Check out our other projects, follow us on twitter, apply for a job, or hire us to help with your cloud strategy and implementation.

Contributors

Erik Osterman
Erik Osterman
Igor Rodionov
Igor Rodionov
Michal Matyjek
Michal Matyjek
Alexander Babai
Alexander Babai
Andriy Knysh
Andriy Knysh

README Footer Beacon

charts's People

Contributors

3h4x avatar aknysh avatar alebabai avatar asiegman avatar benbentwo avatar cathex-matt avatar deiga avatar derrickburns avatar dylanbannon avatar goruha avatar hairmare avatar hookercookerman avatar max-lobur avatar maximmi avatar moonmoon1919 avatar nuru avatar osterman avatar rms1000watt avatar robosung avatar vadim-hleif 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

charts's Issues

[incubator/monochart] Dockercfg name mismatch

Environment

Chart: incubator/monochart v0.25.0

What I expect

If I use the following in values.yaml

dockercfg:
  enabled: true
  image:
    pullSecret:
      registry: foo
      username: bar
      password: baz
...

A secret is created and referenced correctly in a Deployment's pullSecrets

What I experienced

If, for example, my release name is foo, the secret is named foo-dockercfg but the imagePullSecrets section in the deployment says

imagePullSecrets:
  - name: foo-monochart

Since they don't match, the image pull fails.

Visual Aids

image

image

image

image

Thumbor: AttributeError: REDIS_STORAGE_IGNORE_ERRORS when using smart

i tried the thumbor chart. While the it works good for resizing, i get an error when using /smart in the route. The thumbor pod then logs:

    focal_points = yield gen.maybe_future(self.context.modules.storage.get_detector_data(self.smart_storage_key))
  File "/usr/local/lib/python2.7/site-packages/tornado/gen.py", line 1055, in run
    value = future.result()
  File "/usr/local/lib/python2.7/site-packages/tornado/concurrent.py", line 238, in result
    raise_exc_info(self._exc_info)
  File "/usr/local/lib/python2.7/site-packages/tornado/gen.py", line 307, in wrapper
    yielded = next(result)
  File "/usr/local/lib/python2.7/site-packages/thumbor/storages/mixed_storage.py", line 74, in get_detector_data
    result = yield gen.maybe_future(self.detector_storage.get_detector_data(path))
  File "/usr/local/lib/python2.7/site-packages/tornado/concurrent.py", line 483, in wrapper
    future.result()
  File "/usr/local/lib/python2.7/site-packages/tornado/concurrent.py", line 238, in result
    raise_exc_info(self._exc_info)
  File "/usr/local/lib/python2.7/site-packages/tornado/concurrent.py", line 471, in wrapper
    result = f(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/tc_redis/storages/redis_storage.py", line 129, in get_detector_data
    callback(self._get_detector_data(path))
  File "/usr/local/lib/python2.7/site-packages/tc_redis/utils.py", line 23, in wrapper
    exc_value
  File "/usr/local/lib/python2.7/site-packages/tc_redis/storages/redis_storage.py", line 69, in on_redis_error
    if self.context.config.REDIS_STORAGE_IGNORE_ERRORS is True:
  File "/usr/local/lib/python2.7/site-packages/derpconf/config.py", line 211, in __getattr__
    raise AttributeError(name)
AttributeError: REDIS_STORAGE_IGNORE_ERRORS

it seems like REDIS_STORAGE_IGNORE_ERRORS is not defined (?)

[incubator/route53] Broken repo urls in install description.

I think following lines in README.md:
$ helm repo add cloudposse-incubator http://charts.cloudposse.com/incubator/packages/
$ helm install incubator/route53-kubernetes

Should be:
$ helm repo add cloudposse-incubator http://charts.cloudposse.com/incubator/
$ helm install cloudposse-incubator/route53-kubernetes

Update cert-manager to use Let's Encrypt

I've received a mail from Let's Encrypt warning than previous versions of cert-manager are causing trouble to its servers, and that they will stop accepting requests from versions inferior to 0.8.0.

We've been working with Jetstack, the authors of cert-manager, on a
series of fixes to the client. Cert-manager sometimes falls into a
traffic pattern where it sends really excessive traffic to Let's
Encrypt's servers, continuously. To mitigate this, we plan to start
blocking all traffic from cert-manager versions less than 0.8.0 (the
current semver minor release), as of November 1, 2019. Please upgrade
all of your cert-manager instances before then.

We're sending this email because this is the contact address of your
cert-manager instance at:

XXX.XXX.XXX.XX .

Version 0.8.0 is much better but we still observe excessive traffic in
some cases. We're working with Jetstack to improve these cases. As new
versions of cert-manager are released, we will add the non-current
versions to our block list after 3 months. We strongly encourage
cert-manager users to stay up-to-date with new versions.

Also, there is an opportunity to help both Jetstack and Let's Encrypt.
Once you've upgraded, please check the logs for your cert-manager
instances from time to time. Are they making excessive requests to Let's
Encrypt (more than, say, 10 per day over multiple days)? If so, please
share details at https://github.com/jetstack/cert-manager/issues/1948 .

Thanks,
Let's Encrypt Team

We should upgrade the chart

{{ requiredEnv "RELEASE_NAME" }} used in the file values.example.yaml in monochart

{{ requiredEnv "RELEASE_NAME" }} used in the file values.example.yam in monochartl, but I think this is typically a Helmfile-thing and can't be used in a Helm values file.

[...]
  affinity:
    # use of simple rule
    affinityRule: "ShouldBeOnDifferentNode"
    # use custom affinity rule. Here app MUST be on different host then postgres instance for it
    podAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app
            operator: In
            values:
            - postgresql
          - key: release
            operator: In
            values:
            - "{{ requiredEnv "RELEASE_NAME" }}-postgresql"
        topologyKey: "kubernetes.io/hostname"

"coalesce.go:165: warning: skipped value for ..." when installing monochart

When I try to install or template monochart I get the following errors

coalesce.go:165: warning: skipped value for configMaps: Not a table.
coalesce.go:165: warning: skipped value for secrets: Not a table.
coalesce.go:165: warning: skipped value for env: Not a table.
coalesce.go:165: warning: skipped value for env: Not a table.
coalesce.go:165: warning: skipped value for secrets: Not a table.
coalesce.go:165: warning: skipped value for configMaps: Not a table.

The command that I use is:

helm template ./monochart --values ./monochart/values.example.yaml

This is the result:

---
# Source: monochart/templates/secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: release-name-monochart-env-default
  annotations:
    test.secret.annotation: value
  labels:
    app: monochart
    chart: monochart-0.19.1
    heritage: "Helm"
    raar: env
    test_label: value
type: Opaque
data:
  SECRET_ENV_NAME: RU5WX1ZBTFVF
---
# Source: monochart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: release-name-monochart-env-default
  annotations:
    test.annotation: value
  labels:
    app: monochart
    chart: monochart-0.19.1
    heritage: "Helm"
    component: env
    test_label: value
data:
  CONFIG_ENV_NAME: ENV_VALUE
---
# Source: monochart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: release-name-monochart-files-default
  annotations:
    test.annotation: value
  labels:
    app: monochart
    chart: monochart-0.19.1
    heritage: "Helm"
    component: files
    test_label: value
data:
  config.test.txt: |
    some text
---
# Source: monochart/templates/deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: release-name-monochart
  annotations:
    nginx.version: 1.15.3
  labels:
    app: monochart
    chart: monochart-0.19.1
    heritage: "Helm"
    component: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: monochart
      release: RELEASE-NAME
  revisionHistoryLimit: 10
  template:
    metadata:
      name: release-name-monochart
      annotations:
        checksum/config: 165a67949dac02dddcf221cc922cb694be98da09218747ed7c729408cd1c4422
        checksum/secret: b5fe613c0d2ad6de7de9f011f86295346d5e7c78e2bd212b83303113f9f39749
      labels:
        app: monochart
        release: "RELEASE-NAME"
        serve: "true"
    spec:
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - monochart
                - key: release
                  operator: In
                  values:
                  - "RELEASE-NAME"
              topologyKey: "kubernetes.io/hostname"
        podAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - postgresql
              - key: bla
                operator: In
                values:
                - bla-postgresql
            topologyKey: kubernetes.io/hostname
      containers:
      - name: RELEASE-NAME
        image: nginx:1.15.3
        imagePullPolicy: IfNotPresent
        
        envFrom:
        - configMapRef:
            name: release-name-monochart-env-default
        - secretRef:
            name: release-name-monochart-env-default
        env:
          - name: INLINE_ENV_NAME
            value: "ENV_VALUE"
        envFrom:
          - configMapRef:
              name: config-1
          - configMapRef:
              name: config-2
        ports:
          - name: default
            containerPort: 8080
            protocol: TCP
        volumeMounts:
        - mountPath: "/data"
          name: storage
        
        - mountPath: /config-default
          name: config-default-files
        - mountPath: /secret-default
          name: secret-default-files
          readOnly: true
      imagePullSecrets:
        - name: docker-secret-1
        - name: docker-secret-2
      volumes:
      - name: storage
        emptyDir: {}
      
      - name: config-default-files
        configMap:
          name: release-name-monochart-files-default
      - name: secret-default-files
        secret:
          secretName: release-name-monochart-files-default

It seems that the configMaps are generated, but not all the secrets.

Chart version:
0.19.1

Helm version:
version.BuildInfo{Version:"v3.1.0", GitCommit:"b29d20baf09943e134c2fa5e1e1cab3bf93315fa", GitTreeState:"clean", GoVersion:"go1.13.7"}

[route53-kubernetes] No permission to EKS master

I found the chart route53-kubernetes here and try to use to manage the dns names.

But the document insists that this DaemonSet has to be deployed to master nodes. But in latest AWS EKS, we have no control to master nodes.

What should I do?

[incubator/openvpn] Can't log in in VPN client

Hi,

I've managed to install the chart and make it work with the latest letsencrypt (had to create RBAC stuff and set the letsencrypt_ca to https://acme-v02.api.letsencrypt.org/directory to avoid an "ACME V1" error), but I can't seem to log in in my VPN client.

The certificate is created as simon even though my github username is fredsted, not sure if that has anything to do with it.

Here's some output from the openvpn pod:

Fri Jan 24 13:50:30 2020 172.21.48.88:7254 PLUGIN_CALL: POST /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so/PLUGIN_AUTH_USER_PASS_VERIFY status=1
Fri Jan 24 13:50:30 2020 172.21.48.88:7254 PLUGIN_CALL: plugin function PLUGIN_AUTH_USER_PASS_VERIFY failed with status 1: /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so
Fri Jan 24 13:50:30 2020 172.21.48.88:7254 TLS Auth Error: Auth Username/Password verification failed for peer
Fri Jan 24 13:50:30 2020 172.21.48.88:7254 WARNING: cipher with small block size in use, reducing reneg-bytes to 64MB to mitigate SWEET32 attacks.
Fri Jan 24 13:50:30 2020 172.21.48.88:7254 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 DHE-RSA-AES256-GCM-SHA384, 2048 bit RSA
Fri Jan 24 13:50:30 2020 172.21.48.88:7254 [simon] Peer Connection Initiated with [AF_INET]172.21.48.88:7254

I'm using Google Authenticator for Github, so I've tried several combinations of simon/fredsted and with/without my Google Authenticator code.

I can also see that the link to "Github PAM" does not work, so I can't investigate that part further. https://github.com/cloudposse/github-pam

Is it possible to just delete the password authentication from the VPN? I can make do with the oauth sign-in-to-download-vpn-config part.

@alebabai @osterman

bastion does not seems to work and returns permission denied.

I used the bastion incubator helm chart from here and deployed on K8s and tried to connect to it using below commands but getting permission denied always.

1. Get the application URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace default -l "app=bastion-bastion" -o jsonpath="{.items[0].metadata.name}")
echo "Run 'ssh -p 2222 127.0.0.1' to use your application"
kubectl port-forward $POD_NAME 2222:22

Trying to connect like below:

➜ ssh -p 2211 [email protected]
The authenticity of host '[127.0.0.1]:2211 ([127.0.0.1]:2211)' can't be established.
RSA key fingerprint is SHA256:S44NDDfev4x8NCJHMVJgYXrhx4OS/SoYGer5TMGUgqg.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[127.0.0.1]:2211' (RSA) to the list of known hosts.
[email protected]: Permission denied (publickey).

  • I checked the Github API Key is correct
  • I checked the SSH key in Github is there as well
  • I also checked the users created in github-authorized-keys & bastion containers as well from Github team that is configured in values.yaml file

Is there anything missing from my end? can you point me somewhere to fix the issue?

Logs:
Connection closed by authenticating user azizzoaib786 127.0.0.1 port 59712 [preauth]
Connection closed by authenticating user azizzoaib786 127.0.0.1 port 59730 [preauth]

postfix secrets.yaml include path doesn't include any parent-chart path

When attempting to use postfix as a subchart, its deployment.yaml appears to refer to the wrong path of the postfix secrets.yaml:

[debug] CHART PATH: /Users/.../myapp

Error: render error in "myapp/charts/postfix/templates/deployment.yaml": template: myapp/charts/postfix/templates/deployment.yaml:14:28: executing "myapp/charts/postfix/templates/deployment.yaml" at <include (print $.Cha...>: error calling include: template: no template "postfix/templates/secrets.yaml" associated with template "gotpl"

I guess the problem is that in postfix's deploy.yaml:

     annotations:
        checksum/secret: {{ include (print $.Chart.Name "/templates/secrets.yaml") . | sha256sum }}

this evaluates to postfix/templates/secrets.yaml instead of myapp/charts/postfix/templates/secrets.yaml? However I tried unpacking the postfix .tgz archive and patching its contents instead of referring to it from requirements.yaml, but didn't get that working yet either.

Make Portal Proxy Optional

what

  • Support proxy.enabled flag

why

  • The proxy was design to bypass limitations of nginx-ingress so that we could route traffic across namespaces. This was accomplished using traefik
  • This introduces another format of ingress which may not be desirable

FluentD Chart ConfigMap default values do not work

What happened

In the FluentD chart the default values for in config map are not mapped to the ConfigMap resource that is created, when deployed, no values are placed in the config map.

What I expect

Values from the default values file to be in ConfigMap

What else

I noticed in the values.yaml file that the value is configMap, but the range function in the configmap template is looking for configMaps seen here.

prometheus: serviceMonitorSelector can't be evaluated

When running the following values.yaml:

serviceMonitors:
  - name: frontend-chart
    selector:
      matchLabels:
        tier: frontend-chart
    endpoints:
    - port: prometheus
      interval: 5s

serviceMonitorsSelector:
  matchLabels:
    tier: frontend-chart

I'm getting an error:

$ helm install --dry-run --debug -f values.yaml cloudposse-incubator/prometheus
...
Error: render error in "prometheus/templates/servicemonitors.yaml": template: prometheus/templates/servicemonitors.yaml:19:17: executing "prometheus/templates/servicemonitors.yaml" at <.Values.serviceMonit...>: can't evaluate field serviceMonitorSelector in type interface {}

What is proper use of serviceMonitors and serviceMonitorsSelector parameters?

There are some suspicious lines in servicemonitors.yaml template:

  • serviceMonitorSelector chart paramater applies the same for each monitor in the list of service monitors
  • There could be wrong indentation in name: {{ .name }} line
  • There are .Values.serviceMonitorsSelector in prometheus.yaml and .Values.serviceMonitorSelector in servicemonitors.yaml, note the monitor word plurality, is it intended to have two almost identical parameters?

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.