2020-12-28 01:11:39 +00:00
|
|
|
# Kiwimix (calendar mixer)
|
|
|
|
|
2021-05-08 23:25:07 +00:00
|
|
|
Swiss knife for ical & caldav calendars
|
2020-12-28 01:11:39 +00:00
|
|
|
|
|
|
|
|
|
|
|
## Roadmap
|
|
|
|
|
2021-06-25 07:14:44 +00:00
|
|
|
Read a calendar
|
|
|
|
|
|
|
|
|
2021-05-08 23:25:07 +00:00
|
|
|
Access to calendar
|
2020-12-28 01:11:39 +00:00
|
|
|
|
2021-05-08 23:25:07 +00:00
|
|
|
* :x: access to public calendar
|
|
|
|
* :x: access to private calendar (with credentials)
|
2021-05-08 23:18:30 +00:00
|
|
|
* :x: with data from config file with multiple calendars
|
2020-12-28 01:11:39 +00:00
|
|
|
|
|
|
|
Download calendar events locally
|
|
|
|
|
2021-05-08 23:18:30 +00:00
|
|
|
* :x: choose source calendar
|
|
|
|
* :x: as separate files ?
|
|
|
|
* :x: as an in-memory database ?
|
2020-12-28 01:11:39 +00:00
|
|
|
|
|
|
|
Merge events
|
|
|
|
|
2021-05-08 23:18:30 +00:00
|
|
|
* :x: merge overlapping events
|
2021-05-08 23:25:07 +00:00
|
|
|
* :x: keep reference to source-calendars/parent-events (meta-data? external?)
|
|
|
|
* :x: make selected event (source calendar? pattern?) private or anonymous
|
|
|
|
|
|
|
|
Upload calendar events remotely
|
|
|
|
|
|
|
|
* :x: associate mixed local with remote target calendar
|
|
|
|
* :x: handle event ids & duplicates
|
2020-12-28 01:11:39 +00:00
|
|
|
|
|
|
|
Web I
|
|
|
|
|
2021-05-08 23:18:30 +00:00
|
|
|
* :x: split into library + CLI util
|
|
|
|
* :x: write an API for the lib
|
|
|
|
* :x: add a web frontend
|
|
|
|
* :x: add user management & multi-account
|
|
|
|
|
|
|
|
Serve calendar locally
|
|
|
|
|
|
|
|
* :x: provide caldav urls for generated calendars
|
|
|
|
|
2021-06-25 07:14:44 +00:00
|
|
|
##
|
|
|
|
|
|
|
|
Find free time
|
|
|
|
|
|
|
|
kiwimix generate \
|
|
|
|
--from-date XXX --to-date YYY \
|
|
|
|
--from-time 9:00 --to-time 19:00 \
|
|
|
|
| kiwimix substract - agenda.ics \
|
|
|
|
|
|
|
|
Find free time for a meeting
|
|
|
|
|
|
|
|
kiwimix generate \
|
|
|
|
--from-date XXX --to-date YYY \
|
|
|
|
--from-time 9:00 --to-time 19:00 \
|
|
|
|
> full.ics
|
|
|
|
kiwimix union alice.ics bob.ics \
|
|
|
|
> events.ics
|
|
|
|
kiwimix substract full.ics events.ics \
|
|
|
|
> free.ics
|
|
|
|
|
|
|
|
Rewrite events
|
|
|
|
|
|
|
|
kiwimix filter --merge alice.ics \
|
|
|
|
| kiwimix filter --anonymize - \
|
|
|
|
|
|
|
|
|
|
|
|
V2 (with stack support)
|
|
|
|
|
|
|
|
kiwimix
|
|
|
|
generate --.... # generate X calendar & push
|
|
|
|
@ read alice # push alice.ics
|
|
|
|
@ filter --merge # pop alice, filter & push
|
|
|
|
@ filter --anonymize # pop alice, filter & push
|
|
|
|
@ read bob # push bob.ics
|
|
|
|
@ filter --merge # pop bob, filter & push
|
|
|
|
@ filter --anonymize # pop bob, filter & push
|
|
|
|
@ union # pop bob, pop alice, compute alice - bob
|
|
|
|
@ substract # pop bob, pop alice, compute alice - bob
|
|
|
|
|
|
|
|
|
|
|
|
kiwimix filter --anonymize --merge alice.ics
|
|
|
|
kiwimix load bob.ics ! anonymize ! merge
|
2021-05-08 23:18:30 +00:00
|
|
|
|
|
|
|
## References
|
|
|
|
|
2021-06-25 07:14:44 +00:00
|
|
|
* https://github.com/PuloV/ics-golang => features missing but the code is OK
|
|
|
|
* https://github.com/apognu/gocal => poorly coded
|
2021-05-08 23:18:30 +00:00
|
|
|
* https://github.com/samedi/caldav-go
|
2021-05-08 23:25:07 +00:00
|
|
|
* https://github.com/emersion/go-webdav
|
2021-06-25 07:14:44 +00:00
|
|
|
|
|
|
|
|