GithubHelp home page GithubHelp logo

openshop.io-android's Introduction

First mobile E-commerce solution connected to Facebook Ads and Google

We as a Facebook Marketing Partner company have experienced neverending struggles with Facebook and Google integration on side of our partners. It usually took weeks or months to implement all neccessary SDKs, features, measurements and events. That's the reason why we have decided to provide an open-source solution bringing marketing on the first place. Our mission is to fulfill all potential of Facebook Ads, Google Analytics and other marketing channels for an extraordinary mobile shopping experience.

Visit out website on openshop.io

Do you want to see the app in action?

google play badge

Features

  • Facebook Ads Integration - The most advanced Facebook Ads Integration. Encourage purchases, target your mobile customers and measure conversions.
  • Google Analytics Integration - Integration of Google Analytics can be sometimes tricky. With our solution you can't miss any conversion.
  • Unified & Powerful API - Connecting your backend and data storages has never been easier. Our API is, thanks to Apiary, very well documented and available for testing.
  • Push Notifications - Encourage your customers through absolutely powerful Push Notifications. So, your customers won't miss any sale or special offer.
  • Synchronized with your Web - Synchronize abandoned shopping carts and user profiles from your website. So, your customers won't feel the difference if coming to website or mobile app.
  • Standardized XML Feeds - We use support all advanced XML Feed features you know from other systems. So, you don't have to create another one and just connect the feed you already use.
  • We also offer Deeplinks, Advanced measurement & analytics, and much more...

How to connect

We are trying to minimize the effort necessary to ship your ecommerce mobile solution. The first step for a successful integration is connection between your data source and our server. There is prepared a standardized apiary.io documentation which will tell you how to output your XML feed to be compatible with the data the app is expecting. For more information on how to connect to our server please contact us.

img

Technical Intro

OpenShop.io uses Gradle as a dependency manager for OpenShop.io Android project. To run the project please follow these steps:

Requirements

  • Application requirements: API level 15+ ("minSdkVersion 15")
  • Development requirements: Android studio - the latest version is the best version. Simply download Android studio, import github project, build it with gradle and development is ready.

Graphics template

Here you will find the PSD template which served as the guideline for implementing user interface in the OpenShop app.

Run the app

The example OpenShop.io application you can download from this repository or Google Play runs on our custom sample data source (product, payments, shipping, branches,...). If you want to integrate your feed within the app take a look at the section how to connect.

Release the app with minimal effort

Do you want to release the app like 1, 2, 3, BLAST OFF!? It is as easy as creaing a few web services and editing a few files and you are done.

  1. Rename the project. Especialy a package name in Manifest and Build files.
  2. Put your Organization id into the ORGANIZATION_ID variable inside the "CONST.java" file. You will receive the Organization id after a successfull connection, take a look at the section how to connect. ORGANIZATION_ID
  3. Update UI
    • colors - currently defined in the "colors.xml" file under resources folder.
    • logos, icons - you will find all the image resources beneath the "drawable" in the resources folder. Replace all the OpenShop logos and images with your custom ones.
    • banners - upload custom banners which appear on the title page through the administration - sales, new collections.
  4. Create Facebook application (skip this if you already have one) - Facebook tutorial Facebook application settings
  5. Connect Facebook application and the OpenShop project - enter Facebook application ID on these places:
    • facebook_app_id inside the "strings.xml" file: facebook_app_id
    • administration on our server
  6. Validate FB configuration: Thanks to the Facebook App Ads Helper you will be able to determine if all of the parts of the configuration were successful.
  7. At the Google Developers Console create corresponding application. Also enable Google Cloud Messaging API and Google Maps Android API under the "API Manager -> Overview" section. For GCM integration follow the tutorial.
  8. Under the "API Manager -> Credentials" section create a Server type and a Android type credentials. The Server type credential enter to the administration on our server. It is needed for Google Cloud Messaging (GCM), which provides you a feature to inform the customers about the newest collections and sales. The Android type credential enter to the android_key property inside the "strings.xml" file: android_key
  9. Finally in the Android Studio generate a signed apk.
  10. Create new application in Google Play Developer Console. Upload the signed apk into the created application. Add a title, description, screenshots, publish it and you are DONE.

Nice-to-have features

Implementing these features will significantly help you with getting to know the users, collecting the data about the app usage or remarketing but they aren't crutial for running the app.

  • Analytics - To measure conversions or application usage and installs from the campaigns you can use implemented Google Analytics or Facebook Analytics inside Analytics class. This class serves as the proxy for different loggers.

    • Facebook Analytics - If you have successfully configured Facebook SDK you can start logging the events. Simply uncomment a line of code in the Analytics class.
    • Google Analytics - All codes for tracking events and campaigns are prepared. You have to create Google Analytics account, connect it to the application and simply uncomment a few lines of code in the Analytics class.
  • Fabric (Crashlytics) - As Rocky Balboa once said: "The world ain’t all sunshine and rainbows. It's about how hard you can get hit and keep moving forward.". And let's face it. Every app can get hit pretty hard and crash. But it's about how you can analyze the crash and fix it. That's the reason why we are using Crashlytics to analyze the bugs that made the application crash. Take a look at their Get started guide and when you are done there are two blocks of code in the MyApplication class which will make the integration easier.

Development

The application is written with the help of widespread libraries, so the source code should be easy to read. If you wish to make more significant changes and better understanding what's going on we are providing in-depth comments inside the code.

Don't you have your mobile development team? We totally understand that pain, when your IT department is super busy or you don't have your own in-house mobile development team. We will connect you with one of our integration partners to build the app for you. Just contact us.

TODO

  • Unit Tests

Contribution

Feel free to build your own mobile ecommerce solution on top of OpenShop.io. Send us the name of the application on [email protected] to get $500 advertisement credit on Facebook for free from Business Factory - one of the 50 official Facebook Marketing Partners worldwide.

Contact us

Do you have any troubles or issue to report? Do you like OpenShop.io project and want to be part of it? Great! Contact us on [email protected] or here on GitHub.

Licence

openshop.io-android's People

Contributors

asperheek avatar skornos avatar unomonteiro avatar zelvajan 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  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

openshop.io-android's Issues

Internal error

I have encounter this error message "Internal error, please try it later"

Having problem in sync - You should define KEYSTORE_PASSWORD, KEYSTORE_ALIAS and KEY_PASSWORD in gradle.properties.groovy.lang.MissingPropertyException: Could not get unknown

9:48:24 PM Gradle sync started
9:49:05 PM Gradle sync failed: You should define KEYSTORE_PASSWORD, KEYSTORE_ALIAS and KEY_PASSWORD in gradle.properties.groovy.lang.MissingPropertyException: Could not get unknown
openshop error
property 'KEYSTORE_PASSWORD' for SigningConfig_Decorated{name=release, storeFile=D:\And_prog\Openshop\openshop.io-android-master\app\openshopKeystore.jks, storePassword=null, keyAlias=null, keyPassword=null, storeType=D:\And_prog\Openshop\openshop.io-android-master\app\openshopKeystore.jks, v1SigningEnabled=true, v2SigningEnabled=true} of type com.android.build.gradle.internal.dsl.SigningConfig.
Consult IDE log for more details (Help | Show Log)

Gradle sync failed

Hi, I'm trying to import openshop.io project in Android Studio, while importing i'm getting error.

Gradle sync failed: You should define KEYSTORE_PASSWORD, KEYSTORE_ALIAS and KEY_PASSWORD in gradle.properties.groovy.lang.MissingPropertyException: Could not get unknown property 'KEYSTORE_PASSWORD' for SigningConfig_Decorated{name=release, storeFile=/Users/malarvizhi/Downloads/openshop.io-android-master/app/openshopKeystore.jks, storePassword=null, keyAlias=null, keyPassword=null, storeType=/Users/malarvizhi/Downloads/openshop.io-android-master/app/openshopKeystore.jks, v1SigningEnabled=true, v2SigningEnabled=true} of type com.android.build.gradle.internal.dsl.SigningConfig.
Consult IDE log for more details (Help | Show Log) (16s 765ms)

Some one please help me to solve this

Server failed

Dear author:

I set up the properties, try to compile and run this app, but when after showing welcome screen, the app crash
And I try to trace the root cause, find the error message is following

11-17 17:21:36.938 3449-3525/bf.io.openshop E/Volley: [202] BasicNetwork.performRequest: Unexpected response code 500 for http://77.93.198.186/v1.2/10/shops
11-17 17:21:36.938 3449-3525/bf.io.openshop E/GsonRequest: GsonRequest URL: http://77.93.198.186/v1.2/10/shops. ERROR: <!DOCTYPE html><!-- "' --></script></style></noscript></xmp>
                                                           <meta charset="utf-8">
                                                           <meta name=robots content=noindex>
                                                           <meta name=generator content="Tracy">
                                                           <title>Server Error</title>
                                                           
                                                           <style>
                                                           	#tracy-error { background: white; width: 500px; margin: 70px auto; padding: 10px 20px }
                                                           	#tracy-error h1 { font: bold 47px/1.5 sans-serif; background: none; color: #333; margin: .6em 0 }
                                                           	#tracy-error p { font: 21px/1.5 Georgia,serif; background: none; color: #333; margin: 1.5em 0 }
                                                           	#tracy-error small { font-size: 70%; color: gray }
                                                           </style>
                                                           
                                                           <div id=tracy-error>
                                                           	<h1>Server Error</h1>
                                                           
                                                           	<p>We're sorry! The server encountered an internal error and
                                                           	was unable to complete your request. Please try again later.</p>
                                                           
                                                           	<p><small>error 500<br>Tracy is unable to log error.</small></p>
                                                           </div>
11-17 17:21:36.940 3449-3449/bf.io.openshop E/MsgUtils: Cannot parse error message
                                                        org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject
                                                            at org.json.JSON.typeMismatch(JSON.java:111)
                                                            at org.json.JSONObject.<init>(JSONObject.java:160)
                                                            at org.json.JSONObject.<init>(JSONObject.java:173)
                                                            at bf.io.openshop.utils.MsgUtils.logAndShowErrorMessage(MsgUtils.java:41)
                                                            at bf.io.openshop.ux.SplashActivity$7.onErrorResponse(SplashActivity.java:349)
                                                            at com.android.volley.Request.deliverError(Request.java:564)
                                                            at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:101)
                                                            at android.os.Handler.handleCallback(Handler.java:751)
                                                            at android.os.Handler.dispatchMessage(Handler.java:95)
                                                            at android.os.Looper.loop(Looper.java:154)
                                                            at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

And I tried to line http://77.93.198.186/v1.2, shows page not found
Is this server already shutting down?

Thank you

WordPress as backend

I wanted to ask, if i can use some php server or WordPress+WooCommerce as backend server?

Error Building Application

Error:You should define KEYSTORE_PASSWORD, KEYSTORE_ALIAS and KEY_PASSWORD in gradle.properties.groovy.lang.MissingPropertyException: Could not get unknown property 'KEYSTORE_PASSWORD' for SigningConfig_Decorated{name=release, storeFile=C:\Users*\Documents\Setups\openshop.io-android-master\openshop.io-android-master\app\openshopKeystore.jks, storePassword=null, keyAlias=null, keyPassword=null, storeType=C:\Users*\Documents\Setups\openshop.io-android-master\openshop.io-android-master\app\openshopKeystore.jks, v1SigningEnabled=true, v2SigningEnabled=true} of type com.android.build.gradle.internal.dsl.SigningConfig.

Consult IDE log for more details (Help | Show Log)

Open source the backend

This is such a nice mobile application and it would be great if the backend would be open source, it will be much easier to make lots of change and customize the app while making the app fully open source

Is it possible for me to use this app using my own api

Am trying out this app and am wondering if i can use my web api (for an ecommerce website) in this app.My api is developed on .net technology and am trying to find a way pf consuming it using this app.Any help and advise is welcome.Thanks

@interface

don't know what to do with this.
No visible @interface for 'SDWebImageManager' declares the selector 'downloadImageWithURL:options:progress:completed:'
Could you help please?

API

Some api i can get at https://bfeshopapiconnector.docs.apiary.io.And the product are from XML or JSON. Quite confuse with the note.. At the main github saying xml while at the apiary saying JSON only.
but some not documented like navigation_drawer,devices ..

I can check all the code but it will take time

Want to knew is the project still alive or you allready abandon for v2 version ?

any information please @ZelvaJan

pre-dex errors when trying to run app on android lolipop device

Hii guys. Thanks for creating and sharing a good application. But the issue relies on whenever I am trying to run the application, it throws gradle-build as the error. Fir that reason I have removed and reinstalled again, but still no good luck with lollipop.

Here my gradle

`apply plugin: 'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion "25.0.1"
// needed for okHttp from 23sdk. https://medium.com/android-news/android-networking-i-okhttp-volley-and-gson-72004efff196#.gsfpn3ez8
useLibrary 'org.apache.http.legacy'

dexOptions {
    javaMaxHeapSize "3g"
}

/*signingConfigs {
    release {
        try {
            storeFile file("openshopKeystore.jks")
            storePassword KEYSTORE_PASSWORD
            keyAlias KEYSTORE_ALIAS
            keyPassword KEY_PASSWORD
        } catch (ex) {
            throw new InvalidUserDataException("You should define KEYSTORE_PASSWORD, KEYSTORE_ALIAS and KEY_PASSWORD in gradle.properties." + ex)
        }
    }
}*/

defaultConfig {
    applicationId "bf.io.openshop"
    minSdkVersion 15
    targetSdkVersion 25
    versionCode 3
    versionName "1.2"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
    //signingConfig signingConfigs.release
}

buildTypes {
    debug {
        minifyEnabled false
        debuggable true
        versionNameSuffix '-DEBUG'
    }

    release {
        minifyEnabled false
        debuggable false
        //signingConfig signingConfigs.release

        // For release build should be added custom proGuard

// minifyEnabled true
// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}

testOptions {
    unitTests.returnDefaultValues = true
}

productFlavors {
    Modern {
        minSdkVersion 23
    }
    Legacy {
        minSdkVersion 15
    }
}

sourceSets {
    androidTest {
        resources.srcDirs += ['src/androidTest/resources']
    }
}

}

task clearData(type: Exec) {
def clearDataCommand = ['adb', 'shell', 'pm', 'clear', 'bf.io.openshop']
commandLine clearDataCommand
}

repositories { mavenCentral() }

dependencies {
// if needed jar libraries, add them to libs folder and load them here:
// compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:25.2.0'
compile 'com.android.support:design:25.2.0'
compile 'com.android.support:recyclerview-v7:25.2.0'
compile 'com.jakewharton.timber:timber:4.1.2'
compile 'com.google.android.gms:play-services-analytics:10.2.0'
compile 'com.google.android.gms:play-services-gcm:10.2.0'
compile 'com.google.android.gms:play-services-maps:10.2.0'
compile 'com.google.code.gson:gson:2.7'
compile 'mbanje.kurt:fabbutton:1.2.1'
compile 'com.facebook.android:facebook-android-sdk:4.9.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.android.volley:volley:1.0.0'
compile 'com.android.support.test.espresso:espresso-idling-resource:2.2.2'

// multidex
compile 'com.android.support:multidex:1.0.0'

//// Unit testing dependencies
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-all:1.10.19'
// Set this dependency if you want to use the Hamcrest matcher library
testCompile 'org.hamcrest:hamcrest-library:1.3'
testCompile 'org.powermock:powermock-module-junit4:1.6.4'
testCompile 'org.powermock:powermock-api-mockito:1.6.4'
//// Instrumentation test dependencies
androidTestCompile 'com.android.support:support-annotations:25.2.0'
androidTestCompile 'com.android.support.test:runner:0.5'
androidTestCompile 'com.android.support.test:rules:0.5'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.2'

}

apply plugin: 'com.google.gms.google-services'

`

Android Instant App

Does this app has Android Instant App support?

Android Instant Apps allows Android users to run your apps instantly, without installation

Keystore password and keystore alias

Gradle sync failed: You should define KEYSTORE_PASSWORD, KEYSTORE_ALIAS and KEY_PASSWORD in gradle.properties.groovy.lang.MissingPropertyException: Could not get unknown property 'KEYSTORE_PASSWORD' for SigningConfig_Decorated{name=release, storeFile=C:\Users\user\Downloads\umar\shopping\app\openshopKeystore.jks, storePassword=null, keyAlias=null, keyPassword=null, storeType=C:\Users\user\Downloads\umar\shopping\app\openshopKeystore.jks, v1SigningEnabled=true, v2SigningEnabled=true} of type com.android.build.gradle.internal.dsl.SigningConfig.

Dynamic Product Attributes

There is just two ( color and size ) attributes for products . It will be problem with products with another attributes like core , ram and etc. . Is there any solution for this limitation ?

Services are not working for open source android app

I have configured your open source into my android IDE. Services are not working. I am not getting any data from your services.

I would need those services until I am ready with my own servers.

Please help me on this.

Regards,
Vamsi.

Retrieving Data

How to change the names of the categories and their childs
screenshot_2017-01-20-22-44-40 1
Example i want to change Accessories to Electronics how can i change it??

How to connect?

Hello!

I am trying to run the app openshop and I followed all steps on "https://github.com/openshopio/openshop.io-android" but "How to connect".

Can someone please give me detailed information about this topic?

This is the error I get when trying to run the app
03-02 00:17:05.335 7660-7660/br.com.organicoshop E/MsgUtils: java.net.ConnectException: Failed to connect to /77.93.198.186:80
java.lang.NullPointerException: Attempt to read from field 'byte[] com.android.volley.NetworkResponse.data' on a null object reference
at br.com.organicoshop.utils.MsgUtils.logAndShowErrorMessage(MsgUtils.java:40)
at br.com.organicoshop.ux.SplashActivity$7.onErrorResponse(SplashActivity.java:349)
at com.android.volley.Request.deliverError(Request.java:564)
at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:101)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:7007)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

I also don't know how obtain the Organization ID.

connection

how to connect app to my woocommerce website

Server Connection

can you tell me how to connect from server(if i m using magento )and how to configure apiary documantation

Internal server error

Hello,

Since October 23, I've been receiving error code 500 (internal server error) when trying to execute the app. The same happens with the iOS version.

Fail to refactor the bf section

Hi all,
I import the app into android studio and get successful build, but whan i try to refactor (rename package name), always fail when try to change the bf into com, please help how to solve this.

The error message is .....file already exits.

I suspect that there is "com" folder and "bf" folder in same parent folder so whent try to refactor the com folder is already there (conatining google etc)

Please help how to do it correctly

Regards,
Bun Hin

Cargo Analytics

I was clone and try to read your Analytics.java class

  1. This app contain facebook and google analytic tracking, for further development & more readable code why not separating between facebook & ga tracking while analytics class extend the ex: googleanalytics.java or create interface for that ?
  2. Why not tag manager ?
  3. I guest you didn't enabled enhanced e-commerce feature on the dashboard instead of tracking manually the transaction.

start error

It crashes when on start!! It shows error on android
Internal error, please try again

where are product endpoints

Hi @ZelvaJan,
I am exploring the project and read the documentation, I have few question:

  1. I could not find any endpoints for products.
  2. there seems to be lots of endpoints in the app, like navigation list, shop etc. but only few are listed in documentation.
  3. I am planning to build a backend api on top of laravel, but could not find enough information on how to start.
  4. the version 1.0 on play store does not works and give internal server error, but the v2.0 is working. but the v1.0 source code on github is available. from where can i find the v2.0 source code?

I also tried to contact on email mentioned in contact section, but did not get any response from there. Please give me answers to these questions asap because I have to develop this project for someone.

Error while building on AndroidStudio

I get the following error after import, while building the gradle

Error:(21, 1) A problem occurred evaluating project ':app'.

You should define KEYSTORE_PASSWORD, KEYSTORE_ALIAS and KEY_PASSWORD in gradle.properties.groovy.lang.MissingPropertyException: Could not get unknown property 'KEYSTORE_PASSWORD' for SigningConfig_Decorated{name=release, storeFile=C:\Users\n007AX\Desktop\OpenShop\trunk\app\openshopKeystore.jks, storePassword=null, keyAlias=null, keyPassword=null, storeType=C:\Users\n007AX\Desktop\OpenShop\trunk\app\openshopKeystore.jks, v1SigningEnabled=true, v2SigningEnabled=true} of type com.android.build.gradle.internal.dsl.SigningConfig.

Could you please help me fix this ?

How to get involved in this project?

@ZelvaJan
@martinfelcman
@unomonteiro
@faisal-hameed
@Skornos

Hi!
Can I get involved in this project? If I want to involve in this project as a software tester then can you please clarify me on following queries:

  1. For testing this ecommerce platform will I have to create a store using openshop.io?
    OR
    I can test directly test openshopio platform?

  2. How to install or build this platform on mobile device?

  3. Is testing this platform means testing web store built upon this platform?

Thanks...

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.