Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jshor/datebook

📅 Generates URLs and downloadable ICS files for adding events to popular calendar apps.
https://github.com/jshor/datebook

calendar google-calendar icalendar ics outlook yahoo

Last synced: 8 days ago
JSON representation

📅 Generates URLs and downloadable ICS files for adding events to popular calendar apps.

Awesome Lists containing this project

README

        




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.



Code coverage Build status npm version npm package size


## Documentation

[Read the docs →](https://datebook.dev/start)

## Demo

Try the [online calendar generator →](https://datebook.dev/generator/)

## Quick Start

### Installation

```sh
yarn add datebook
```

### Examples

```ts
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: '[email protected]',
icsOptions: {
rsvp: true
}
},
{
name: 'Jane Doe',
email: '[email protected]'
}
],
// an event that recurs every two weeks:
recurrence: {
frequency: 'WEEKLY',
interval: 2
}
}

const icalendar = new ICalendar(config)
```

#### iCalendar

##### With a reminder

```ts
icalendar
.addAlarm({
action: 'DISPLAY',
description: 'Remember this event'
trigger: {
minutes: 10
}
})
```

This will add a [reminder alarm](https://datebook.dev/config/alarms.html) that shows 10 minutes before the event.

##### With multiple events

```ts
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](https://datebook.dev/api/icalendar.html#addevent-icalendar-icalendar) to the same `.ics` file.

##### Adding other ICS properties

```ts
icalendar.addProperty('CATEGORIES', 'MEETINGS,MANAGEMENT')
```

This will [add the `CATEGORIES` ICS property](https://datebook.dev/api/icalendar.html#addproperty-key-string-value-icspropertyvalue) to the iCalendar instance.

##### Rendering ICS file content

```ts
const content = icalendar.render()
```

This will render ICS file content which can be [downloaded onto the user's device](https://datebook.dev/api/icalendar.html#example-for-downloading-an-ics-file) for use in local calendar apps.

#### Google Calendar

```ts
const googleCalendar = new GoogleCalendar(config)

googleCalendar.render()
```

[`googleCalendar.render()`](https://datebook.dev/api/google.html#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
```