Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

TaskBridge

Export your Apple Reminders & Notes to NextCloud, a local folder, or CalDav - and keep them in sync!

Documentation Status example workflow Coverage Status

Apple Notes & Reminders are great apps... as long as you're using them in the Apple ecosystem. If you need access to your data from Windows, Linux or an Android device, you're stuck using web apps. TaskBridge is an attempt at solving this problem, by allowing notes and reminders to be synchronised to other cloud services which can more easily be accessed on multiple devices.

TaskBridge is in no way affiliated-with or endorsed by Apple, Inc.

screenflow_sync.gif screenflow_notes.gif screenflow_reminders.gif

Current Sync Support

  • Apple Notes can be synchronised with NextCloud Notes, or any other Markdown folder.
  • Apple Reminders can be synchronised with NextCloud Tasks, or most CalDAV VTODO calendars.

Documentation

Limitations

TaskBridge has several known limitations. Some of these limitations are due to TaskBridge being brand-new software, worked on by one guy, in his spare time. However, many limitations come from the closed nature of the Apple ecosystem. This is unfortunate, but a reality.

You should therefore be aware of the following limitations:

Notes

  • Only image and URL attachments are supported. This is due to the closed way that other attachment types are handled by Apple Notes, and the fact that NextCloud Notes does not support other attachment types.
  • Todo items (i.e. items with a checkable box) are not supported, and will be converted to bullets once synchronised. This is due to the closed (and undocumented) way that Apple Notes handles these items.

Reminders

  • Alarms do not have time zone support.
  • Although alarms are synchronised to NextCloud, the NextCloud Notes app will not display reminder messages. This is not a TaskBridge limitation.
  • Additional notes added to reminders are synchronised, but this does not include attachments.

Notes & Reminders

  • When an item is sychronised from a remote server to the local Notes/Reminders app, the modification date of the local version is set to the date/time when sychronisation occurred. This cannot be changed by TaskBridge. This means that, on the next sync, the item will be re-uploaded to the remote server, even if no further changes have been made locally. However, this does not result in lost data - if more changes are made remotely, the remote note is correctly used as the ‘newer’ note.

Contributing

TaskBridge is currently a one-man effort! Hopeully, this section will some day be filled with contributor's names! If you would like to contribute to TaskBridge, you're in the right place.

What the project needs most:

  1. Testers. Being a one-man effort, TaskBridge has been tested on an extremely limited number of configurations. If you have a Mac, you too can test TaskBridge by just trying it out and reporting any issues.
  2. Developers. As with any project in its early days, TaskBridge has bugs. An extra pair of eyes going over the code would be a huge help to continue squashing as many of them as possible.
  3. Designers. The TaskBridge UI and imagery could use a lot of spit and polish. If you have UI/UX or graphic design skills, you too can make a valuable contribution.

Developing

The project is written in Python and uses Poetry for dependency management. Use any environment you prefer. The project is primarily built using PyCharm on macOS; A .idea folder is provided if you're using PyCharm, which has various inspection and run configurations already set. You will need to be using macOS and logged into iCloud for synchronisation functions to work.

  1. Install Homebrew.

  2. Install Git:

    brew install git
    
  3. Clone this repository:

    git clone https://github.com/keithvassallomt/taskbridge.git
    
  4. Install Poetry:

    pipx install poetry
    
  5. Active the virtual environment:

    cd /path/to/TaskBridge
    poetry shell
    
  6. Install dependencies:

    poetry install
    

Useful commands

Run TaskBridge:

python taskbridgeapp/gui/TaskBridge.py

Build:

poetry run poetry build

Update lock file (after changing pyproject.toml):

poetry run poetry lock

Generate App file (alias):

python setup.py py2app -A

Generate App file (production):

python setup.py py2app

FAQ

What are the System Requirements?

TaskBridge must run on macOS, and you must be logged into iCloud. There's no other way of getting access to your notes and reminders otherwise.

How does it work?

TaskBridge uses various AppleScript scripts to fetch your notes and reminders from the Apple apps. Notes are converted from HTML to Markdown, and added to your NextCloud Notes folder (or any other folder of your choice). In the case of NextCloud, it's then up to the NextCloud Desktop app to sync these. Reminders are synchronised to NextCloud Tasks, or other CalDAV servers, via CalDAV.

Does everything work?

No. Please see the limitations. The biggest limitation is that certain elements in Apple Notes (such as checkable TODO items and attachments other than links or images) are undocumented and unavailable (presumably) via AppleScript.

Do I have to keep my Mac switched on if I use scheduled reminders?

Yes.

Why does TaskBridge prompt me to prune completed reminders?

For some reason, the Apple Reminders app is extremely slow to respond when there are many stored reminders. For most people, the majority of their reminders are in the Completed section. Clearing this out greatly improves performance. Even with just 20-or-so completed reminders, Reminder synchronisation takes considerably longer.

Can I use TaskBridge without a GUI?

Yes. A CLI is available for scripted/automated use. See taskbridge/cli. A PyPi package is also available. Also, see the taskbridge/notes and taskbridge/reminders folders in the repository.

Why don't you use the NextCloud Notes API?

The NextCloud Notes API is lacking some core features, such as support for adding attachments to Notes.

Why don't you use CloudKit?

The information available via CloudKit is limited. Moreover, Apple's EULA specifically forbids accessing CloudKit via an application on script.

Disclaimer

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Metadata

Release files for TaskBridgeApp 0.1.3b7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for TaskBridgeApp 0.1.3b7
File Size Uploaded Provenance Actions
taskbridgeapp-0.1.3b7.tar.gz 7.4 MB Without provenance Details for taskbridgeapp-0.1.3b7.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for TaskBridgeApp 0.1.3b7
File Interpreter ABI Platform Actions
taskbridgeapp-0.1.3b7-py3-none-any.whl Python 3 none any Details for taskbridgeapp-0.1.3b7-py3-none-any.whl

Total release size: 14.8 MB

Release files / taskbridgeapp-0.1.3b7.tar.gz

Download URL taskbridgeapp-0.1.3b7.tar.gz
Size 7.4 MB
Tags Source
SHA-256 checksum
How to use checksums
8bd6a6454f1165194e1cd29ea0c7dee3921f9d8e4f9db631a458c467aa269dc0
BLAKE2b-256 checksum
How to use checksums
747d449a9d0feab4f6c8643e97b36d8214a29c5d9c180335d800d1924572d579
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.12.3 Darwin/24.5.0

Release files / taskbridgeapp-0.1.3b7-py3-none-any.whl

Download URL taskbridgeapp-0.1.3b7-py3-none-any.whl
Size 7.4 MB
Tags Python 3
SHA-256 checksum
How to use checksums
d4793c7ca9f6c7be66b28a3391d626d94d348b0b188ebc5a974b21e452ae9d5b
BLAKE2b-256 checksum
How to use checksums
f9e12c8fac6a116cb34f1ec877ea8b64222fc51c1742839488dbc5f933ebae62
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.12.3 Darwin/24.5.0

Security for TaskBridgeApp 0.1.3b7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page