Git Product home page Git Product logo

cordova-spotify's Introduction

Cordova Spotify SDK Plugin

Greenkeeper badge Travis

An Apache Cordova plugin providing access to the Spotify SDK for iOS and Android.

API documentation

Features

This plugin provides a very simple and atomic layer over playback functionality of the Spotify SDK. It allows you to play Spotify tracks via their URI. Metadata and authentication functionality has deliberately been left out in favor of the Web API and our Spotify OAuth 2 plugin cordova-spotify-oauth.

Installation

cordova plugin add cordova-spotify

Note: Make sure your installation path doesn't contain any spaces.

Examples

The plugin is very simple to use. All methods can be called at any time and there is no initialization step. The plugin performs all necessary state changes automatically. All methods documented in the API documentation are exported under the global cordova.plugins.spotify-object.

Play some good music

cordova.plugins.spotify.play("spotify:track:0It6VJoMAare1zdV2wxqZq", { 
  clientId: "<YOUR SPOTIFY CLIENT ID",
  token: "<YOUR VALID SPOTIFY ACCESS TOKEN WITH STREAMING SCOPE>"
})
  .then(() => console.log("Music is playing 🎶"));

React to user pressing pause button

cordova.plugins.spotify.pause()
  .then(() => console.log("Music is paused ⏸"));

Display current playing position

cordova.plugins.spotify.getPosition()
  .then(pos => console.log(`We're currently ${pos}ms into the track.`))
  .catch(() => console.log("Whoops, no track is playing right now."));

React to events from native SKDs

cordova.plugins.spotify.getEventEmitter()
  .then(emitter => emitter.on('playbackevent', eventName => {
    switch (eventName) {
      case 'PlaybackNotifyPlay':
        console.log("Playback was started");
         break;
      case 'PlaybackNotifyPause':
        console.log("Playback was paused");
        break;
      default:
        console.log("Some other event was raised:", eventName);
        break;
    }
  }))

Contributing

Pull requests are very welcome! Please use the gitmoji style for commit messages.

cordova-spotify's People

Contributors

greenkeeper[bot] avatar leolabs avatar mraerino avatar neolegends avatar psamsotha 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

cordova-spotify's Issues

Not able to play Podcast Episode

I am trying to use this plugin to play a Spotify podcast episode rather than a song with the following code.

cordova.plugins.spotify.play("spotify:episode:3rY1aNlsNfWCpt90BQ9Qth", { clientId: "myClientId", token: this.token })

I am getting the error for non premium users: "login_failed: Spotify Premium Required". Non premium users are still able to listen to individual podcast episodes, so I expected this to work. Is this a limitation of the Spotify SDK or is this an issue?

Documentation Link Broken - getEventEmitter

I am trying to get an understanding of the events that come from the event emitter, particularly around network issues, but the links (https://spotify.github.io/android-sdk/player/com/spotify/sdk/android/player/Error.html, https://spotify.github.io/android-sdk/player/com/spotify/sdk/android/player/PlayerEvent.html) appear to be broken.

To provide more context, I am trying to make a custom music player that updates a songs time on a slider/timeline component, and rather than make a getPosition() call every 500 ms (or whatever time I decided), I would like to create my own logic to move the slider, but that listen to issues with playback due to network issues to know when to pause my slider. Any ideas on the event to listen to?

Play multiple tracks?

This is more a question/feature request than a bug report.

In the documentation I see that you can play a track via it's track uri. Is it possible to put multiple tracks in the queue?

I'd like to use this ideally on iOS. After browsing the documentation of the Spotify iOS SDK I found a function that adds tracks to the queue. (only one at a time)
https://spotify.github.io/ios-sdk/html/Protocols/SPTAppRemotePlayerAPI.html#//api/name/enqueueTrackUri:callback:

I imagine this would have to be added to the native code and unfortunately I don't know objective-c (or is it swift now?) at all.

If someone who had the same problem found a different solution I'd be happy to know about it :)

For info: On android I can use the spotify web sdk where you just have to add an array of tracks.

Can't figure out how to play song

First off this plugin looks like it is exactly what I need, but I can't seem to truly figure out how it is used. It would be awesome if there was an example application that someone could look at and figure out how to use the plugin.

`
var events = spotifySession.getEventEmitter();

        spotifySession.getEventEmitter().then( function(data){
            console.log("got event emitter");
            console.log(data);
        });

        spotifySession.play(trackInfo.track.uri, {
            token:$scope.spotifyAuthToken,
            "clientId":client_ID
        }).then(
            function(data){console.log(data)},
            function(data){console.log(data)}
            );

`

The app is an ionic app and at this point in the code I have already authenticated with OAuth. The event emitter that is printed is a promise but has no events emitted out of it and no sound plays. Any direction provided would be greatly appreciated.

Question about refresh tokens

When an access token expires, does the SDK handle the token refresh and provide a new session? Or do I need to do this myself? If it does handle it, how do I get access to the new session. Thank you!

Installation via npm error

Recently I was developing with an older copy of this repo that i pulled down locally and was referencing. Today decided to try installing via the recent npm release and am receiving an error:

Running command:pathtostuff/plugins/cordova-spotify/package.sh pathtoApp Failed to install 'cordova-spotify': Error: spawn EACCES at exports._errnoException (util.js:1026:11) at ChildProcess.spawn (internal/child_process.js:313:11) at Object.exports.spawn (child_process.js:385:9) at Object.exports.spawn (/usr/local/lib/node_modules/cordova/node_modules/cordova-common/src/superspawn.js:134:31) at runScriptViaChildProcessSpawn (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/hooks/HooksRunner.js:226:23) at runScript (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/hooks/HooksRunner.js:167:16) at /usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/hooks/HooksRunner.js:133:20 at _fulfilled (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:787:54) at self.promiseDispatch.done (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:816:30) at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:749:13) Error: spawn EACCES

Universal links support

Right now we only support custom protocols as a way to finish the authentication, but universal links are the new shiny way to do in-app-redirects. We should support them.

Rewrite shell scripts to JS

Current installation shell scripts sometimes have trouble with execution rights. Cordova is able to execute JS files instead of shell scripts on installation time, though. They're less likely to have these problems.

Extracted from #21 . Closes #21.

New Plugin install generates error: Failed to restore plugin

Background on the issue

When I attempt to install the plugin into a new cordova project, it is creating an error on install.

My Cordova version

Command I am running

cordova plugin add cordova-spotify

Expected results

  • Plugin should install without errors

Actual results

Adding cordova-spotify to package.json
Saved plugin info for "cordova-spotify" to config.xml
Failed to restore plugin "cordova-spotify" from config.xml. You might need to try adding it again. Error: Error: Cannot find module '../cordova/platform_metadata'

Additional notes

Thanks again for putting this together!!

Information request, not really an issue

Hi Guys,
The changes look promising, way nicer API. I really like the new focus and I understand the removing of the authentication part.

But this leaves an interesting gap for the existing users: how to handle auth?
I can see a few options:

  1. Use different cordova plugins to just do auth: they do not exist as fas as I can see... There are currently no modules available that do both Ios and Android. So this is not really feasible atm.

  2. Use webApi to do auth using the good 'ol serverless api you guys supplied, and supply the acces-token to this module?

How did you guys tackle this? Did you make a separate module / plugin for this? Or the webapi approach? Or something else?

Thnx for all the hard work!

How do we use this?

It'd be nice if there were a small usage example. I'm a little new to using cordova plugins, so figuring this out on my own is proving to be difficult.

I installed with --save:
Plugin "rocks.festify.cordova-spotify" already installed on android.
Plugin "rocks.festify.cordova-spotify" already installed on ios.

I'm looking at my config.xml and I see cordova-spotify in there.

I see that this cordova-spotify.js exports authenticate and login. I see that the plugin.xml is listing SpotifyConnector. I'm not sure if cordova just automatically imports this into my project and it's somehow available in my global window object or what. Any direction would be appreciated. I apologize if this is not the appropriate place to post this...

I found in the plugin.xml clobbers target="cordova.plugins" /, so maybe if I run this on an actual device I can access cordova.plugins.login or cordiva.plugins.authenticate?

Failed to install cordova-spotify: Cordova-error: Uh oh!

When trying to build the phonegap app through the cloud build service I am getting this error:

PLUGIN OUTPUT

"plugman-151 install --platform android --project /project --plugin cordova-spotify --nohooks=.": Fetching plugin "cordova-spotify" via npm
Installing "cordova-spotify" at "0.5.8" for android
Fetching plugin "es6-promise-plugin" via npm
Installing "es6-promise-plugin" at "4.2.2" for android
Error during processing of action! Attempting to revert...
Failed to install 'cordova-spotify': CordovaError: Uh oh!
"/project/cordova/plugins/cordova-spotify/src/android/spotify-sdk/spotify-player-24-noconnect-2.20b.aar" not found!
at copyFile (/project/cordova/lib/pluginHandlers.js:219:36)
at install (/project/cordova/lib/pluginHandlers.js:74:13)
at Object.process (/project/cordova/node_modules/cordova-common/src/ActionStack.js:56:25)
at PluginManager.doOperation (/project/cordova/node_modules/cordova-common/src/PluginManager.js:117:20)
at PluginManager.addPlugin (/project/cordova/node_modules/cordova-common/src/PluginManager.js:147:17)
at /project/cordova/Api.js:254:18
at _fulfilled (/project/cordova/node_modules/q/q.js:834:54)
at self.promiseDispatch.done (/project/cordova/node_modules/q/q.js:863:30)
at Promise.promise.promiseDispatch (/project/cordova/node_modules/q/q.js:796:13)
at /project/cordova/node_modules/q/q.js:556:49
Uh oh!
"/project/cordova/plugins/cordova-spotify/src/android/spotify-sdk/spotify-player-24-noconnect-2.20b.aar" not found!

Any help?

I would send the versions of node, npm and cordova, but since it is the cloud that is compiling I am not sure how can I check those versions.

Failed to install 'cordova-spotify':Error: spawn EACCES

Hi,

I'm trying to install your plugin in my Meteor App (current Meteor version 1.5.1) and it gives me the above error ... Failed to install 'cordova-spotify':Error: spawn EACCES. I'm running Ubuntu 16.04 LTS.

Did anyone else run into this error? I tried modifying the permissions in all related folders.

Regards,
Andi

plugin is not working on android 7.0

Could not resolve all files for configuration ':app:debugCompileClasspath'.

Could not find :spotify-sdk:.
Searched in the following locations:
file:/Users/afscdev/Library/Android/sdk/extras/m2repository//spotify-sdk//spotify-sdk-.pom
file:/Users/afscdev/Library/Android/sdk/extras/m2repository//spotify-sdk//spotify-sdk-.aar
file:/Users/afscdev/Library/Android/sdk/extras/google/m2repository//spotify-sdk//spotify-sdk-.pom
file:/Users/afscdev/Library/Android/sdk/extras/google/m2repository//spotify-sdk//spotify-sdk-.aar
file:/Users/afscdev/Library/Android/sdk/extras/android/m2repository//spotify-sdk//spotify-sdk-.pom
file:/Users/afscdev/Library/Android/sdk/extras/android/m2repository//spotify-sdk//spotify-sdk-.aar
https://jcenter.bintray.com//spotify-sdk//spotify-sdk-.pom
https://jcenter.bintray.com//spotify-sdk//spotify-sdk-.aar
https://maven.google.com//spotify-sdk//spotify-sdk-.pom
https://maven.google.com//spotify-sdk//spotify-sdk-.aar
https://repo1.maven.org/maven2//spotify-sdk//spotify-sdk-.pom
https://repo1.maven.org/maven2//spotify-sdk//spotify-sdk-.aar
file:/Users/afscdev/Desktop/DeeprIo3/android/platforms/android/app/libs/spotify-sdk-.aar
file:/Users/afscdev/Desktop/DeeprIo3/android/platforms/android/app/libs/spotify-sdk.aar
Required by:
project :app

INVALID_CLIENT: Invalid redirect URI

I was able to install the plugin after your help. However I am stuck at authenticating function, with the following error on the in-app browser

INVALID_CLIENT: Invalid redirect URI

I have tried providing the urlScheme as both "http://localhost" and "myapp" (both are added as redirect URLs in My Application section of Spotify apps). And I've reviewed your iOS code where you make the redirect URL by concatenating urlScheme with "://callback" so it should work as expected.

I also have the in-app browser plugin installed and I am on cordova version 6.5.0.

Also, I can see that the tokenSwapUrl and tokenRefreshUrl are also mandatory in the code. If we don't use the grant flow, do we still need to pass these parameters?

Thanks for your help in earlier issues.

var params = {
            clientId: '[Insert Client ID here]',
            scopes: ["user-read-private", "streaming"],
            urlScheme: "http://localhost",
            tokenSwapUrl: "https://localhost/token/",
            tokenRefreshUrl: "https://localhost/refresh/"
            };
            
            spo.authenticate(params).then(function (success) {
                                          console.log(success);
                                          alert("Authenticate success:"+success);
                                
                                          });    

TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.

Hi!

This plugin looks exactly like what we need for our app. However, when we try to call 'play()' nothing happens. I inspected the plugin Javascript object and noticed that 'arguments' and 'caller' methods had the error: TypeError: 'arguments', 'callee', and 'caller' cannot be accessed in this context.. I'm currently running Cordova 8.1.0.

I've also attached the screenshot of the console if this would help!

Screen Shot 2019-04-19 at 11 56 37 AM

I think this is the issue why it won't play. If you need any more information, definitely let me know!

Promise Not Resolving

I was working with the plugin today and opened an issue that I thought was the problem with audio not playing.

Essentially, I've been trying to run the play() method and nothing happens. I have ensured I have a valid token, I have the client ID, but when I try to handle a success OR failure, neither method gets called. It looks like the promise is just not resolving and is in a pending state. Do you have any insight on what I'm doing wrong? I'm running Cordova 8.10.

Installation Issue

I have installed 'npm webpack' then add this plugin i am getting error: Output filename not configured.

image

Read library content

Hello,

I try to read the spotify library for an importer into my own app. Is this already possible with this plugin or if not maybe a cool feature for the future?

Bye

Need help on debugging:

Strange problem , hope someone can help me out.
The plugin works fine in the beta-track in the play store: so nice job :-)

But I can't get it to work on my emulator (anymore).
This used to work, but after some installing / reinstalling / removing data is does not work anymore.
All I get back is a error which says: wrong response, Type: error.

Has anyone seen this before?

[Help needed] Example of getEventEmitter usage

Hi,

If anyone could provide a simple example of how to use getEventEmitter, that would be very appreciated! For example, how to obtain the eventemitter and get an emitted playbackevent.

I have have no prior experience with eventemitter3.

Thanks!

Pontus

Save session for later use

I am using this plugin and it's working great. But i am stuck in this feature that i want to save session for later use.

Actually my work is that in my app customer will come and connect their spotify. And then they can play song from their spotify account. So i am able to connect their spotify account and play. But i need to save that success session for later use. I know that this functionality is not implemented currently and will be available soon but i want this feature now.

Can you please help me to implement this feature. Please just inform me what i have to do in your plugin to implement this functionality. I know it's not an issue but i need it urgent i will be very thankful to you.

Some starter docs

I am currently building a cordova app, and definitely am gonna see if I can get this to work!
I already have the token exchange API, but are there some basic readme or starter docs ?

Would be really nice!
I am of course willing to expend them with my experiences with the plugin :-)

Is it possible to pan audio left or right?

I know this is a long shot but I figured I'd ask. Can you think of how it might be possible to pan audio left or right using this library?

HTML5's audio library has a "Stereo panner node" which works for panning audio within cordova apps. But Spotify's web player uses flash, so I can't imagine that their SDKs would use any kind of way to pan audio.

Playback returns "The operation failed due to an unspecified issue."

Hey, sorry for all the questions.

I've got all the authentication working now! Thank you for that. My last issue is with playback. I'm trying to play a track using the session variable that is returned to me after logging in. The session object looks like this:

screen shot 2017-07-10 at 5 32 37 am

When I call this.session.play('spotify:track:6rPO02ozF3bM7NnOV4h6s2') it returns this error:
screen shot 2017-07-10 at 5 32 48 am

I used the debugger tool to find where I think it's coming from:
Never mind!
screen shot 2017-07-10 at 5 48 24 am

When I step though the debugger it returns here:
screen shot 2017-07-10 at 5 58 55 am

I see from this page that the error pops up due to
/** The operation failed due to an unspecified issue. */ FOUNDATION_EXPORT NSInteger const SPTErrorCodeFailed;
Am I implementing the play feature incorrectly? What should I do to resolve this problem?

I've been trying to follow your code from here

play(ref) {   return this._withSession(s => s.play(ref ? 'spotify:track:' + ref.id : ref), () => Promise.reject()); }

Thanks again for the help!

An instance of SPAudioStreamingController is already in use w/ expired token?

Great plugin first of all. After some finicky stuff with my own .env I'm able to authenticate and stream/pause music without any issue.

The only issue I run into is when the token expires. Going through my server logs (PHP), I see that the request makes it, but it dies before it gets a response with an updated token telling me that an instance of SPAudioStreamingController is already in use.

I tried details documented in #14

I'm working from the latest development branch, and the nightly builds (which I understand are unstable, and that this plugin is in beta).

If login fails, I can obviously reauthenticate with Spotify in the error callback. Is there any way to refresh the users' token without having to fully reauthenticate, once their token has expired?

Initial Authentication Script:
try { cordova.plugins.spotify.login({ clientId: 'DUMMY-DI', tokenRefreshUrl: "http://example.com/refresh" }).then(function(session){ this.authenticateWithSpotfy = false; this.session = session; }).catch(function(error){ console.error("There was an error during the login process : " + JSON.stringify(error)); try { cordova .plugins .spotify .authenticate(params) .then(session => { this.authenticatingWithSpotify = false; this.session = session; }) .catch(function(error){ this.authenticatingWithSpotify = false; console.error("ERROR AUTHENTICATING : " + JSON.stringify(error)); }); } catch(e) { console.error("Caught Authentication error " + JSON.stringify(error)) } }) } catch (e) { console.log("Caught Login error " + JSON.stringify(error)); }

Pause, resume, playFromPosition

This is prob more a feature request:

Would be really nice to be able to pause playback and resume from that position.

Simple method would be to store the position when pausing the track, but it would mean we need to be able to play a track starting at a specified position. The SDK should support it, but this plugin not yet as far as i can see.

Any plans on supporting this?

authenticate missing paramaters

Hi! Thanks a lot for providing this library!

I'm trying to call the authenticate method by passing in the object with the required fields.

My object looks like this:

options = { clientId: '4d0...333', redirectUrl: 'http://random.com/callback', scopes: ['playlist-read-private'], tokenSwapUrl: 'http://cloudfunctions.com', tokenRefreshUrl: 'http://cloudfunctions.com' }

But when I run spotify.authenticate(options) I get the error "Missing parameters!". I've been looking at this and can't figure out what I'm doing wrong.

Thank you!

demo code

Could you please provide sample code to try this plugin. thanks in advance

Trouble installing on Windows

Is there a version of this that can be installed on Windows? When I try to install via cordova plugin add cordova-spotify, I get an error about Bash not being installed. When Bash is installed, I get errors about not being able to access a disk. Would my issue be resolved if this issue is resolved (#31)?

CDVPluginHandleOpenURLNotification observer not firing on iOS?

I'm not even sure if this is a bug. It's probably my lack of understanding about how this plugin handles the redirect url. I've set my app up to respond to the callback url (e.g. moodu://callback). I'm receiving the call in my deeplink handler when I click the "OKAY" button in the login, but things aren't working as expected.

I'm using ionic v2 and this cordova-spotify plugin. For the iOS emulator, the SFSafariViewController is presenting perfectly. The only issue is when I click on "OKAY" in the spotify auth flow, the page seems to just sits there. The session is never set.

To handle the custom scheme, I'm using the IonicDeepLinkPlugin. I checked the info.plist and the URL scheme is set. I also have an identifier. These are both configured properly on the Spotify developer page.

Looking more closely while debugging in XCode, I find in the logs IonicDeepLinkPlugin: Handle link (internal) moodu://callback/?code=<my_auth_code>.

I'm still very new to Objective C, but comparing the spotify iOS tutorial to this plugin, I'm seeing that this plugin is adding CDVPluginHandleOpenURLNotification to the default NSNotificationCenter.

I'd expect that when a URL change is detected, this observer's function in the "usingBlock" would be invoked. Setting breakpoints (and adding some log statements), I'm not able to get the app to get into this code path.

I'd just copy and paste the Spotify auth code example to dismiss the spotify login controller's view, but I'm suspicious that this observer approach is being used because this is through cordova and not straight up a native app.

The Spotify example uses

- (BOOL)application:(UIApplication *)app
            openURL:(NSURL *)url
            options:(NSDictionary *)options

Not sure how to invoke this function, though. Any direction is appreciated.

App crash on IOS 13.1

Cordova app crashes when i tried to play a track. it was working fine in IOS 12.4
Error shown in Xcode log:
2019-10-31 09:52:19.320068+0530 Deepr[1576:26342] THREAD WARNING: ['SpotifyConnector'] took '15.309814' ms. Plugin should use a background thread.
2019-10-31 09:52:20.166649+0530 Deepr[1576:26342] *** Assertion failure in -[MPRemoteCommand addTarget:action:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/MediaPlayer_Sim/MobileMusicPlayer-4017.101.15/SDK/MPRemoteCommand.m:134
2019-10-31 09:52:20.172096+0530 Deepr[1576:26342] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Unsupported action method signature. Must return MPRemoteCommandHandlerStatus or take a completion handler as the second argument.'

Build fails with "Could not find :spotify-sdk:"

  • Cordova: 8.0.0
  • Gradle: 4.1
  • Android: 8.0 SDK Platform 26
  • OS: Mac 10.13.1

Reproduce:

cordova create testapp
cd testapp
cordova platform add android
cordova plugin add cordova-spotify
cordova build android

When building I am getting the following build error

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all files for configuration ':app:debugCompileClasspath'.
Could not find :spotify-sdk:.
Searched in the following locations:
   file:/<home>/Library/Android/sdk/extras/m2repository//spotify-sdk//spotify-sdk-.pom
   file:/<home>/Library/Android/sdk/extras/m2repository//spotify-sdk//spotify-sdk-.aar
   file:/<home>/Library/Android/sdk/extras/google/m2repository//spotify-sdk//spotify-sdk-.pom
   file:/<home>/Library/Android/sdk/extras/google/m2repository//spotify-sdk//spotify-sdk-.aar
   file:/<home>/Library/Android/sdk/extras/android/m2repository//spotify-sdk//spotify-sdk-.pom
   file:/<home>/Library/Android/sdk/extras/android/m2repository//spotify-sdk//spotify-sdk-.aar
   https://jcenter.bintray.com//spotify-sdk//spotify-sdk-.pom
   https://jcenter.bintray.com//spotify-sdk//spotify-sdk-.aar
   https://maven.google.com//spotify-sdk//spotify-sdk-.pom
   https://maven.google.com//spotify-sdk//spotify-sdk-.aar
   https://repo1.maven.org/maven2//spotify-sdk//spotify-sdk-.pom
   https://repo1.maven.org/maven2//spotify-sdk//spotify-sdk-.aar
   file:/<project>/platforms/android/app/libs/spotify-sdk-.aar
   file:/<project>/platforms/android/app/libs/spotify-sdk.aar
Required by:
   project :app

I'm not sure if it is a problem with Cordova or with this cordova-spotify. I know the Spotify Android SDK docs says that the project is in beta and that things may be changing. I don't know if this problem has something to do with a recent change or not. Or maybe a problem with the paths (I noticed double slashes - not sure if that's correct or not).

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.