Skip to content →

GSoC 2018 Final Report


Cavabunga designed as modular calendar server and implemented with Java(Spring framework -springboot-) There are many calendar servers out there doing stuff pretty good but main difference that im trying to create is support for different calendar storing options. These days REST api and json is the main data transfer technology. Main part of Cavabunga (which is cavabunga-server) has RESTapi endpoints to retrieve and send calendar information.  Because of being common data transfer method, REST api can use for exchanging of calendar information. Which means, all cavabunga components have to have ability to convert their calendar information to RESTapi request. Which points out that there have to be an common object model accross to all components. The component cavabunga-lib created for that purpose. Every cavabunga module have to include cavabunga-lib library. Yes, even cavabunga-server. For that object model, I references the iCal data model ( which states that calendars are build top on components(which are events, journals, todo and alarm). Components have properties like DTSTART(time that event begins) or LOCATION(where event is happening)  etc. All theese elements have implemented as objects in cavabunga-lib

Other calendar resources can intercept with cavabunga-server via implemented modules like cavabunga-caldav or cavabunga-collector-lwn-calendar. In addition to that, after running cavabunga-server other modules will talk server via RESTapi and there is needing for rest api client to connect server. Thats why i create cavabunga-lib. All cavabunga-X modules have to include that module. Basically modules either convert Caldav protocol(i mention before in previous posts what the caldav is) or parse web content to cavabunga-lib objects and send them to cavabunga-server via cavabunga-client.

Previous Works and Reports

Commits and Repositories

There multiple git repositories that i worked on:

Here are my commits after 14 May -GSoC offical start date-:

Pull Requests / Pending Pull Requests – PENDING

Current Status and Future Work

IMHO %90 percent of project completed. Main functionalities are implemented. But there few of them i wanna implement:
1- cavabunga-web: will connect cavabunga-server and view every calendar collected via modules. And this web interface will allow users to search, share and manipulete calendars
2-  Share and Search end points: adding those endpoints to server will make cavabunga really usefull
3-  Builder: Ok, i admit it. Building project is little bit confusing and complicated. There have to be a script -bash or python- to help install and configure all cavabunga enviroment and its modules
4- cavabunga-android or cavabunga-ios: there are implementations for Caldav or calendar applications. But those implentations will help users to use cavabunga specific properties: like sharing and collecting calendars on web
5- There is a swagger api documentation on cavabunga-server but it should be more advance then it is now.


1- Im sure that there are bugs in code i couldnt see. So, unit and integration test have to be implemented
2- There are problems about iOS devices caldav client. I couldnt achive to connect properly cavabunga-caldav to iOS devices.
3-  The repository that created ( is problematic. Cause i dont have any management permission on the server. Therefore, all depencies have to move to maven central repositories.
4- Building can be annoying, it have be automated.

Source Codes and Builds


build jar archive: cavabunga-builds.tar

Final Words, Google Summer of Code

Lots of things i experience this summer. It was pretty scary for me to thinking that “working with Debian” 🙂 But i overcome pretty quickly. Not just codding, i also experience about how to communicate with commutiy/people or  how managing the time. And im still nerves and exited while im writing this report 🙂 It was fun, thnx eveybody!






Published in GSoC 2018


Leave a Reply