kiwimix/README.md

95 lines
2.3 KiB
Markdown

# Kiwimix (calendar mixer)
Swiss knife for ical & caldav calendars
## Roadmap
Read a calendar
Access to calendar
* :x: access to public calendar
* :x: access to private calendar (with credentials)
* :x: with data from config file with multiple calendars
Download calendar events locally
* :x: choose source calendar
* :x: as separate files ?
* :x: as an in-memory database ?
Merge events
* :x: merge overlapping events
* :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
Web I
* :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
##
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
## References
* https://github.com/PuloV/ics-golang => features missing but the code is OK
* https://github.com/apognu/gocal => poorly coded
* https://github.com/samedi/caldav-go
* https://github.com/emersion/go-webdav