Swiss knife for ical & caldav calendars // 🚧 Draft
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Glenn Y. Rolland 2531227435 Add go dependencies 1 year ago
cmd/kiwimix Add basic operations 1 year ago
pkg/kiwimix Add basic operations 1 year ago
Makefile Change project name in Makefile 2 years ago
README.md doc: Add usage examples 1 year ago
go.mod Add go dependencies 1 year ago
go.sum Add go dependencies 1 year ago

README.md

Kiwimix (calendar mixer)

Swiss knife for ical & caldav calendars

Roadmap

Read a calendar

Access to calendar

  • access to public calendar
  • access to private calendar (with credentials)
  • with data from config file with multiple calendars

Download calendar events locally

  • choose source calendar
  • as separate files ?
  • as an in-memory database ?

Merge events

  • merge overlapping events
  • keep reference to source-calendars/parent-events (meta-data? external?)
  • make selected event (source calendar? pattern?) private or anonymous

Upload calendar events remotely

  • associate mixed local with remote target calendar
  • handle event ids & duplicates

Web I

  • split into library + CLI util
  • write an API for the lib
  • add a web frontend
  • add user management & multi-account

Serve calendar locally

  • 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