User specific calendar management


I am looking to build a website where there are multiple users hosting their events. I am looking for an easy way to set up a calendar for each of the user. I want to implement the following

a) Each user on the site has a specific calendar
b) User will fill a form, on the basis of which code will create events (including recurring events).
c) User is able to view the calendar to see free slots before booking the next event
d) Preferably, user also gets notifications etc for upcoming events.

Is there a 3rd party service that I can integrate to implement this?