Giter Site home page Giter Site logo

android-blur-launcher's Introduction

Blur - A Launcher Replacement

Promo

This is Blur Launcher, Klinker Apps one-stop-shop for the most powerful launcher around.

This is built from the latest Launcher3 code from Google.

Note: I am currently working on redesigning Blur, but got pulled off into my new Pulse app. Blur 3.0 will no longer work around the idea of apps creating custom pages. There just wasn't enough interest in this, and it wasn't worth supporting for the extremely low interest. The future of these pages will revolve around pages that I create and build directly into the app. Tons of other things have been added to Blur 3.0, but before it is released, I will need to create more custom pages, which is where we are currently at.

If you would like to see how we supported the legacy page system, check out the blur_2 branch. master will be where Blur 3.0 continues to live, in the future.

Features

As the apps feature-set continues to be merged into this new fork, I will continue to add to this repository.

  • Support for Blur Pages
  • Built from Nougats's Launcher3 code, with the latest improvements and Material Design in mind
  • Custom icon pack support
  • Blur puts app predictions at the top of the app drawer
  • quick scroll through the app drawer
  • hidden apps (still show up when searching in the all apps drawer though, by design)
  • revamped settings menu
  • Rotation support for tablets
  • gesture support
  • menu when you drop an icon in the original location on the workspace
  • configure homescreen and all apps grid
  • configure workspace padding
  • change the number of dock icons
  • select icon scale
  • dock is optional
  • page indicators are optional
  • search bar is optional
  • improved style for tablet search bar
  • icon names on the homescreen are optional
  • Blur can turn off your screen
  • backup and restore app settings
  • Persister service to try to ensure that the app stays in memory (no statistics as to whether or not this works though...)

Compiling

The project is built with gradle, so maintenence and compilation is very straightforward.

$ ./gradlew build

Contributing

Please fork this repository and contribute back using pull requests. Features can be requested using issues. All code, comments, and critiques are greatly appreciated.

Changelog

The full changelog for the app can be found here.

To sync with Google's Launcher3

$ git remote add upstream https://github.com/klinker24/launcher3
$ git fetch upstream
$ git checkout master
$ git merge upstream/master

License

Copyright 2016 Luke Klinker

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.

android-blur-launcher's People

Contributors

2nd-half avatar adamp avatar adrianroos avatar alanv avatar bradfitz avatar caseyburkhardt avatar chethaase avatar chriscraik avatar cwren avatar davehawkey avatar dsandler avatar ianparkinson avatar jjsil avatar jmuk avatar jsharkey avatar klinker24 avatar kruton avatar markb74 avatar mathewinwood avatar mikejurka avatar mokani avatar monkopedia avatar nickkral avatar nileshagrawal avatar onoratoj avatar pdubroy avatar romainguy avatar sganov avatar vmarko avatar xsjojo 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

android-blur-launcher's Issues

Update to Nougat 7.1 sources

Once klinker24/launcher3#1 gets merged, it should come into this project a bit easier.

I have designed this app to bring out a lot of the core functionality, away from the actual launcher3 code, so that merges are easy.

This seems to be a pretty drastic change though, we will have to see what kind of effort this will take.

Lock the launcher drawer when dragging widgets and shortcuts

Dragging apps and dragging things around the homescreen work fine, the launcher is locked, but when you go to select a widget, or start to drag a launcher shortcut, the drawer will open if you drag in the right direction.

You can also open the drawer directly on the widgets page.

Improve tablet layout

Tablets have the search bar, and the app drawer, full screen. I really hate the way this looks, it would be better to just open them on the middle part of the screen, with some padding around them.

Or, when #15 is done, we won't have to worry about the search bar, just the app drawer.

Option to disable pages

I was looking for Open Source launcher that issimple, but convenient. Something like Pixel launcher, but without Google assistant hardcoded.
I found this launcher pretty interesting with basic jestures support, but I don't need any pages, would be nice to have a switch to remove them from home page scrolling on hhe left.

Get a Google Pill widget option

The hardest part of this is to just make the pill design. Once I have a layout, it is pretty easy to implement.

In the QsbContainerView, the app will grab all the available widgets and basically set up whatever widget the system determines is the search bar. I tried to just make it find Google's pill widget here, if it was installed, but no luck, unfortunately.

We can just make a layout though, similar to how it is working with the default search widget (if the system can't find one).

If the user is using the pill widget, then they should be able to place things in the upper area.

The preference will switch to a ListPreference:

  • Search Bar
  • Search Pill
  • No search widget

Error please help

java.lang.SecurityException: 
  at android.os.Parcel.readException(Parcel.java:1693)
  at android.os.Parcel.readException(Parcel.java:1646)
  at android.app.ActivityManagerProxy.isUserRunning(ActivityManagerNative.java:7000)
  at android.os.UserManager.isUserUnlocked(UserManager.java:1069)
  at android.os.UserManager.isUserUnlocked(UserManager.java:1063)
  at suma.launcher.launcher3.compat.UserManagerCompatVN.isUserUnlocked(UserManagerCompatVN.java:39)
  at suma.launcher.launcher3.LauncherModel$LoaderTask.loadWorkspace(LauncherModel.java:1761)
  at suma.launcher.launcher3.LauncherModel$LoaderTask.loadAndBindWorkspace(LauncherModel.java:1389)
  at suma.launcher.launcher3.LauncherModel$LoaderTask.run(LauncherModel.java:1488)
  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.os.HandlerThread.run(HandlerThread.java:61)

Re-implement editing the app name and icon

With the Nougat MR1 shortcuts, this no longer works as well. Before, we would just drop the app in place and it would show the options:

  • Restore defaults
  • Change name
  • Change icon

Since this action now also serves to do the shortcuts, this will no longer really work.

The best way to re-implement this would be to add a shortcut for "Edit App".

FragmentStatePager from Blur 2.0

This one was a bit more customized, with some safety built around it.

I would like to go back to using it, rather than using Google support lib version.

The support lib version doesn't seem to be as safe, I have experienced a few crashes.

Gives error in api 22

02-01 16:10:10.981 27205-27205/xyz.klinker.blur E/AndroidRuntime: FATAL EXCEPTION: main
                                                                  Process: xyz.klinker.blur, PID: 27205
                                                                  java.lang.RuntimeException: Unable to start activity ComponentInfo{xyz.klinker.blur/xyz.klinker.blur.launcher3.Launcher}: android.view.InflateException: Binary XML file line #47: Error inflating class xyz.klinker.blur.launcher3.widget.WidgetsRecyclerView
                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3125)
                                                                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3224)
                                                                      at android.app.ActivityThread.access$1000(ActivityThread.java:198)
                                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1682)
                                                                      at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                      at android.os.Looper.loop(Looper.java:145)
                                                                      at android.app.ActivityThread.main(ActivityThread.java:6843)
                                                                      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)
                                                                   Caused by: android.view.InflateException: Binary XML file line #47: Error inflating class xyz.klinker.blur.launcher3.widget.WidgetsRecyclerView
                                                                      at android.view.LayoutInflater.createView(LayoutInflater.java:640)
                                                                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750)
                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:821)
                                                                      at android.view.LayoutInflater.parseInclude(LayoutInflater.java:933)
                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:821)
                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:821)
                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:366)
                                                                      at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:450)
                                                                      at android.app.Activity.setContentView(Activity.java:2321)
                                                                      at xyz.klinker.blur.launcher3.Launcher.onCreate(Launcher.java:449)
                                                                      at android.app.Activity.performCreate(Activity.java:6500)
                                                                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120)
                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3078)
                                                                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3224) 
                                                                      at android.app.ActivityThread.access$1000(ActivityThread.java:198) 
                                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1682) 
                                                                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                      at android.os.Looper.loop(Looper.java:145) 
                                                                      at android.app.ActivityThread.main(ActivityThread.java:6843) 
                                                                      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) 
                                                                   Caused by: java.lang.reflect.InvocationTargetException
                                                                      at java.lang.reflect.Constructor.newInstance(Native Method)
                                                                      at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
                                                                      at android.view.LayoutInflater.createView(LayoutInflater.java:614)
                                                                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750) 
                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:813) 
                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:821) 
                                                                      at android.view.LayoutInflater.parseInclude(LayoutInflater.java:933) 
                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:809) 
                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:821) 
                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:821) 
                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:511) 
                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:415) 
                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:366) 
                                                                      at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:450) 
                                                                      at android.app.Activity.setContentView(Activity.java:2321) 
                                                                      at xyz.klinker.blur.launcher3.Launcher.onCreate(Launcher.java:449) 
                                                                      at android.app.Activity.performCreate(Activity.java:6500) 
                                                                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120) 
                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3078) 
                                                                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3224) 
                                                                      at android.app.ActivityThread.access$1000(ActivityThread.java:198) 
                                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1682) 
                                                                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                      at android.os.Looper.loop(Looper.java:145) 
                                                                      at android.app.ActivityThread.main(ActivityThread.java:6843) 
                                                                      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) 
                                                                   Caused by: java.lang.NoSuchMethodError: No virtual method getColor(I)I in class Landroid/content/Context; or its super classes (declaration of 'android.content.Context' appears in /system/framework/framework.jar:classes2.dex)
                                                                      at xyz.klinker.blur.launcher3.BaseRecyclerViewFastScrollBar.<init>(BaseRecyclerViewFastScrollBar.java:88)
                                                                      at xyz.klinker.blur.launcher3.BaseRecyclerView.<init>(BaseRecyclerView.java:62)
                                                                      at xyz.klinker.blur.launcher3.widget.WidgetsRecyclerView.<init>(WidgetsRecyclerView.java:0)
                                                                      at xyz.klinker.blur.launcher3.widget.WidgetsRecyclerView.<init>(WidgetsRecyclerView.java:0)
                                                                      at java.lang.reflect.Constructor.newInstance(Native Method) 
                                                                      at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
                                                                      at android.view.LayoutInflater.createView(LayoutInflater.java:614) 
                                                                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750) 
                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:813) 
                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:821) 
                                                                      at android.view.LayoutInflater.parseInclude(LayoutInflater.java:933) 
                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:809) 
                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:821) 
                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:821) 
                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:511) 
                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:415) 
                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:366) 
                                                                      at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:450) 
                                                                      at android.app.Activity.setContentView(Activity.java:2321) 
                                                                      at xyz.klinker.blur.launcher3.Launcher.onCreate(Launcher.java:449) 
                                                                      at android.app.Activity.performCreate(Activity.java:6500) 
                                                                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120) 
                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3078) 
                                                                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3224) 
                                                                      at android.app.ActivityThread.access$1000(ActivityThread.java:198) 
                                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1682) 
                                                                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                      at android.os.Looper.loop(Looper.java:145) 
                                                                      at android.app.ActivityThread.main(ActivityThread.java:6843) 
                                                                      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) 

App Crashes whenever a App is Opened

When a App is Opened or when I try to launch the settings of the launcher. It shows the below Exception.

So please help me to solve this issue ?

11-16 20:25:40.370 9568-9568/xyz.klinker.blur E/AndroidRuntime: FATAL EXCEPTION: main
                                                                Process: xyz.klinker.blur, PID: 9568
                                                                java.lang.RuntimeException: Unable to pause activity {xyz.klinker.blur/xyz.klinker.blur.launcher3.Launcher}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.widget.SwipeRefreshLayout.setProgressViewOffset(boolean, int, int)' on a null object reference
                                                                    at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3293)
                                                                    at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3252)
                                                                    at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3227)
                                                                    at android.app.ActivityThread.access$1100(ActivityThread.java:154)
                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1332)
                                                                    at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                    at android.os.Looper.loop(Looper.java:135)
                                                                    at android.app.ActivityThread.main(ActivityThread.java:5292)
                                                                    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:904)
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
                                                                 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.widget.SwipeRefreshLayout.setProgressViewOffset(boolean, int, int)' on a null object reference
                                                                    at xyz.klinker.blur.extra_pages.weather_page.LauncherFragment.initLayout(LauncherFragment.java:42)
                                                                    at xyz.klinker.blur.extra_pages.BaseLauncherPage.onCreateView(BaseLauncherPage.java:64)
                                                                    at android.app.Fragment.performCreateView(Fragment.java:2053)
                                                                    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:894)
                                                                    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
                                                                    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1049)
                                                                    at android.app.FragmentManagerImpl.dispatchPause(FragmentManager.java:1883)
                                                                    at android.app.Activity.performPause(Activity.java:6099)
                                                                    at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1310)
                                                                    at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3279)
                                                                    at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3252) 
                                                                    at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3227) 
                                                                    at android.app.ActivityThread.access$1100(ActivityThread.java:154) 
                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1332) 
                                                                    at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                    at android.os.Looper.loop(Looper.java:135) 
                                                                    at android.app.ActivityThread.main(ActivityThread.java:5292) 
                                                                    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:904) 
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699) 

IconBack doesnot applyed in theme icon pack

when i apply them the icons changed to the one present in theme (icon pack) but for other having no icon in icon pack did not combine with icon back present in icon pack.

Support covers

I hate to steal from Action Launcher, but this is an amazing feature, in my opinion.

Covers are similar to folders, but instead of a single click opening the folder, a swipe will open the folder, and a single click will open the first item in that folder.

This is good for grouping similar apps and cleaning up the UI.

Unread Count

unread count does not show on apps icon like whatsapp, messages etc

Allow bigger widgets

Here you can see some random widget in its max size, however, here is still some space on top unused, can you make so that widgets can be resized even higher? My grid has 8 rows if it is important.
tmp_3692-screenshot_20161209-0134251308992288

Icon scale

Please add separate icon scales for app drawer and home screen.
Currently they also cut when icon scale is high or grid is very big.
If separate icon scales are there then it can later be programmed that we resize it to that scale when it not cuts.

screenshot_20170224-143736

screenshot_20170224-171911

Remove the Grid from the Homescreen

I'm trying to remove the grid for the Icons in the Homescreen. I tried tweaking the AllAppsGridAdapter & AllAppsRecyclerView. But i can't remove the Grid from the Homescreen .
Can u show some pointers or guide me how to acheive it ?

Nougat MR1 Conflicts

I have merged Blur with the Nougat MR1 branch of Launcher3, there are a few things that will need to be changed/improved with the new support, though:

  • I want to change the search text and divider color in the all apps drawer
  • The settings page is weird
  • Restarting/resetting the app on settings changes doesn't work
  • remove the preference for showing most used apps in the drawer as this is no longer available
  • Should be able to set even numbers for the dock icons setting
  • No longer allow the removal of the dock
  • All apps column preference doesn't seem to get applied anymore, it uses the homescreen setting
  • the page indicators don't seem to ever show (do they work on the launcher3 implementation?)
  • you cannot remove the search widget (should be easy though, there is a FeatureFlag for it)
  • the search widget seems lower than it should be
  • The "Wallpapers" button always just brings up the live wallpapers page, when it shouldn't
  • Dropping an icon in the same place used to bring up the edit options ("Restore Defaults", "Change icon", "Change Name"). It will still bring up those options, but if the app has shortcuts, it will also show those. Maybe I could combine these features?

Probably will run into some more, but this is where I am currently at.

Calendar page

This would be nice to keep track of events.

I have not decided yet how I want this page to look:

  • should it be an actual calendar view
  • should it be just an event list

It may start as an event list, with some kind of button to see an actual calendar.

Camera page

This would just be fun to have, especially with Google's new Camera 2 APIs.

I don't think it would be all that useful, but fun to make and share.

Page picker doesn't work

Haven't had time to look at it, but the page picker isn't working at all. It is defaulting to 3 "simple calculator" pages, but actually displays different pages on the launcher.

Trying to change them makes the app get all weird and forget what pages are supposed to be where.

Weather page

The first page that I would like to create is one to view weather data.

I have the app structured for it, and the code that can power the weather data was in blur_2, but I have not made the UI behind this yet.

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.