Code Monkey home page Code Monkey logo

Comments (23)

rblaine95 avatar rblaine95 commented on September 24, 2024 4

I don't think this is stale

from charts.

bjsee avatar bjsee commented on September 24, 2024 2

I just reviewed the changes from 21.0.4 to 21.1.0 and saw that since then the env variables KC_HOSTNAME_URL and KC_HOSTNAME_ADMIN_URL are used instead of KC_HOSTNAME_ADMIN in

- name: KC_HOSTNAME_ADMIN_URL

If I'm not mistaken, it seems that the path defined in the ingress or in httpRelativePath is not used in this context. Is this an oversight, or am I misunderstanding the configuration of the environment variables?

from charts.

lerminou avatar lerminou commented on September 24, 2024 1

Hi, it is introduced by the commit: #25386. I'm impacted too.
My use case is to serve the admin ingress on the same host but with the adminIngress as a subPath to allow ip restriction on this path only.

from charts.

singhbaljit avatar singhbaljit commented on September 24, 2024 1

According to the v1 docs, the path should be added when paying the
KC_HOSTNAME_ADMIN_URL.

Set the base URL for accessing the administration console, including scheme, host, port and path

This may also be the case in v2.

from charts.

rblaine95 avatar rblaine95 commented on September 24, 2024 1

Hi @jotamartos

The logs I commented previously were from a Kind Cluster running on Github Actions in a CI pipeline.

I've upgraded to 22.0.0 of the Keycloak helm chart and everything seems to be working now.

from charts.

rblaine95 avatar rblaine95 commented on September 24, 2024 1

Using 22.0.0, the environment variables are being set correctly.

Example values.yaml

httpRelativePath: /auth/

production: true
proxy: edge
# https://github.com/bitnami/charts/issues/28154
proxyHeaders: xforwarded

ingress:
  enabled: true
  ingressClassName: nginx-external
  hostname: keycloak.example.com
  annotations:
    # Deny access to the admin console and master realm
    nginx.ingress.kubernetes.io/server-snippet: |
      location /auth/admin {
        deny all;
      }
      location /auth/realms/master {
        deny all;
      }
adminIngress:
  enabled: true
  ingressClassName: nginx-internal
  hostname: keycloak.example.com

Resulting statefulset:

- name: KEYCLOAK_HTTP_RELATIVE_PATH
  value: /auth/
- name: KC_HOSTNAME_ADMIN_URL
  value: https://keycloak.example.com/auth/
- name: KC_HOSTNAME_URL
  value: https://keycloak.example.com/auth/

from charts.

bjsee avatar bjsee commented on September 24, 2024

Hi,
we have observed a similar issue. With Helm Chart version 21.0.4, everything was functioning as expected. However, after updating to 21.1.0, the Admin WebApp can no longer be accessed because the "auth" part is being removed. When I try to access the URL https://mdomain.de/auth/, it redirects to https://mdomain.de/admin/ instead of https://mdomain.de/auth/admin/.

Here are the chart values used:

httpRelativePath: /auth/
ingress:
    annotations:
        kubernetes.io/ingress.class: nginx
        nginx.org/location-snippets: |
          proxy_set_header X-Forwarded-Proto https;
          proxy_set_header X-Forwarded-Port 443;
        nginx.org/proxy-buffer-size: 128k 
        nginx.org/proxy-buffers: 4 256k
        nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
        cert-manager.io/issuer: cert-issuer
    enabled: true
    hostname: 
    path: /
    pathType: Prefix
    tls:
        - hosts:
            - ...
          secretName: cert-secret
adminIngress:
    annotations:
        kubernetes.io/ingress.class: nginx
    enabled: true
    hostname: 
    path: /auth/admin
    pathType: Prefix
    tls:
        - hosts:
            - 
          secretName: cert-secret

Thanks for your help.

from charts.

CaptainKrby avatar CaptainKrby commented on September 24, 2024

Any update ?

from charts.

alemorcuq avatar alemorcuq commented on September 24, 2024

Thanks for the investigation you did, @bjsee. I can see this in Keycloak's documentation:

hostname-admin-url

Set the base URL for accessing the administration console, including scheme, host, port and path

CLI: --hostname-admin-url
Env: KC_HOSTNAME_ADMIN_URL

Have you tried adding your httpRelativePath to the KC_HOSTNAME_ADMIN_URL environment variable? Perhaps its missing there.

from charts.

CaptainKrby avatar CaptainKrby commented on September 24, 2024

Hi @alemorcuq, I've been trying all morning to adjust the values but nothing works, even adjusting httpRelativePath to KC_HOSTNAME_ADMIN_URL...
I reiterate that everything was working on chart 21.0.2 and then only 404 errors.

Can you reproduce my environment?

from charts.

leunamnauj avatar leunamnauj commented on September 24, 2024

No updates?

from charts.

CaptainKrby avatar CaptainKrby commented on September 24, 2024

Waiting too. In the meantime, Keycloak updates are blocked...

from charts.

rblaine95 avatar rblaine95 commented on September 24, 2024

Can confirm, doing the following resolves the issue for us:

httpRelativePath: /auth/

adminIngress:
  enabled: true
  hostname: keycloak.example.com

extraEnvVars:
  - name: KC_HOSTNAME_ADMIN_URL
    value: 'https://{{ .Values.adminIngress.hostname }}{{ .Values.httpRelativePath }}'
$ curl -sI https://keycloak.example.com/auth/
HTTP/2 302
date: Thu, 13 Jun 2024 08:44:38 GMT
location: https://keycloak.example.com/auth/admin/

We're using Chart version 21.4.1

from charts.

CaptainKrby avatar CaptainKrby commented on September 24, 2024

Hello @singhbaljit, thank you for your fix, I'll take a look on it asap

from charts.

singhbaljit avatar singhbaljit commented on September 24, 2024

@CaptainKrby I don't think my fix will resolve your issue. I think we need to append the {{ .Values.httpRelativePath }} for the full hostname URL.

from charts.

github-actions avatar github-actions commented on September 24, 2024

This Issue has been automatically marked as "stale" because it has not had recent activity (for 15 days). It will be closed if no further activity occurs. Thanks for the feedback.

from charts.

github-actions avatar github-actions commented on September 24, 2024

Due to the lack of activity in the last 5 days since it was marked as "stale", we proceed to close this Issue. Do not hesitate to reopen it later if necessary.

from charts.

rblaine95 avatar rblaine95 commented on September 24, 2024

Does this work?
As far as I know, this is still an issue

/reopen

from charts.

CaptainKrby avatar CaptainKrby commented on September 24, 2024

I confirm this issue is still there.

from charts.

rblaine95 avatar rblaine95 commented on September 24, 2024

On 21.7.1 I now have to do the following for everything to work

httpRelativePath: /auth/

proxy: edge
proxyHeaders: forwarded

extraEnvVars:
- name: KC_HOSTNAME_ADMIN_URL
  value: "https://{{ .Values.adminIngress.hostname }}{{ .Values.httpRelativePath }}"
- name: KC_HOSTNAME_URL
  value: "https://{{ .Values.ingress.hostname }}{{ .Values.httpRelativePath }}"

ingress:
  enabled: true
  ingressClassName: nginx-external
  hostname: keycloak.example.com
adminIngress:
  enabled: true
  ingressClassName: nginx-internal
  hostname: keycloak.example.com

from charts.

andresbono avatar andresbono commented on September 24, 2024

Hi, #28176 should fix this issue. Please, give it a try!

from charts.

rblaine95 avatar rblaine95 commented on September 24, 2024

Thank you @andresbono.

I tested by updating the chart to the latest release -21.7.4 - and ran a helm install in a local kind cluster for testing.

It appears the Keycloak Config CLI was updated and is not compatible with Keycloak 24.0.5.

2024-07-24T17:58:20.548Z  INFO 1 --- [           main] d.a.k.config.provider.KeycloakProvider   : Wait 120 seconds until http://keycloak-headless:8080/auth/ is available ...
2024-07-24T17:58:22.694Z  WARN 1 --- [           main] d.a.k.config.provider.KeycloakProvider   : Local keycloak-config-cli (6.1.5-25.0.1) and remote Keycloak (24.0.5) may not compatible.
2024-07-24T17:58:23.620Z ERROR 1 --- [           main] d.a.k.config.KeycloakConfigRunner        : Cannot update realm 'master': HTTP 400 Bad Request{"error":"Unrecognized field \"organizationsEnabled\" (class org.keycloak.representations.idm.RealmRepresentation), not marked as ignorable (141 known properties: \"userFederationMappers\", \"rememberMe\", \"duplicateEmailsAllowed\", \"adminEventsDetailsEnabled\", \"users\", \"clientOfflineSessionMaxLifespan\", \"webAuthnPolicyRequireResidentKey\", \"webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister\", \"components\", \"otpPolicyType\", \"accessCodeLifespanUserAction\", \"id\", \"webAuthnPolicyAttestationConveyancePreference\", \"enabledEventTypes\", \"applications\", \"webAuthnPolicyPasswordlessSignatureAlgorithms\", \"eventsListeners\", \"ssoSessionMaxLifespanRememberMe\", \"defaultDefaultClientScopes\", \"webAuthnPolicyPasswordlessCreateTimeout\", \"clientOfflineSessionIdleTimeout\", \"notBefore\", \"publicKey\", \"smtpServer\", \"clientPolicies\", \"res
2024-07-24T17:58:23.622Z  INFO 1 --- [           main] d.a.k.config.KeycloakConfigRunner        : keycloak-config-cli ran in 00:05.235.

I'm not setting the version of Keycloak Config CLI or Keycloak anywhere in the Helm chart, relying fully on the default values set in the bitnami/keycloak helm chart.

Edit to prevent spam
Same issue on 21.7.5:

2024-07-25T08:18:59.953Z  INFO 1 --- [           main] d.a.k.config.KeycloakConfigApplication   : Starting KeycloakConfigApplication v6.1.5 using Java 21.0.4 with PID 1 (/opt/bitnami/keycloak-config-cli/keycloak-config-cli-25.0.1.jar started by ? in /opt/bitnami/keycloak-config-cli)
2024-07-25T08:18:59.962Z  INFO 1 --- [           main] d.a.k.config.KeycloakConfigApplication   : No active profile set, falling back to 1 default profile: "default"
2024-07-25T08:19:02.433Z  INFO 1 --- [           main] d.a.k.config.KeycloakConfigApplication   : Started KeycloakConfigApplication in 4.628 seconds (process running for 6.88)
2024-07-25T08:19:05.639Z  INFO 1 --- [           main] d.a.k.config.KeycloakConfigRunner        : Importing file 'file:/config/01-master-realm.yaml'
2024-07-25T08:19:06.559Z  INFO 1 --- [           main] d.a.k.config.provider.KeycloakProvider   : Wait 120 seconds until http://keycloak-headless:8080/auth/ is available ...
2024-07-25T08:19:07.623Z  WARN 1 --- [           main] d.a.k.config.provider.KeycloakProvider   : Local keycloak-config-cli (6.1.5-25.0.1) and remote Keycloak (24.0.5) may not compatible.
2024-07-25T08:19:08.430Z ERROR 1 --- [           main] d.a.k.config.KeycloakConfigRunner        : Cannot update realm 'master': HTTP 400 Bad Request{"error":"Unrecognized field \"organizationsEnabled\" (class org.keycloak.representations.idm.RealmRepresentation), not marked as ignorable (141 known properties: \"userFederationMappers\", \"rememberMe\", \"duplicateEmailsAllowed\", \"adminEventsDetailsEnabled\", \"users\", \"clientOfflineSessionMaxLifespan\", \"webAuthnPolicyRequireResidentKey\", \"webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister\", \"components\", \"otpPolicyType\", \"accessCodeLifespanUserAction\", \"id\", \"webAuthnPolicyAttestationConveyancePreference\", \"enabledEventTypes\", \"applications\", \"webAuthnPolicyPasswordlessSignatureAlgorithms\", \"eventsListeners\", \"ssoSessionMaxLifespanRememberMe\", \"defaultDefaultClientScopes\", \"webAuthnPolicyPasswordlessCreateTimeout\", \"clientOfflineSessionIdleTimeout\", \"notBefore\", \"publicKey\", \"smtpServer\", \"clientPolicies\", \"resetPasswordAllowed\", \"webAuthnPolicyAvoidSameAuthenticatorRegister\", \"accessTokenLifespanForImplicitFlow\", \"webAuthnPolicyPasswordlessUserVerificationRequirement\", \"clientScopes\", \"internationalizationEnabled\", \"defaultRole\", \"accessTokenLifespan\", \"passwordCredentialGrantAllowed\", \"federatedUsers\", \"applicationScopeMappings\" [truncated]])\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 3952] (through reference chain: org.keycloak.representations.idm.RealmRepresentation[\"organizationsEnabled\"])","error_description":"For more on this error consult the server log at the debug level."}
2024-07-25T08:19:08.431Z  INFO 1 --- [           main] d.a.k.config.KeycloakConfigRunner        : keycloak-config-cli ran in 00:04.062.

from charts.

jotamartos avatar jotamartos commented on September 24, 2024

That doesn't happen in a fresh installation, could you please let us know if you can reproduce it in a new deployment?

�[38;5;6mkeycloak �[38;5;5m10:26:20.10 �[0m�[38;5;2mINFO �[0m ==> 
�[38;5;6mkeycloak �[38;5;5m10:26:20.10 �[0m�[38;5;2mINFO �[0m ==> �[1mWelcome to the Bitnami keycloak container�[0m
�[38;5;6mkeycloak �[38;5;5m10:26:20.10 �[0m�[38;5;2mINFO �[0m ==> Subscribe to project updates by watching �[1mhttps://github.com/bitnami/containers�[0m
�[38;5;6mkeycloak �[38;5;5m10:26:20.10 �[0m�[38;5;2mINFO �[0m ==> Submit issues and feature requests at �[1mhttps://github.com/bitnami/containers/issues�[0m
�[38;5;6mkeycloak �[38;5;5m10:26:20.10 �[0m�[38;5;2mINFO �[0m ==> Upgrade to Tanzu Application Catalog for production environments to access custom-configured and pre-packaged software components. Gain enhanced features, including Software Bill of Materials (SBOM), CVE scan result reports, and VEX documents. To learn more, visit �[1mhttps://bitnami.com/enterprise�[0m
�[38;5;6mkeycloak �[38;5;5m10:26:20.11 �[0m�[38;5;2mINFO �[0m ==> 
�[38;5;6mkeycloak �[38;5;5m10:26:20.11 �[0m�[38;5;2mINFO �[0m ==> ** Starting keycloak setup **
�[38;5;6mkeycloak �[38;5;5m10:26:20.13 �[0m�[38;5;2mINFO �[0m ==> Validating settings in KEYCLOAK_* env vars...
�[38;5;6mkeycloak �[38;5;5m10:26:20.15 �[0m�[38;5;2mINFO �[0m ==> Trying to connect to PostgreSQL server keycloak-postgresql...
timeout reached before the port went into state "inuse"
�[38;5;6mkeycloak �[38;5;5m10:26:36.17 �[0m�[38;5;2mINFO �[0m ==> Found PostgreSQL server listening at keycloak-postgresql:5432
�[38;5;6mkeycloak �[38;5;5m10:26:36.18 �[0m�[38;5;2mINFO �[0m ==> Configuring database settings
�[38;5;6mkeycloak �[38;5;5m10:26:36.21 �[0m�[38;5;2mINFO �[0m ==> Enabling statistics
�[38;5;6mkeycloak �[38;5;5m10:26:36.22 �[0m�[38;5;2mINFO �[0m ==> Enabling health endpoints
�[38;5;6mkeycloak �[38;5;5m10:26:36.23 �[0m�[38;5;2mINFO �[0m ==> Configuring http settings
�[38;5;6mkeycloak �[38;5;5m10:26:36.25 �[0m�[38;5;2mINFO �[0m ==> Configuring hostname settings
�[38;5;6mkeycloak �[38;5;5m10:26:36.26 �[0m�[38;5;2mINFO �[0m ==> Configuring cache count
�[38;5;6mkeycloak �[38;5;5m10:26:36.27 �[0m�[38;5;2mINFO �[0m ==> Configuring log level
�[38;5;6mkeycloak �[38;5;5m10:26:36.28 �[0m�[38;5;2mINFO �[0m ==> ** keycloak setup finished! **

�[38;5;6mkeycloak �[38;5;5m10:26:36.33 �[0m�[38;5;2mINFO �[0m ==> ** Starting keycloak **
Appending additional Java properties to JAVA_OPTS: -Djgroups.dns.query=keycloak-headless.test.svc.cluster.local
Updating the configuration and installing your custom providers, if any. Please wait.
2024-07-30 10:26:57,441 WARN  [org.key.services] (build-7) KC-SERVICES0047: metrics (org.jboss.aerogear.keycloak.metrics.MetricsEndpointFactory) is implementing the internal SPI realm-restapi-extension. This SPI is internal and may change without notice
2024-07-30 10:27:01,240 WARN  [org.key.services] (build-7) KC-SERVICES0047: metrics-listener (org.jboss.aerogear.keycloak.metrics.MetricsEventListenerFactory) is implementing the internal SPI eventsListener. This SPI is internal and may change without notice
2024-07-30 10:27:12,865 WARN  [io.qua.dep.ind.IndexWrapper] (build-45) Failed to index org.apache.activemq.artemis.core.journal.RecordInfo: Class does not exist in ClassLoader QuarkusClassLoader:Deployment Class Loader: PROD for keycloak@3b582111
2024-07-30 10:27:12,867 WARN  [io.qua.dep.ind.IndexWrapper] (build-45) Failed to index org.apache.activemq.artemis.core.journal.Journal: Class does not exist in ClassLoader QuarkusClassLoader:Deployment Class Loader: PROD for keycloak@3b582111
2024-07-30 10:27:12,936 WARN  [io.qua.dep.ind.IndexWrapper] (build-45) Failed to index io.mashona.logwriting.ArrayStore: Class does not exist in ClassLoader QuarkusClassLoader:Deployment Class Loader: PROD for keycloak@3b582111
2024-07-30 10:27:12,951 WARN  [io.qua.dep.ind.IndexWrapper] (build-45) Failed to index jakarta.jms.XAConnection: Class does not exist in ClassLoader QuarkusClassLoader:Deployment Class Loader: PROD for keycloak@3b582111
2024-07-30 10:27:12,952 WARN  [io.qua.dep.ind.IndexWrapper] (build-45) Failed to index jakarta.jms.XASession: Class does not exist in ClassLoader QuarkusClassLoader:Deployment Class Loader: PROD for keycloak@3b582111
2024-07-30 10:27:12,952 WARN  [io.qua.dep.ind.IndexWrapper] (build-45) Failed to index jakarta.jms.XAConnectionFactory: Class does not exist in ClassLoader QuarkusClassLoader:Deployment Class Loader: PROD for keycloak@3b582111
2024-07-30 10:27:13,134 WARN  [io.qua.dep.ind.IndexWrapper] (build-45) Failed to index org.apache.tools.ant.Task: Class does not exist in ClassLoader QuarkusClassLoader:Deployment Class Loader: PROD for keycloak@3b582111
2024-07-30 10:27:13,261 WARN  [io.qua.dep.ind.IndexWrapper] (build-45) Failed to index org.springframework.core.io.DefaultResourceLoader: Class does not exist in ClassLoader QuarkusClassLoader:Deployment Class Loader: PROD for keycloak@3b582111
2024-07-30 10:27:13,263 WARN  [io.qua.dep.ind.IndexWrapper] (build-45) Failed to index org.springframework.core.io.ResourceLoader: Class does not exist in ClassLoader QuarkusClassLoader:Deployment Class Loader: PROD for keycloak@3b582111
2024-07-30 10:27:13,266 WARN  [io.qua.dep.ind.IndexWrapper] (build-45) Failed to index org.springframework.core.io.Resource: Class does not exist in ClassLoader QuarkusClassLoader:Deployment Class Loader: PROD for keycloak@3b582111
2024-07-30 10:27:13,363 WARN  [io.qua.dep.ind.IndexWrapper] (build-45) Failed to index jakarta.jms.Connection: Class does not exist in ClassLoader QuarkusClassLoader:Deployment Class Loader: PROD for keycloak@3b582111
2024-07-30 10:27:37,350 INFO  [io.qua.dep.QuarkusAugmentor] (main) Quarkus augmentation completed in 51007ms
2024-07-30 10:27:47,266 INFO  [org.keycloak.quarkus.runtime.hostname.DefaultHostnameProvider] (main) Hostname settings: Base URL: <unset>, Hostname: <request>, Strict HTTPS: false, Path: <request>, Strict BackChannel: false, Admin URL: <unset>, Admin: <request>, Port: -1, Proxied: false
2024-07-30 10:27:56,469 WARN  [io.quarkus.agroal.runtime.DataSources] (JPA Startup Thread) Datasource <default> enables XA but transaction recovery is not enabled. Please enable transaction recovery by setting quarkus.transaction-manager.enable-recovery=true, otherwise data may be lost if the application is terminated abruptly
2024-07-30 10:28:00,879 INFO  [org.infinispan.CONTAINER] (keycloak-cache-init) ISPN000556: Starting user marshaller 'org.infinispan.jboss.marshalling.core.JBossUserMarshaller'
2024-07-30 10:28:03,248 INFO  [org.infinispan.CLUSTER] (keycloak-cache-init) ISPN000078: Starting JGroups channel `ISPN` with stack `kubernetes`
2024-07-30 10:28:03,257 INFO  [org.jgroups.JChannel] (keycloak-cache-init) local_addr: 1d7b36de-96f9-404c-9d3e-359e74a64602, name: keycloak-0-64657
2024-07-30 10:28:03,440 INFO  [org.jgroups.protocols.FD_SOCK2] (keycloak-cache-init) server listening on *.57800
2024-07-30 10:28:04,044 INFO  [org.keycloak.broker.provider.AbstractIdentityProviderMapper] (main) Registering class org.keycloak.broker.provider.mappersync.ConfigSyncEventListener
2024-07-30 10:28:05,463 INFO  [org.jgroups.protocols.pbcast.GMS] (keycloak-cache-init) keycloak-0-64657: no members discovered after 2002 ms: creating cluster as coordinator
2024-07-30 10:28:05,543 INFO  [org.infinispan.CLUSTER] (keycloak-cache-init) ISPN000094: Received new cluster view for channel ISPN: [keycloak-0-64657|0] (1) [keycloak-0-64657]
2024-07-30 10:28:06,268 INFO  [org.infinispan.CLUSTER] (keycloak-cache-init) ISPN000079: Channel `ISPN` local address is `keycloak-0-64657`, physical addresses are `[10.92.2.7:7800]`
2024-07-30 10:28:06,433 WARN  [org.infinispan.CONFIG] (keycloak-cache-init) ISPN000569: Unable to persist Infinispan internal caches as no global state enabled
2024-07-30 10:28:13,260 INFO  [org.keycloak.quarkus.runtime.storage.legacy.liquibase.QuarkusJpaUpdaterProvider] (main) Initializing database schema. Using changelog META-INF/jpa-changelog-master.xml

UPDATE SUMMARY
Run:                        124
Previously run:               0
Filtered out:                 0
-------------------------------
Total change sets:          124

2024-07-30 10:28:26,637 INFO  [org.keycloak.connections.infinispan.DefaultInfinispanConnectionProviderFactory] (main) Node name: keycloak-0-64657, Site name: null
2024-07-30 10:28:27,756 INFO  [org.keycloak.services] (main) KC-SERVICES0050: Initializing master realm
2024-07-30 10:28:42,453 INFO  [org.keycloak.services] (main) KC-SERVICES0009: Added user 'user' to realm 'master'
2024-07-30 10:28:42,948 INFO  [io.quarkus] (main) Keycloak 24.0.5 on JVM (powered by Quarkus 3.8.4) started in 65.193s. Listening on: http://0.0.0.0:8080
2024-07-30 10:28:42,949 INFO  [io.quarkus] (main) Profile dev activated. 
2024-07-30 10:28:42,949 INFO  [io.quarkus] (main) Installed features: [agroal, cdi, hibernate-orm, jdbc-postgresql, keycloak, logging-gelf, narayana-jta, reactive-routes, resteasy-reactive, resteasy-reactive-jackson, smallrye-context-propagation, vertx]
2024-07-30 10:28:42,959 WARN  [org.keycloak.quarkus.runtime.KeycloakMain] (main) Running the server in development mode. DO NOT use this configuration in production.

Thanks

from charts.

Related Issues (20)

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.