Datebook
A library for adding events to popular calendar apps.
It provides full support for rendering .ics file content for iCalendar and Office Outlook, and also supports URL generation for Google Calendar, Yahoo! Calendar, and Outlook Web.
Documentation
Read the docs →
Demo
Try the online calendar generator →
Quick Start
Installation
yarn add datebook
Examples
import { ICalendar } from 'datebook'
const config: CalendarOptions = {
title: 'Happy Hour',
location: 'The Bar, New York, NY',
description: 'Let\'s blow off some steam with a tall cold one!',
start: new Date('2022-07-08T19:00:00'),
end: new Date('2022-07-08T23:30:00'),
attendees: [
{
name: 'John Doe',
email: 'john@doe.com',
icsOptions: {
rsvp: true
}
},
{
name: 'Jane Doe',
email: 'jane@doe.com'
}
],
recurrence: {
frequency: 'WEEKLY',
interval: 2
}
}
const icalendar = new ICalendar(config)
iCalendar
With a reminder
icalendar
.addAlarm({
action: 'DISPLAY',
description: 'Remember this event'
trigger: {
minutes: 10
}
})
This will add a reminder alarm that shows 10 minutes before the event.
With multiple events
const secondEvent = new ICalendar({
title: 'Monthly Meeting with Boss Man',
location: 'Conference Room 2A, Big Company, Brooklyn, NY',
description: 'Meeting to discuss weekly things',
start: new Date('2022-07-08T19:00:00'),
recurrence: {
frequency: 'MONTHLY'
}
})
icalendar.addEvent(secondEvent)
This will add a second event to the same .ics
file.
Adding other ICS properties
icalendar.addProperty('CATEGORIES', 'MEETINGS,MANAGEMENT')
This will add the CATEGORIES
ICS property to the iCalendar instance.
Rendering ICS file content
const content = icalendar.render()
This will render ICS file content which can be downloaded onto the user's device for use in local calendar apps.
Google Calendar
const googleCalendar = new GoogleCalendar(config)
googleCalendar.render()
googleCalendar.render()
will return a URL that the user can navigate to and pre-fill event details:
https://calendar.google.com/calendar/render?action=TEMPLATE&text=Happy%20Hour&details=Let's%20blow%20off%20some%20steam%20with%20a%20tall%20cold%20one!&location=The%20Bar%2C%20New%20York%2C%20NY&dates=20220708T190000%2F20220708T230000&recur=RRULE%3AFREQ%3DWEEKLY%3BINTERVAL%3D1