If you have a library that makes it easy to work with months, weeks and days (I used Python's calendar library) its not hard.
Here's how I did it - create objects to represent appointments, reminders, meetings (or whatever) and give them a date and time field. Then filter them by the month you want to view, use the calendar object to build the calendar for that month, use it to draw a HTML table with a cell for each day. If you have an object for that day colour it differently and add a link to a page for items for that day.
That was a hack and didn't take any real time in comparison to rest of the app.
At least if you roll your own and get the basics right you can easily add the functionality that the customers will go for. Remember, you don't have to recreate google calendar - just give therm the bits they want.