Code Monkey home page Code Monkey logo

sms-backup-plus's Introduction

SMS Backup+ SMS Backup+ logo Build Status SVG Open Source Helpers

Get it on Google Play Get it on F-Droid


Reporting bugs

Please read the known issues before reporting any new issues; we already know about several significant issues, including Gmail login failures (for which there is a robust work-around), and problems with logging phone calls into calendars (which we are investigating).


Description

This is a fork of the now-defunct Android backup tool SMS Backup. It uses Gmail/IMAP to perform SMS, MMS and call log backups over the network.

Main features/improvements:

  • Restore. SMS/Call logs stored on Gmail can be transferred back to the phone.

    • ⚠️ MMS are not restored.
  • Security. SMS Backup+ does not need your Gmail password.

    • Where possible, SMS Backup+ uses XOAuth2, including when matching phone numbers against contact names, and writing call log records into your calendar. This access can be revoked at any time.
    • ⚠️ In June 2019 Google changed their API policy, introducing sensitivity scopes, and as a result SMS Backup+ can no longer use XOAuth2 to save messages into your mailbox; instead a "password" is required to access Gmail via IMAP, but it can be a generated application password (which can be revoked without affecting your real password).
  • MMS backup support (added in version 1.1)

  • Call log backup (version 1.2), with Google Calendar integration (1.3) and restore (1.4).

  • Works with any IMAP server (but defaults to Gmail).

Tested with Android 4.x (Ice Cream Sandwich) - 10.x. (Q)

SMS Backup+ is available for free in the Google Play Store and on F-Droid, there will never be a pro / paid version.

But if you find the app useful and want to support its development you can make a donation using the secure in-app Play Store payment mechanism.

To get updates more frequently join the beta programme or download the latest beta manually from Github releases.

Also make sure to read the Privacy Policy.

Usage

First steps

You need to have an IMAP account or a Gmail account with IMAP enabled. See Use IMAP to check Gmail on other email clients to learn how to enable IMAP for your Gmail account or look at this screenshot.

After starting SMS Backup+, tap on "Connect" to start the authorization process.

👉 1.5.11: You will first have give SMS Backup+ the permission to access your account, displayed as "Allow SMS Backup+ to access your contacts?".

If you consent you have to confirm the Gmail account to be used for the backup.

If you don't have a Google account registered on your device a browser window will appear to perform a web-based authentication as fallback.

After completing the authorization process the "Connect" switch should be activated, indicating success. You are now ready to perform the first backup.

👉 1.5.11: "Connected" changed from checkbox to switch.

Initial backup

It is important that you perform the first backup manually. SMS Backup+ needs to know whether you want to upload messages currently stored on your device or not.

After having connected your Gmail account, SMS Backup+ will ask you to perform a first backup. If you choose "Backup", SMS Backup+ will start backing up all your messages to Gmail.

If you choose "Skip", nothing is sent to Gmail and all messages currently stored on your device are simply marked "backed up". This option is handy if you previously uninstalled SMS Backup+ and do not want to send your messages again to Gmail. Please note that any messages arrived after you last uninstalled SMS Backup and this initial backup won't ever be backed up to Gmail.

👉 1.5.11: Before the backup starts you will have to grant "send and view" permissions for SMS.

Restoring

If you wish to restore messages back to your phone tap "Restore". By default all messages stored on Gmail will be restored (this can be changed in "Advanced Settings").

👉 1.5.11: Default changed to 500 messages.

You can safely restore to a phone which has already messages stored on it, SMS Backup+ will skip the existing messages.

Before the restore can start you will need to confirm the change of the default SMS app. This step is required to get further permissions to write messages (see also the corresponding FAQ entry).

Call log support

SMS Backup+ can also backup and restore your call logs. It stores all calls using a separate label (defaults to Call log, but can be changed in "Advanced settings"). If you wish you can set this to the same value as SMS, to make all backups use the same label.

The body of the call log message contains the duration of the call in seconds followed by the phone number and call type (incoming / outgoing / missed).

An example:

267s (00:04:07)
+44123456789 (incoming call)

You can also add call log entries to a Google calendar. Just select Calendar sync in Advanced settings, and make sure you have selected a calendar to sync with.

If you only want to backup specific call types (incoming, outgoint etc.) you can do so as well.

👉 1.5.11: Call log backup is disabled by default. Permissions need to be confirmed separately for phone and calendar access.

Rich Communication Services is currently not supported, nor are there any plans to support it. Rich Communication Services is also known as RCS, Advanced Messaging, Advanced Communications, joyn or Message+.

If you want to trigger backups from another app, enable 3rd party integration in Advanced Settings and send the broadcast intent com.zegoggles.smssync.BACKUP. This will work even when Auto Backup is disabled.

Usage without Gmail (IMAP)

You don't have to use Gmail to backup your text messages - change Authentication to "Plain text" in "Advanced settings - Custom IMAP server", then change the server address / user name and password accordingly. Make sure to set security to "SSL (optional / trust all)" if your IMAP server has a self-signed certificate ("Unknown certificate" error during backup).

👉 1.5.11: security settings have been simplified. Select TLS and check "Trust all certificates" if using a self-signed certificate.

Also note that Gmail labels simply correspond to IMAP folders that will automatically get created on the first backup.

If you don't find an answer here you can also visit the Google+ community which might be able to help.

First search Github issues to see if the bug has already been reported. If not, create a new issue and attach the following details:

  • Version of SMS Backup+ used
  • Version of Android / brand of phone used

If it is related to backing up / restoring you should also enable the sync log with "Extra debug information" enabled (in "Advanced settings") and attach a relevant portion of it. The sync log is stored as sms_backup_plus.log (in the directory Android/data/com.zegoggles.smssync/files).

👉 1.5.11: new log file path, was previously on external storage / sdcard.

Rather than including the log in the text of your issue description, please use the "attach image" feature to attach your logfile as text to your issue. Alternatively, create a gist and link to it from your issue description.

It might also be worth to install the current beta version of SMS Backup+ to see if the bug is also present in the development version.

Over the years a lot of features have been added, often as a result of requests by users. This has worked great initially but has made the product itself very unfocussed and generic. It started as a tool to back up text messages (as the name SMS Backup implies) but gradually more and more features were added (call logs, MMS, WhatsApp...). It's now at a point where it has become too heavy and difficult too maintain or use. The settings screen makes this obvious, there are just too many things to configure. If anything features should be removed at this point, not added. A more focussed product would be easier to maintain and use.

Right now, SMS Backup+ is in maintenance mode; no new features will be added. Existing bugs will of course be addressed.

  • Read contacts - Needed to map phone numbers to names and email addresses
  • Your messages (read / write SMS) - Needed for backup+restore
  • Modify calendar events - needed for the call log backup to GCal
  • Send email to guests - this refers to calendar invitations (which are not created by the app)
  • Prevent phone from sleeping - needed to keep network active during a backup
  • Find accounts on the device - used for authentication
  • Use accounts on the device - used for authentication
  • Google Play billing service - used for in-app donations
  • Run at startup - used to enable automatic backups after reboot

👉 1.5.11 introduces runtime permissions (Android 6.0+) which means that you only grant the permissions for the features you actually use, after installing the application.

Try uninstalling the app, then installing the new version. Make sure to select "Skip" when doing the first backup, otherwise messages will get backed up twice.

If the automatic backup does not work first make sure that a manually initiated backup works as expected.

👉 1.5.11 brings many improvements to auto-backup reliability. However some beta users have still reported problems. If the backups don't run automatically try changing the Android "Battery optimization" settings for SMS Backup+ to "Don't optimize".

When reporting a bug related to auto backup it is essential to attach a sync log file. See the relevant FAQ for more information on how to do this.

Make sure you have the "Show IMAP" option checked in the Gmail label settings:

Screenshot

If this is the case make sure that the label name is set correctly (capitalization matters!).

Select "Reset" from the menu, and confirm that you want to reset the current sync state. All messages on the phone will be backed up on the next run.

Do you use a non-standard app like Google Voice/Hangouts or Signal to send messages? It could also be a device specific problem. Related issues: 516, 841.

This is probably related to Gmail's automatic priority inbox filing. A workaround is to set up a filter with "subject: SMS with", let the filter mark it as not important.

Just set the label to "Inbox" instead of the default "SMS" or "Call log".

Incoming backup schedule is used for incoming messages. 3 minutes here means that any incoming SMS will trigger a backup after 3 minutes. It is a full backup (including any sent messages). You should set the incoming schedule to a low value if you want to make sure that incoming SMS show up in Gmail shortly after arrival.

Regular schedule is used to perform backups in specific intervals. 2 hours here means that the device will try to backup all messages every 2 hours.

Fewer updates performed by the app means less energy consumed, so there's a trade-off data protection vs. battery life.

If you require more control over the backup schedule than what SMS Backup+ already provides you can use a 3rd party app to trigger the backup. Tasker for example supports SMS Backup+ since version 1.0.14.

This seems to be a limitation of Gmail. After the first hundred or so SMS being backed up, Gmail will cease to properly thread many of the conversations. You will notice that Gmail will eventually treat each SMS (in that initial backup) as individual conversations and will not longer group/thread them together.

A way around this is to do a full backup 100 SMS at a time (see Advanced settings).

It's a Gmail feature, but you can disable it. In Gmail settings, set conversation view to off (screenshot).

No. SMS Backup+ does not do a "real" sync, once the text has been transferred to Gmail it won't get modified or deleted by the app.

This means that it is impossible to establish a trusted connection with the IMAP server. A few reasons why this might happen:

  • You run on an ancient version of Android
  • You use an IMAP server with an expired or self-signed certificate

You can try to set the IMAP Server Setting Security to SSL (optional / trust all).

👉 1.5.11: Added "Trust all certificates" option

Google has changed the way SMS permissions work starting with Android 4.4 (KitKat). In order to get write access to your messages an app has to be set as the default system SMS app. Before starting the restore operation SMS Backup+ will request your permission to be set as default app. After restoring you will be asked to set the previous choice (usually "Messaging") back as default. ⚠️ This last step is important, if you don't set the old default back you might lose new messages.

No, for a variety of reasons: MMS are highly carrier-dependent, documentation is lacking and the Android Emulator does not support them.

However SMS Backup+ is open source; patches are more than welcome.

SMS Backup has not been designed to restore many thousands of messages. See the question "How do I restore the last N weeks / N messages?" for a way around that.

If you have a lot of messages backed up (let's say over 5000) restoring can be very slow, especially if you're only interested in the most recent messages.

A workaround is to use the Gmail web interface (or an IMAP email client) to move the bulk of the messages to another label in Gmail (e.g. SMSARCHIVED), and only keep a few hundred or so messages in the SMS label.

Next time you restore it will only restore those messages and it will be a lot faster.

Go to Authorized Access to your Google Account and select "Remove Access" next to "SMS Backup+".

If you get this error message and your network connection is active double-check that your time zone settings are correct, and that the local time is displaying correctly. The authentication process won't work otherwise.

If you want to help beta testing, visit the Play Store beta page. You will be asked to opt in to the beta program (you can leave it anytime).

Once opted in your device will automatically update to the latest beta which might have bug fixes and features not found in the currently released version.

Alternatively you can download an APK from Github releases and install it manually (⚠️ you won't get automatic updates this way). You can also install via F-Droid which often has more recent versions than what is available on the Play Store.

Installation from source

$ git clone https://github.com/jberkel/sms-backup-plus.git
$ cd sms-backup-plus
$ ./gradlew assembleDebug
$ adb install app/build/outputs/apk/app-debug.apk

If you want to help translating the UI to other languages download and translate the following file, then send the translated version via email:

However, if you're already familiar with Git you can just clone the repository and submit a pull request.

1.5.11

SMS Backup+ material

1.5.10

SMS Backup+ holo

License

This application is released under the terms of the Apache License, Version 2.0.

sms-backup-plus's People

Contributors

angryziber avatar bjdodson avatar chenzhang22 avatar chiara-de-liberato avatar coderfrankenstain avatar czbix avatar demokritos avatar dicer avatar euh2 avatar ferri64 avatar gles avatar javierpico avatar jberkel avatar jcrben avatar jmdm avatar jspricke avatar julroy67 avatar kurahaupo avatar liweitianux avatar loffe avatar madsandreasen avatar marcher233 avatar mdimjasevic avatar mosanger avatar niknetniko avatar ptkdev avatar skolima avatar smike avatar werdeil avatar yunsuchoi 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sms-backup-plus's Issues

Make it installable on sdcard

problem: the background service used by sms backup will get killed when the sdcard gets mounted as USB drive.

http://developer.android.com/guide/appendix/install-location.html

"You can, however, register for the ACTION_EXTERNAL_APPLICATIONS_AVAILABLE broadcast Intent, which will notify your application when applications installed on external storage have become available to the system again. At which time, you can restart your Service."

Date / Time in GMail

Hello,

First of all, let me say this is a GREAT app. Thanks for all your hard work on it!

This is a minor issue, but for the GMail app for Android (I use the Droid Incredible), the dates and times shown for the backed-up messages are the dates and times for when the messages were backed up to GMail, but not the actual dates and times that the original text message was sent.

There is a similar problem with the web-based GMail. In the inbox view, the dates on the very right are the dates when the latest text message of each thread was last backed up. However, clicking into the message thread, each individual message does show the correct date and time for the individual text message.

I'm not sure if this problem lies with how GMail deals with IMAP, or if this problem is resolvable from your end, but I just thought I'd ask.

Thanks again!

restore sms sends out sms messages

headers of email:

Message-ID: <[email protected]>
Subject: SMS with Matthias xxx ccccc
To: "Matthias xxx ccccc" <[email protected]>
From: remyboehler
Content-Type: text/plain;
charset=utf-8
Content-Transfer-Encoding: base64
Date: Fri, 22 Jan 2010 17:22:15 +0100
References: <[email protected]>
X-smssync-id: 20
X-smssync-address: +41762638589
X-smssync-type: 4
X-smssync-date: 1264177335905
X-smssync-thread: 7
X-smssync-read: 1
X-smssync-status: -1
X-smssync-backup_time: 22 Jan 2010 16:22:25 GMT

No longer backs up received SMS (DROID X Android 2.2)

SMS Backup+ 1.0.10
Android 2.2
Phone: DROID X

I noticed that SMS Backup+ does not backup received messages most of the time since I upgraded my DROID X to Android 2.2. I checked my Gmail account with people I consistently SMS, and noticed that it's only backing up sent messages on Sept 22 (I believe the day VZ released Android 2.2 for the DROID X).

Everyone once in awhile I would see received messages being backed up to contacts that I don't regularly SMS. I even tried manually backing up to see if it would backup received SMS, but it only backs up received SMS as well.

Authentication is set to Plain text (since XOAuth is not supported on the DROID X).

Incoming backup schedule is set to 3mins (matching Regular backup schedule)

'Unknown Sender' from me

On my backed up SMS's in my gmail folder, it indicates from 'Unknown Sender' or 'Unknown' when refering to me. In the expanded threads it's just blank. How can I correct that?

Polish translation typo

In res/values-pl/strings.xml , line 79 is
Wykonać kopię zapasową czy pominąć wszystkie wiadomości aktualnie przechowywane na tym urządzeniu?\n\nUwaga: kopia zapasowa będzie wykonana w partiach po %1$d wiadomości.
should be instead
Wykonać kopię zapasową czy pominąć wszystkie wiadomości aktualnie przechowywane na tym urządzeniu?

(it was accidentally copied from the following line)

incorrect last sync time

The last sync time and date that appears after backup is wrong I backed up on the 15/08/2010 at 00:26 but it says my last backup was on the 14/08/2010 at 03:26. The date and time on my phone are correct.

Droid X: "you do not have permission to open this page" (callback)

After entering my email and password in the browser the app opens I click on "grant permission" and get this message: you do not have permission to open this page. smssync://gmail? oauth_verifier=s1cnlh%2FQi%2Bj

Droid x, 2.1, unrooted

this seems to be a bug in the Droid X browser

Only Restore Last X Amount Of Messages

I am not sure if this feature request is similar to the "Deleted messages (on phone) are restored as well". I have my phone set up to delete messages after a conversation reaches 200 txts. However when I restore the messages all 10,000 of my texts are restored. Would it be possible to have the program only restore the last X amount of messages (in my case 200) instead of all of them (in my case 10,000)

Also I just wanted to thank you for this program, it has been invaluable in helping me get my messages back!

Backing Up Deleted SMS

I just moved over from SMS BackUp to your more advanced version and seem to have found one issue. What I liked about SMS BackUp was that messages were backed up instantly. Now if I was to delete a received or sent item straight away, it will not be backed up. Is there any way for you to store all the messages and then back them up as per the schedule?

Spaces in telephone number generates invalid email address

http://code.google.com/p/android-sms/issues/detail?id=70

It is sometimes the case that phone numbers have spaces or other characters
in them (these may have been added manually or when syncing from another
address book). This does not work properly when the android-sms app
generates the email address for a number.
e.g. phone number "+61 412345678" (note the space after +61). The app
generates the following line in the email source:

From: "Name Of Person" <+61 [email protected]>

This does not work properly in gmail, and spaces in email addresses are
invalid anyway.
The same bug would occur for the To:.

Can you add some code to simply replace spaces and any other invalid email
address characters in a phone number with, e.g. underscores (_), when
generating the email address from/to line.

make notification disappear

Lately I got a SMSBackup+ login error a few times, which shows a
notification on the notification bar. This is all very nice but the
notification stays there forever. So even if I go to the application
and press backup, which it then does perfectly, the notification
stays. Of course I can clear the notifications, but stuff up there
should disappear by itself, once the reason for it is gone. Its
nothing grave of course. Its just to let you know.

Reset local sync state / "unskip" messages

Need an easy way to reset the local sync state. At the moment this is possible via disconnecting+reconnecting an account, but this takes a while and is only possible when using XOAuth.

Storage issues for backup restore

It appears, based on the my free space, that SMS Backup+ uses the /data partition to store information during a restore. This led to some real problems when restoring a lot of messages: I'd like to suggest the following:

  • That a check is added for external storage, and that it is used as a storage area when restoring if available.
  • Storage used is controlled using paging: Only download X number of messages before restoring them, and then getting the next X number of messages - This should limit space usage and allow for more stable operation when a lot of messages are being restored.
  • Review the cleanup procedure used once restore is complete, to ensure that no unneeded message data is left over.

"From" and "To" email metadata with real phone number

Can we have "From" and "To" with exact phone number rather than replaced email address as in current version?

There is a scenario in which a contact has more than a phone number, and it is difficult for the app to restore sms matching correct phone number.

In another scenario, a contact change email address, consequently make it difficult to restore sms based on email address.

However, the app is great. Love it!

Chinese translation is broken

The Chinese language interface displays wrong text when synchronizing messages, please consider update the translation and I would like to help with this task.
Mail: marcher233 at gmail

BR,
Chen

Not backing up entire message

SMS Backup+ is only backing up my sms "one-sided" as in when i go to the sms label in gmail it only shows the sms i have sent and not the sms i have received. This seems like a huge issue to me.

Im using a Droid X through XOAuth running on froyo leak

success indicator broken

I see a bug in the new version: The light in left corner has not green color by succefull backup (Done), it's grey.

I have HTC Hero with Android 2.1.

Progress bar does not update after screen shuts off and turns on again

This is the problem I have:

  1. Start a backup with 20 sms messages in my inbox
  2. Screen shuts off after 30 seconds
  3. Turn phone back on after 2 minutes and unlock screen
    The progress bar has stopped at half way and shows that only 9/20 of my messages have been backed up. However, if I check my gmail account then all 20 messages have been uploaded.

Deleted messages (on phone) are restored as well

When running a restore ALL messages with the corresponding label (in my case the default SMS) are restored onto the device. Even when they have been previously deleted on the phone.

The optimal solution in my eyes would be something like this:
When a SMS is deleted on the phone add a deleted label to the backed up SMS in Gmail.
On restore on the messages without the deleted filter would be restored.

A first step could be that a label could be specified that is then used to filter out the messages. This label had to be applied manually in gmail.

In general this issue arises since I pretty much never deleted any messages. Often they contain business relevant information, even though I do not have to access that information every day.

Restoring MMS

Restoring SMS is absolutely perfect...worked like a champ for me today restoring 3645 SMS messages. I am still out of luck with the 23 MMS messages that I have. Are there any plans to incorporate that into this app?

Only works when connected to wifi

"I've written before about the issue of not being able to log in to my account without being connected to wifi.

I've, since i first tried sms backup, tried changing rom several times but with no result and in sms backup+ i've tried diffrend serversettings including diffrend combinations but also with no luck."

(htc magic (32a), cyanogenmod 5.0.8-DS, android 2.1)

Apply fix for issue 41 from original Sms Backup

Issue: http://code.google.com/p/android-sms/issues/detail?id=41

Sms Backup used to mangle contact emails when the contact name contained non-ASCII characters, the single line patch from http://code.google.com/p/android-sms/issues/detail?id=41#c14 solves this issue. I see that it's not applied in Sms Backup Plus source code ( http://github.com/jberkel/sms-backup-plus/blob/master/src/com/zegoggles/smssync/CursorToMessage.java#L246 ). Can you please apply?

1.0.11 not autostarting in Froyo 2.2.1

I noticed after a fresh boot today that my sms were not getting backed up. I checked my list of process and the app was not on there. When I opened it via the drawer, the status was "idle." I had to click "backup" in order for it to connect, log in, and back up.

I have "auto backup" checked, regular schedule is "never," and incoming schedule is "1 min." All other settings are default.

Am I doing something wrong?

improper Gmail threading with contacts with phone numbers listed on Facebook

I have been having some problems getting the message threads in gmail to appear correctly. I found out the threading works for contacts who I list their phone numbers in gmail only, and do not have their numbers on Facebook (I have my phone set to sync with Facebook). But if a contact lists their phone number on Facebook, no matter what I put under their gmail contact, or even if there is no gmail contact at all, then the app can't match their number to a contact and I get one thread that is basically [email protected] which is all of their messages to me, and another one that is [email protected] where it's all my messages to them, where "xxxxxxxxxx" is their number. I tried unlinking the gmail and facebook contact on my phone but it doesn't matter, it still does this. I would really like to see this problem fixed so I can read the message threads instead of just seeing half the conversation.

(shelby.dawes via androidzoom.com)

Question: merging old mmssms.db files

Hi

Sorry if this is the wrong place, but I thought the answer might help others too.

I have a bunch of old mmssms.db files that I'd like to merge all together (too bad I wasn't running your app sooner).

I thought of a few ways to do this and would love your input:

  1. Simply merge the sms table (all fields except _id) into one database. Question: will Android automatically recreate all the indexes, e.g. thread table, etc?

  2. I guess in theory I could keep on copying the file across, reboot, run your app, with all files?

  3. I could write my own app (on my PC) to also sync via IMAP all the sms's using the same format as your app, and let them sync back to my phone.

I'd love to hear what you think is best, since I'm sure you know the messaging system quite well by now :)

Thanks for the great app!

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.