Skip to content
This repository has been archived by the owner on Sep 20, 2022. It is now read-only.

Pong420/google-tasks-desktop

Repository files navigation

Google Tasks Desktop

Unofficial google tasks desktop application. Using React and google tasks api

⚠️ You will need to enable your own Google Tasks API whether you are user or developer.

Step to enable Google Tasks API.

  1. Follow the instruction in https://support.google.com/cloud/answer/6158849 to setup your OAuth consent screen and Credentials ( In step 6, you should select Desktop app as the application type )

  2. After the OAuth client created, you could download the oAuth.json by clicking this button

And the oAuth.json looks like this

{
  "installed": {
    "client_id": "...",
    "project_id": "...",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_secret": "...",
    "redirect_uris": ["urn:ietf:wg:oauth:2.0:oob", "http://localhost"]
  }
}
  1. Start and drag the oAuth.json into the application.

  2. Enable Google Tasks API

  3. Click on the Get Code button and will require authentication. Just ignore the This app isn't verified warning and continue because you are the app owner.

  4. Paste the code into the input filed and click the Confirm button.

Development

yarn dev

Packaging

To package apps for the local platform:

yarn package

First, refer to the Multi Platform Build docs for dependencies. Then,

yarn package-all

TODO

  • Support Window & Linux
  • Keyboard shortcuts
  • Dark Theme
  • Add Note
  • Add Date
  • Animation
  • Sync data periodically
  • Move task to another list
  • Improve / check performace
  • Subtask
  • Error handling

Known issue

  • Add time / repeat is not supported as API limitation
  • Tasks sorting type (My order / Date) is not synced to the official platform (Web/App)
  • The position of the task which marks as complete to incomplete may be different after refresh