I think both calendar widgets can manage your case. Both have the option of a datasource microflow to fill the calendar with events.
Most of the time i personaly use the Calendar Widget.This has out of the box more view options then the other one(for example setting the slot duration for day & week view). However if you are a bit handy you can probably add this stuff in the other widget yourself.
The calendar widget uses thejavascript fullcalendar: https://fullcalendar.io/ this has a lot of options.
The regular Calendar from the appstore might be more lean and mean to implement(since it has a little less options) nice feature there is that you can set the color of the events with a string attribute( the calendar widget uses an enum for this).
Hope this helps;)