Coder Social home page Coder Social logo

codemybrainsout / smart-app-rate Goto Github PK

View Code? Open in Web Editor NEW
676.0 17.0 165.0 360 KB

An Android library that encourages users to rate the app on the Google Play.

License: Apache License 2.0

Java 10.05% Kotlin 89.95%
android rating dialog smart threshold session feedback rate user-rating rating-dialog

smart-app-rate's Introduction

Smart App Rate

Smart app rate dialog for Android which takes user rating into consideration. If the user rates the app below the defined threshold rating, the dialog will change into a feedback form. Otherwise, It will take the user to the Google PlayStore.

Features

  • Auto fetches the app icon to appear on top of the dialog
  • Make the dialog appear on a defined app session
  • Opens Feedback form if the user rates below the minimum threshold
  • Extracts the accent color from your app's theme
  • Customizable title, positive button and negative button texts
  • Customizable button colors and backgrounds
  • Override dialog redirection to Google Play or Feedback form according to your needs

If you want the dialog to appear on the Nth session of the app, just add the session(N) to the dialog builder method and move the code to the onCreate() method of your Activity class. The dialog will appear when the app is opened for the Nth time.

How to use

Use the dialog as it is

val ratingDialog: RatingDialog = RatingDialog.Builder(this)
    .threshold(3)
    .session(1)
    .onRatingBarFormSubmit { feedback -> Log.i(TAG, "onRatingBarFormSubmit: $feedback") }
    .build()

ratingDialog.show()

or use the dialog builder class to customize the rating dialog to match your app's UI.

val ratingDialog = RatingDialog.Builder(this)
    .icon(R.mipmap.ic_launcher)
    .session(session)
    .threshold(3)
    .title(text = R.string.rating_dialog_experience, textColor = R.color.primaryTextColor)
    .positiveButton(text = R.string.rating_dialog_maybe_later, textColor = R.color.colorPrimary, background = R.drawable.button_selector_positive)
    .negativeButton(text = R.string.rating_dialog_never, textColor = R.color.secondaryTextColor)
    .formTitle(R.string.submit_feedback)
    .formHint(R.string.rating_dialog_suggestions)
    .feedbackTextColor(R.color.feedbackTextColor)
    .formSubmitText(R.string.rating_dialog_submit)
    .formCancelText(R.string.rating_dialog_cancel)
    .ratingBarColor(R.color.ratingBarColor)
    .playstoreUrl("YOUR_URL")
    .onThresholdCleared { dialog, rating, thresholdCleared -> Log.i(TAG, "onThresholdCleared: $rating $thresholdCleared") }
    .onThresholdFailed { dialog, rating, thresholdCleared -> Log.i(TAG, "onThresholdFailed: $rating $thresholdCleared") }
    .onRatingChanged { rating, thresholdCleared -> Log.i(TAG, "onRatingChanged: $rating $thresholdCleared") }
    .onRatingBarFormSubmit { feedback -> Log.i(TAG, "onRatingBarFormSubmit: $feedback") }
    .build()

ratingDialog.show()

Note

  • Don't use session() if you want to show the dialog on a click event.
  • Remove the threshold() from the builder if you don't want to show the feedback form to the user.
  • Use onThresholdCleared() to override the default redirection to Google Play.
  • Use onThresholdFailed() to show your custom feedback form.

Installation

Gradle

Add it as a dependency in your app's build.gradle file

dependencies {
    implementation 'com.codemybrainsout.rating:ratingdialog:2.0.0'
}

Credits

This project was initiated by Code My Brains Out. You can contribute to this project by submitting issues or/and by forking this repo and sending a pull request.

Follow us on:

Facebook     Twitter

Author: Rahul Juneja

License

Copyright (C) 2016 Code My Brains Out

Licensed 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

http://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.

smart-app-rate's People

Contributors

ahulr avatar alexjcrowley avatar anky21 avatar emichaux avatar hansemannn avatar itretyak avatar manuelga avatar richard-muvirimi 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

smart-app-rate's Issues

More customization of the dialogs

Would it be possible to get some more options for the dialog look? Such as being able to disable rounded corners, set dialog background colour, etc?

I really want to use this is in a project of mine instead of implementing it myself, but given I am using the material dialogs library the dialogs wouldn't match exactly.

"Never" button never shows up

So I copied and pasted the sample code from the readme because my own instance doesn't show up the Never button, just the "Maybe later" one.

Here's the exact copy of the code from the readme:
`final RatingDialog ratingDialog = new RatingDialog.Builder(this)
.icon(drawable)
//.session(7)
.threshold(3)
.title("How was your experience with us?")
.titleTextColor(R.color.black)
.positiveButtonText("Not Now")
.negativeButtonText("Never")
.positiveButtonTextColor(R.color.white)
.negativeButtonTextColor(R.color.grey_500)
.formTitle("Submit Feedback")
.formHint("Tell us where we can improve")
.formSubmitText("Submit")
.formCancelText("Cancel")
.ratingBarColor(R.color.yellow)
.positiveButtonBackgroundColor(R.drawable.button_selector_positive)
.negativeButtonBackgroundColor(R.drawable.button_selector_negative)
.onThresholdCleared(new RatingDialog.Builder.RatingThresholdClearedListener() {
@OverRide
public void onThresholdCleared(RatingDialog ratingDialog, float rating, boolean thresholdCleared) {
//do something
ratingDialog.dismiss();
}
})
.onThresholdFailed(new RatingDialog.Builder.RatingThresholdFailedListener() {
@OverRide
public void onThresholdFailed(RatingDialog ratingDialog, float rating, boolean thresholdCleared) {
//do something
ratingDialog.dismiss();
}
})
.onRatingChanged(new RatingDialog.Builder.RatingDialogListener() {
@OverRide
public void onRatingSelected(float rating, boolean thresholdCleared) {

                                        }
                                   })
                    .onRatingBarFormSumbit(new RatingDialog.Builder.RatingDialogFormListener() {
                        @Override
                        public void onFormSubmitted(String feedback) {

                        }
                    }).build();

            ratingDialog.show();`

Upon testing, it made it worse, no buttons were showing at all.
Any idea on this?

I've initialized the builder from main activity's onCreate and its the last thing that happened.

Thanks

Only show RatingDialog when internet is available

I have an app that is mostly used off-line. How can I disable showing the RatingDialog when a user is offline? There is no point in showing the RatingDialog when offline and it only frustrates users.

threshold doesn't work

Whenever I set the threshold via .threshold(4) for example, the threshold remains at 3.

Dilaog not showing on click event

RatingDialog ratingDialog = new RatingDialog.Builder(this)
.threshold(3)
.onRatingBarFormSumbit(new RatingDialog.RatingDialogFormListener() {
@OverRide
public void onFormSubmitted(String feedback) {

                        }
                    }).build();

            ratingDialog.show();

this code not showing the dialog from click of button

Keyboard not shown automatically for feedback form

Thanks for creating this library. It's working well with one small issue. In my app, when the feedback form is shown, the keyboard doesn't automatically appear. Instead, the user has to tap in the EditText field to force the keyboard to be displayed. Is this the expected behavior? If so, does the library provide a way to show the keyboard automatically? If not, I think automatically displaying the keyboard would be a nice enhancement.

Just rate item, not app

Can I use this library to rate the movie item on my app instead of the whole application? I also don't want open google play store after I rate.

RatingDialog not appearing when setting session to anything above '1'.

I'm using this library in my app and here's my configuration:

final RatingDialog ratingDialog = new RatingDialog.Builder(this)
                .threshold(3)
                .session(2)
                .formHint("Tell us what went wrong and\nwe'll work on it.")
                .onRatingBarFormSumbit(new RatingDialog.Builder.RatingDialogFormListener() {
                    @Override
                    public void onFormSubmitted(String feedback) {
                        Intent i = new Intent(Intent.ACTION_SEND);
                        i.setType("message/rfc822");
                        i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"[email protected]"});
                        i.putExtra(Intent.EXTRA_SUBJECT, "Feedback on app");
                        i.putExtra(Intent.EXTRA_TEXT   , feedback);
                        try {
                            startActivity(Intent.createChooser(i, "Submit feedback using..."));
                        } catch (android.content.ActivityNotFoundException ex) {
                            Toast.makeText(MainActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
                        }
                    }
                }).build();

        ratingDialog.show();

I have set session as '2' here, but for testing when I destroyed/stopped the app for 2 times and reopened it the 2nd time, no RatingDialog was shown to me.

the stars are not showing

I'm running on Nexus 5X API 24 emulator and the stars are not showing in the popup window.
See attached screenshot. Both "Never" and "Maybe Later" buttons work fine but when I click on the stars are I get the following crash:

Fatal Exception: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=market://details?id=com.alef.learn.arabicforkids }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1809)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1523)
at android.app.Activity.startActivityForResult(Activity.java:4224)
at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:75)
at android.app.Activity.startActivityForResult(Activity.java:4183)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:856)
at android.app.Activity.startActivity(Activity.java:4507)
at android.app.Activity.startActivity(Activity.java:4475)
at com.codemybrainsout.ratingdialog.RatingDialog.openPlaystore(RatingDialog.java:230)
at com.codemybrainsout.ratingdialog.RatingDialog.onRatingChanged(RatingDialog.java:199)
at android.widget.RatingBar.dispatchRatingChange(RatingBar.java:317)
at android.widget.RatingBar.onStopTrackingTouch(RatingBar.java:305)

screenshot_1478504756

I can't add the script in my java code source

Hello Dear Rahul,

Can you please upload the last script that work with java language, recently I want to add your script but it didn't work because you have merged to kotlin. Kindly do a new version that can be compatible with java code source.
Can you please upload the last script that work with java language, recently I want to add your script but it didn't work because you have merged to kotlin. Kindly do a new version that can be compatible with java code source.

Many Thanks in advance.

kind Regards,

Determine wether or not dialog would be shown and if user has opted our or rated

Usually rate dialog is queried to be shown at start of application, and in some cases an expensive resource is loaded for this dialog, such as application icon.

It would be much faster if consuming application could query the library wether or not the dialog will be shown, and only then load these resources.

Also in some cases it would be nice to know wether or not user has opted out or rated the app already, for example in my case I show local ads asking the user to rate on banner form, and only do this when the user has not opted out from rating or has already rated, and to achieve this I had to botch the library by adding a function that determines wether or not the preference show_never has been set.

wordwrap on feedback dialog

Hi,

Tiny issue... word wrap on the feedback form doesn't work. Text runs off the side of the screen

Simple change to the EditText "dialog_rating_feedback"

android:layout_height="wrap_content"
...
android:inputType="textCapSentences|textMultiLine"
android:minLines="4"

Cheers

dialog keep showing even after clicking on rated stars

I already rated but it keeps showing, you need to add two methods one with SharedPreferences to store that dialog has been rated and not showing again even you use without a session, and another method to force the dialog showing even after the click on rated ( that's needed if we won't add the dialog in a button click )

Theme problems

I have this error here
You need to use a Theme.AppCompat theme (or descendant) with this activity

style.xml

<resources>

    <!-- Base application theme. -->

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>


</resources>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.JunkyCoder.pro">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/launture_round"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/launture_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"

        tools:ignore="GoogleAppIndexingWarning">
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-9275674846813033~2920278162"/>
        <activity android:name=".AddNewContent.AddNew"/>
        <activity android:name=".MainPage">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    <receiver android:name=".NotificationBar.NotificationActionService"/>
        <service android:name=".NotificationBar.OnClearFromRecentService"/>
    </application>

</manifest>

calling method

    public void showReviewDialog(){
        final FirstUse userRateUs =new FirstUse(mContext);
        Drawable icon=appCompatActivity.getResources().getDrawable(R.mipmap.launture);
        if (!userRateUs.getUserRateUs()){
            final RatingDialog ratingDialog = new RatingDialog.Builder(mContext)
                    .icon(icon)
                    .threshold(3)
                    .title("الي اي مدي ترشحنا ؟")
                    .titleTextColor(R.color.black)
                    .positiveButtonText("ليس الان")
                    .negativeButtonText("لا اريد")
                    .positiveButtonTextColor(R.color.white)
                    .negativeButtonTextColor(R.color.grey_500)
                    .formTitle("اوك")
                    .formHint("من فضلك اخبرنا كيف نحسن من تطبيقنا ؟ ")
                    .formSubmitText("ارسال")
                    .formCancelText("الغاء")
                    .ratingBarColor(R.color.colorPrimary)
                    .playstoreUrl("https://play.google.com/store/apps/details?id=com.JunkyCoder.pro")
                    .onThresholdCleared(new RatingDialog.Builder.RatingThresholdClearedListener() {
                        @Override
                        public void onThresholdCleared(RatingDialog ratingDialog, float rating, boolean thresholdCleared) {
                            //do something
                            ratingDialog.dismiss();
                            appCompatActivity.finish();
                        }
                    })
                    .onThresholdFailed(new RatingDialog.Builder.RatingThresholdFailedListener() {
                        @Override
                        public void onThresholdFailed(RatingDialog ratingDialog, float rating, boolean thresholdCleared) {
                            //do something
                            ratingDialog.dismiss();
                            appCompatActivity.finish();
                        }
                    })
                    .onRatingChanged(new RatingDialog.Builder.RatingDialogListener() {
                        @Override
                        public void onRatingSelected(float rating, boolean thresholdCleared) {

                        }
                    })
                    .onRatingBarFormSumbit(new RatingDialog.Builder.RatingDialogFormListener() {
                        @Override
                        public void onFormSubmitted(String feedback) {
                            sendMeEmail(feedback);
                            userRateUs.setUserRateUsToTrue();
                        }
                    })
                    .build();

            ratingDialog.show();
        }

    }

How to reset flags?

You need to add a functionality to reset flags. It is not possible even though I create new object but flags was not reset.

Does not work

Hi,

I have implemented this library into my app, but somehow it did not show up. I then installed your demo app and press like 100 times the "Rate us" button and it appeared just 2 times. Tried again, but nothing happend....Galaxy S9 Plus...

What if users rate with multiple clicks?

I am yet to use this library. From the information available, it looks like, there is one scenario this library may not have considered.

In our usability testing, we have noticed some users rate with multiple clicks. You may laugh at this, but this is what we have seen them doing:

  1. The user decided to rate the app 5 *s.
  2. She started clicking on the first star, then 2nd, then 3rd.. (You get the idea).

She feels she is giving each of the stars to us one by one. :) I was totally surprised by this approach. The reason may be that large number of users are exposed to mobile interfaces, many of them don't have any exposure to desktop interfaces. But we developers, with strong background in desktop interface patterns, tend to get surprised when our app users don't follow standard patterns.

So how well this lib works for this scenario. Does it assume user gave 1 star and shows feedback form?

RatingDialog layout doesn´t initialize right

Hi,

when I start the Rating dialog like this:

    final RatingDialog ratingDialog = new RatingDialog.Builder(this)
            .threshold(4)
            .session(5)
            .title(getString(R.string.ratingTitle))
            .titleTextColor(R.color.colorPrimaryDark)
            .positiveButtonText(getString(R.string.positiveBtnRatin))
            .negativeButtonText(getString(R.string.negativeBtnRating))
            .positiveButtonTextColor(R.color.colorAccent)
            .negativeButtonTextColor(R.color.textGray)
            .formTitle(getString(R.string.submitFeedbackTitle))
            .formHint(getString(R.string.feedbackHint))
            .formSubmitText(getString(R.string.feedbackSubmit))
            .formCancelText(getString(R.string.feedbackCancel))
            .ratingBarColor(R.color.colorAccent)
         ).build();

    ratingDialog.show();

I get this error:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at com.codemybrainsout.ratingdialog.RatingDialog.init(RatingDialog.java:86)
at com.codemybrainsout.ratingdialog.RatingDialog.onCreate(RatingDialog.java:81)
at android.app.Dialog.dispatchOnCreate(Dialog.java:402)
at android.app.Dialog.show(Dialog.java:301)

The Debugging tells me that the layout is not correct loaded, however any solution? The Strange thing is it worked, with the exact same implementation some days ago.

Making the number of sessions available

Hello,
first let me thank you for this library!
I want to make the rating dialog visible after a certain amount of app starts. Could you create a getter for the session counter, so it is accessible?
Thank you!

Session counter on orientation change

Hello,

thanks for this wonderful library.

I noticed that the session counter also increases with orientation change.
Is it possible to have an option so that this doesn't happen ?

I am asking because my app is actually the same in portrait and landscape mode with an optimized layout. I don't want an orientation change to count as a new session.

Thanks

Rating buttons not showing

I am using this configuration for the dialog:

 final RatingDialog ratingDialog = new RatingDialog.Builder(this)
                .threshold(3)
                .session(10)
                .title("Are you enjoying the app?")
                .titleTextColor(R.color.black)
                .positiveButtonText("Not Now")
                .negativeButtonText("Never")
                .positiveButtonTextColor(R.color.black)
                .negativeButtonTextColor(R.color.black)
                .formTitle("Submit Feedback")
                .formHint("Tell us where we can improve")
                .formSubmitText("Submit")
                .formCancelText("Cancel")
                .ratingBarColor(R.color.colorPrimary)
                .onRatingChanged(new RatingDialog.RatingDialogListener() {
                    @Override
                    public void onRatingSelected(float rating, boolean thresholdCleared) {
                        Log.d("Rating", rating + "");
                    }
                })
                .onRatingBarFormSumbit(new RatingDialog.RatingDialogFormListener() {
                    @Override
                    public void onFormSubmitted(String feedback) {
                        Log.d("Feedback", feedback + "");
                    }
                }).build();
     ratingDialog.show();

But the rating buttons below the rating bar are not showing and when i try to tap, there is a small line that gets focused, which i assume is the button layout. But i don't understand why its being cut off.
I tried to change the text size of the buttons, and they were still being cut off. The buttons on the feedback dialog are displaying properly though. Any ideas whats wrong?

OnPositiveButtonClick

This library could add a onPositiveButtonClick listener. I need this feature for register "Not now" event.

Thanks.

Overriding only behavior when vote is above threshold

Hello,
I imported the library and all is working. I noticed that when the vote is above the threshold te user is redirected to the Play Store page of the app, but there's no explicit prompt to ask him to rate the app again.
I'd like to put a dialog in the middle between the first app rating and the play store page, asking the user if he/she wants to rate the app on play store.

The question is: how can I achieve that?

Thank you
Marco

where is the feedback alert.

Nothing is shown after clicking the stars. Where is the feedback alert when give 3 or less stars and even didn't go to Play Store if click 4 or 5 stars. And even it shows one button i.e. 'Not Now', where is the other button. See the code, and tell me whats wrong with it. And if need some amendments so please do it. Thanks.

            final RatingDialog ratingDialog = new RatingDialog.Builder(context)
            .icon(context.getResources().getDrawable(R.drawable.ic_rate_star))

            .threshold(3)
            .title("How was your experience with us?")
            .titleTextColor(R.color.black)
            .positiveButtonText("Not Now")
            .negativeButtonText("Never")
            .positiveButtonTextColor(R.color.main_orange_color)
            .negativeButtonTextColor(R.color.main_blue_color)
            .formTitle("Submit Feedback")
            .formHint("Tell us where we can improve")
            .formSubmitText("Submit")
            .formCancelText("Cancel")
            .ratingBarColor(R.color.main_orange_color)
            .playstoreUrl("https://play.google.com/store/apps/details?id=com.king.bubblewitch3&hl=en")
            .onThresholdCleared(new RatingDialog.Builder.RatingThresholdClearedListener() {
                @Override
                public void onThresholdCleared(RatingDialog ratingDialog, float rating, boolean thresholdCleared) {
                    //do something

                    ratingDialog.dismiss();
                }
            })
            .onThresholdFailed(new RatingDialog.Builder.RatingThresholdFailedListener() {
                @Override
                public void onThresholdFailed(RatingDialog ratingDialog, float rating, boolean thresholdCleared) {
                    //do something

                    ratingDialog.dismiss();
                }
            })
            .onRatingChanged(new RatingDialog.Builder.RatingDialogListener() {
                @Override
                public void onRatingSelected(float rating, boolean thresholdCleared) {
                    thresholdCleared = true;
                    Supporter.showToast(context, "rating is: " + rating);
                }
            })
            .onRatingBarFormSumbit(new RatingDialog.Builder.RatingDialogFormListener() {
                @Override
                public void onFormSubmitted(String feedback) {

                }
            }).build();

    ratingDialog.show();

How to reset the session?

if i give the session(2) the dialog shows up after 2 times the app opened, but after that it never shows, how to reset the session show it shows periodically after some number of times the app opened?

Suggestion!!!

when user click on star for the first time previous stars should be highlighted we have to slide finger to highlight stars

a typo in a readme file

Hello guys, I guess in the first example the line
.onRatingBarFormSumbit(new RatingDialog.RatingDialogFormListener() ...
should be
.onRatingBarFormSumbit(new RatingDialog.Builder.RatingDialogFormListener() ...

thank you for this amazing library!

App icon picked-up is blurred

Without me looking thru at the source code, I noticed that the produced icon is blurred and kind of unacceptable. How would I go about this?

I feed Android Studio 512x512 ic_launcher and it scales and divided them into screen qualifier directories.

Choosing star problem

When clicking on stars user can't see his choice before stars fade out. Is there a way to change it when setting up the rating dialog?

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.