Although I am at the end of my own calendar project and I am not using iCal, perhaps this will help.
My own experience is that I could not find any sort of library and I coded my own backend from scratch.
For the front-end, I would urge you to use FullCalendar, it is an amazing calendar with what you can do with it. All you need to then, is concentrate on the backend.
For the db, I would go the route of having only 1 database row per event and when that event is modified, if it is recurring then you amend the existing event and create a new event with the change.
For the back-end logic, in conjunction with fullcalendar it gives you a window to work with. Within this window, I would then work out when the event occurs and then show, if the event is recurring to then work out when it should be shown on the calendar. It can get a bit complex but you can do it.
I'm attaching pics of what I have done, sadly this project isn't open source.
Add New Recurring Event
Calendar with Recurring Events
Amend Recurring Event
Agenda List View
Cheers