Skip to content

iCal4j Template

iCal4j Template provide prototypes and custom validation for common iCalendar and vCard use-cases.


Whilst iCalendar and vCard specification provide general component and property constraints, some applications may require further constraints to fulfill the requirements of the use-case. iCal4j Templates provides some opinionated prototyping and validation for common use-cases, and a portable definition language for constructing your own.

Calendar Templates



A roster is a VCALENDAR prototype consisting of VTODO components with one or more ATTENDEEs.

Calendar roster = new Roster();

Sports fixture

A sport fixture is a VCALENDAR prototype of VEVENT components with a LOCATION and embedded STRUCTURED-DATA.

Calendar fixture = new SportsFixture();


A timetable is a VCALENDAR prototype of VEVENT components.

Calendar timetable = new Timetable();


A timesheet is a VCALENDAR prototype of VJOURNAL components.

Calendar timesheet = new Timesheet();

Project Schedule

A project schedule is a VCALENDAR prototype of VTODO and VEVENT components representing tasks and milestones.

VEvent Templates


A common use-case for VEVENT components is to define anniversary-style events (i.e. recurring, date-based, etc.).

  • RRULE/RDATE (required)

    VEvent anniversary = new Anniversary().withMonthDay(MonthDay.of(Month.DECEMBER, 25));


A meeting is a VCALENDAR prototype of VEVENT components.

Agenda agenda = ...
VEvent meeting = new Meeting().withAgenda(agenda);

VToDo Templates

Project Task

A project task is a VTODO prototype.

VToDo task = new Task();

VJournal Templates

Meeting Minutes

Meeting minutes is a VJOURNAL prototype with RELATED-TO property referencing the meeting.

VJournal minutes = new MeetingMinutes();