🔴 Concept | Swiss knife for ical & caldav calendars
Find a file
2023-05-27 18:06:43 +00:00
cmd/kiwimix Add basic operations 2021-06-25 14:46:25 +02:00
docs Add 'docs/commands.md' 2023-05-27 18:06:43 +00:00
pkg/kiwimix Add basic operations 2021-06-25 14:46:25 +02:00
go.mod Add go dependencies 2021-06-25 14:46:56 +02:00
go.sum Add go dependencies 2021-06-25 14:46:56 +02:00
Makefile Change project name in Makefile 2020-12-28 02:14:44 +01:00
README.md doc: Add usage examples 2021-06-25 09:14:44 +02:00

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