{"id":14065818,"url":"https://github.com/anicolaides/todoist-gcal-sync","last_synced_at":"2025-07-29T21:33:32.777Z","repository":{"id":223332651,"uuid":"116556353","full_name":"anicolaides/todoist-gcal-sync","owner":"anicolaides","description":"📅 ✔️ Bi-directional syncing between Todoist and Google Calendar (deprecated).","archived":false,"fork":false,"pushed_at":"2022-02-07T04:00:55.000Z","size":91,"stargazers_count":14,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-08-13T07:09:44.468Z","etag":null,"topics":["bi-directional","daemon","google-calendar","integration","productivity","sync","todoist","visualization"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anicolaides.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-07T10:27:24.000Z","updated_at":"2024-08-13T07:09:46.522Z","dependencies_parsed_at":null,"dependency_job_id":"73a23b46-56f1-4c05-8859-d40588583981","html_url":"https://github.com/anicolaides/todoist-gcal-sync","commit_stats":null,"previous_names":["anicolaides/todoist-gcal-sync"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anicolaides%2Ftodoist-gcal-sync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anicolaides%2Ftodoist-gcal-sync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anicolaides%2Ftodoist-gcal-sync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anicolaides%2Ftodoist-gcal-sync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anicolaides","download_url":"https://codeload.github.com/anicolaides/todoist-gcal-sync/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228052621,"owners_count":17862103,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bi-directional","daemon","google-calendar","integration","productivity","sync","todoist","visualization"],"created_at":"2024-08-13T07:04:44.888Z","updated_at":"2024-12-04T05:30:58.985Z","avatar_url":"https://github.com/anicolaides.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# [DEPRECATED] todoist-gcal-sync \n[![Build Status](https://travis-ci.org/alexandrosio/todoist-gcal-sync.svg?branch=master)](https://travis-ci.org/alexandrosio/todoist-gcal-sync)\n![apm](https://img.shields.io/apm/l/vim-mode.svg)\n\nBi-directional syncing between Todoist and Google Calendar\n\n## Getting Started\nFirst and foremost, why ... use Google Calendar with Todoist?\n\u003e The norm for a To-do app is to display tasks in a *linear fashion*; yet, one can't help but realize how overwhelming this approach may turn out to be.\n\u003e Nonetheless, **Visualization** is a plausible solution to this challenge; through this integration, one can visualize and plan ahead by looking at a bird's eye view of the whole landscape available for work.\n\nThe instructions below will help you get the tool up and running.\n\n\n------\n*Note*: The daemon has only been tested with unix-based systems and python 3.x.\n\n### Prerequisites\nFor an always up-to-date list of dependencies - see [dependencies.txt](/misc/dependencies.txt)\n\nInstall dependencies using:\n```\npip3 install -r ./misc/dependencies.txt\n```\n\n### Installing\n1. Clone the repo and change dir.\n```bash\ngit clone https://github.com/alexandrosio/todoist_gcal_sync.git\ncd ./todoist_gcal_sync\n```\n\n2. Create the credentials folder.\n```shell\nmkdir credentials\n```\n\n3. Create the `todoist_token` file.\n```shell\ntouch credentials/todoist_token\ncd credentials/\nvi todoist_token\n```\nand paste your Todoist API token into _`todoist_token`_.\n\n4. Sign in to your Google account and visit [Google Cloud](https://console.cloud.google.com/cloud-resource-manager) to create a project.\n    1. Click on `CREATE PROJECT`.\n    2. Type \"todoist-gcal-sync\" as Project name and click the `Create` button.\n    \n    _Note: a project todoist-gcal-sync-XXXXX will be created._\n    \n    3. Select project todoist-gcal-sync-XXXXX from the drop-down.\n\n    4. While looking at the project's dashboard, click on the the `Products \u0026 services` located at the top left-hand corner of the screen and select `APIs and Services`.\n\n    5. Then, click on `ENABLE APIS AND SERVICES` and select `Google Calendar API`.\n\n    6. Then, click on the `ENABLE` button.\n\n    7. Then, click on `Credentials` followed by the `OAuth consent screen` tab.\n\n    8. Now, type \"todoist-gcal-sync\" under \"Product name shown to users\" and click `Save`.\n\n    9. Click on the `Credentials` tab, followed by the `Create credentials` button and select the `OAuth client ID` option.\n\n    10. Then, select the `Other` option, and type \"python\" as Application type followed by the `Create` button.\n\n    11. Then, download the client secret file in JSON format using the download button.\n\n    12. Rename the client secret file to `client_secret.json` and place it under the \"/credentials\" folder.\n\n5. Configure the SMTP logging handlder of the [log_cfg.json](/config/log_cfg.json) file by replacing `YOUR_GMAIL_USERNAME` and `ONE_TIME_APP_PASSWORD` with the appropriate information; if you are using Two-Factor Authentication with Gmail, simply create a one-time app password; otherwise, use your existing Gmail password.\n\n6. Now edit [settings.json](/config/settings.json) according to your needs; if you'd like to exclude some projects or mark others as standalone, then this is the time to make those changes.\n\nPlease find attached a sample of my excluded/standalone projects' config.\n```json\n  ...\n // User Preferences\n \"projects.excluded\": [\"Someday | Maybe\"],\n \"projects.standalone\": [\"Side projects\", \"todoist_gcal_sync\"],\n  ...\n```\n\n7. Run the app for the first time.\n\n    _Note: Please initialize todoist-gcal-sync with a root user, if you intend to use systemd to run the script as a service._\n```shell\ncd ../src/ \npython3 daemon.py --noauth_local_webserver\n```\n\n8. Copy the link provided to your browser and paste the `verification code` generated to the machine that's running the daemon.\n\n### How to run the daemon\n```shell\npython3 daemon.py\n```\n\n### How to run the daemon in the background (for testing purposes)\n```shell\nnohup python3 -u ./daemon.py \u003e /dev/null 2\u003e\u00261\u0026\n```\n\n## How to run the daemon as a service (using systemd)\n1. Move and rename the systemd service file.\n   ```shell\n   sudo mv /misc/systemd_service_file /lib/systemd/system/todoist-gcal-sync.service\n   ```\n2. Edit the service file,\n   ```shell\n   sudo vi /lib/systemd/system/todoist-gcal-sync.service\n   ```\n   and change `PATH_TO_CLONED_REPO` to the path of the local copy of this repository on your server.\n\n3. Refresh systemd.\n   ```shell\n   systemctl daemon-reload\n   ```\n\n4. Enable the service, so it persists on reboot.\n   ```shell\n   sudo systemctl enable todoist-gcal-sync.service\n   ```\n\n5. Run the service.\n   ```shell\n   sudo systemctl start todoist-gcal-sync.service\n   ```\nFinally, run the following to confirm the service is up and running:\n   ```shell\n   sudo service todoist-gcal-sync status\n   ```\n_Warning: If you experience issues with systemd, use `journalctl -u todoist-gcal-sync.service` to investigate further._\n\n## How to reset the daemon\n\n```shell\ntouch reset_daemon\npython3 daemon.py\n```\n_Note: This will erase all calendars and the app's database, then re-initialize the app._\n\n## How to migrate the app to a new system\n\n1. Copy contents of .todoist_sync to the destination system.\n2. Copy the database to the destination system.\n3. Run daemon.py.\n\n## Contributing\nPlease feel free to contribute as the project is still at its infancy. Any help is greatly appreciated.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanicolaides%2Ftodoist-gcal-sync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanicolaides%2Ftodoist-gcal-sync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanicolaides%2Ftodoist-gcal-sync/lists"}