Started in 2021 by Florian Arndt out of 💜 for 🕰.
TL;DR: Timelines App 👉 Share detailed CSV via E-Mail 👉 Collect using IMAP 👉 Deliver time spans to your backend
- Track time in Timelines App
- Time tracked in the Timelines App can be exported to CSV
- We need the CSV format "Detailed" that requires a "Pro" subscription (currently costs around 20 € per year and user)
- That CSV format can - at any point in time - be manually shared to an e-mail address. This should be done before reasonable invoicing can take place.
- Deliver tracked time to your backend
- With the aforementioned mechanism this integration can automatically determine important fields of tracked time spans:
- The user can be identified by the e-mail's sender address
- [Not coded yet] security can be enhanced with a required, short smtp relaying path, e-mail encryption or a simple passphrase somewhere in e-mails can be required for each user
- The project identifier can be encoded in the timeline name (using square brackets like
[backend project id]
). This identifier can then be used to match the project in your backend.
- With the aforementioned mechanism this integration can automatically determine important fields of tracked time spans:
- Get Receipts
- Any user who reported his time can be informed about the state and stats of the import process via a report e-mail
- This tool identifies time spans using their timeline name and the starting time. So whenever one or both of the two change it counts as a new event and gets re-imported. This could be fixed by Timelines App providing a unique identifier for events in the CSV data and this tool using that as the new identifier.
- The project identifier needs to be part of the Timeline name like
Project XYZ [123] …
. This could be automated if the Timelines app supported syncing project metadata with a backend.
- Using Docker
- Install Docker
- Run
./docker-run --build
- Without Docker
- Ensure python3 is installed
- Install the dependencies with
pip3 install python-dotenv==0.17.0 imapclient==2.2.0 pickledb==0.9.2 requests==2.25.1
- Your backend plugin's dependencies like requests
- Run
python3 run.py
- Set environment variables. You can:
- set environment variables (see
example.env
for a list) in your machine or container - copy
example.env
to.env
and customize it to your needs - it's likely wise to make sure your imap server has a valid certificate
- feel encouraged to write your own backend plugin - check out printer_example.py for a trivial example
- set environment variables (see
- Clone this repo
- Install and configure as described in paragraph "Install and run"
- Run this tool whenever needed (i. e. using a cronjob or scheduled task)
- Monitoring:
- make sure you get informed if the
run.py
exit code is not zero - you can log/append start+end date of runs as well as std{out,err} somewhere for reference
- make sure you get informed if the
- Happy + want to support this project? You could paypal a donation to
[email protected]
🥳 - Unhappy? Open an issue or a fork 😄