Skip to content
DayPilot

Open-Source Calendar and Scheduler Tutorials

The free and open-source DayPilot Lite library provides calendar/scheduling components that you can use to build time management, event planning, resource scheduling, project management applications or booking systems. The library is hosted at NPM and it is available for vanilla JavaScript, Angular, React, and Vue.

It is available under a business-friendly Apache License that lets you use the library in open-source and commercial projects. 

You can use the event calendar component to create a traditional day/week/month calendar view that you know from Microsoft Outlook, Google Calendar or Apple Calendar. See the tutorials to learn how to define and integrate different calendar views, share the data and highlight the free/busy days.

You can use the resource calendar view to to display multiple resources as columns side-by-side. You can use it to schedule events, tasks and reservations for multiple resources (locations, rooms, cars, tools, production lines, employees, shift workers, etc.). If you need to scheduler tasks or appointments for multiple workers (such as car mechanics, doctors, hairdressers), you can use the resource calendar to manage shifts and location assignments of your employees.

The library includes a smart date picker component that lets you change a date of the current view and also provides a quick availability preview using the free/busy highlighting feature.

You can use the calendar/scheduler components with any kind of backend (such as PHP, ASP.NET Core, Java/Spring, Node.js, etc.). The components communicate with the backend using a REST API which returns data in JSON format. The server-side part of your application lets you store the data in a database (such as MySQL, PostgreSQL or SQL Server) and perform additional calculations and apply business rules.

To see how to use the Scheduler component in React, you can check the React Scheduler with Horizontal Timeline (Open-Source) tutorial which describes the steps needed for integration in your React application. To learn how to integrate multiple calendar components into a more complex view, see the React Calendar with Day/Week/Month Views (Open-Source) tutorial.

The Angular calendar component integrates well with Angular 12+ applications (it uses the Ivy engine). In Angular, add the <DayPilotCalendar> component to the template. Use the [config] attribute to load the configuration data and the [events] attribute to load calendar event data. Angular detects changes automatically and updates the component if needed. For a more detailed guide, please see the Angular Calendar: Day/Week/Month Views (Open-Source) tutorial.

In Vue, there is also a special component available that lets you add a calendar to your application. See the Vue.js Weekly Calendar Tutorial (Open-Source) tutorial to learn more.

If you prefer vanilla JavaScript, you can start using the components by simply importing the daypilot-all.min.js file. Add a <div> placeholder and a short initialization script and your JavaScript calendar is ready for display. To learn how to integrate the JavaScript calendar with an ASP.NET Core or PHP backend (REST API), please see the HTML5/JavaScript Event Calendar (Open-Source) tutorial.

JavaScript Scheduler: Expandable Event Groups

JavaScript Scheduler: Expandable Event Groups

How to group related events into a single event in the JavaScript Scheduler component and add expand [+] and collapse [-] icons that allow changing the event visibility.
JavaScript Scheduler: A Guide to Touch and Mobile Support

JavaScript Scheduler: A Guide to Touch and Mobile Support

Build a touch-friendly JavaScript Scheduler with DayPilot. Create, move and resize events, open an event menu, and edit dates and resources on phones, tablets and desktop browsers.
Vue Calendar: Using Templates to Add Icons, Buttons, or Progress Bars to Events (Open-Source)

Vue Calendar: Using Templates to Add Icons, Buttons, or Progress Bars to Events (Open-Source)

Vue templates allow adding dynamic content to Vue Calendar events, including interactive elements and custom Vue components.
React Scheduler: Timeline Zoom

React Scheduler: Timeline Zoom

How to add a zoom feature to the React Scheduler timeline. You can change the zoom level (and timeline resolution) using a "range" control and "zoom in" and "zoom out" buttons.
Angular Scheduler: Next/Previous Buttons

Angular Scheduler: Next/Previous Buttons

Angular project that shows how to implement next/previous/today buttons that change the month displayed by the Angular Scheduler component.
JavaScript Scheduler: Events as Drag and Drop Target

JavaScript Scheduler: Events as Drag and Drop Target

How to configure Scheduler event boxes to accept items from an external list (drag and drop). Implemented using standard HTML5 drag and drop API.
React Scheduler: How to Enable Undo/Redo

React Scheduler: How to Enable Undo/Redo

The React Scheduler component can record all drag and drop actions and allow unlimited undo/redo. See how to add undo/redo buttons and display the full history.
React Scheduler with Horizontal Timeline (Open-Source)

React Scheduler with Horizontal Timeline (Open-Source)

Open-source React Scheduler with a readable year-view timeline, theme switching, editable events, and custom event rendering.
JavaScript Scheduler: Dragging Items from Events

JavaScript Scheduler: Dragging Items from Events

How to drag items from events out of the Scheduler and drop it on a custom drop target. The source event data object is attached to the dragged item and can be read on drop.
Vue Calendar: Day/Week/Month Views (Open-Source)

Vue Calendar: Day/Week/Month Views (Open-Source)

Create a complex calendar UI in Vue.js with multiple views, view-switching buttons and an integrated date picker. Use a shared data source to make it fast and Vue templates to define event appearance.
Open-Source Angular Appointment Calendar Component (TypeScript + PHP/MySQL)

Open-Source Angular Appointment Calendar Component (TypeScript + PHP/MySQL)

Simple appointment scheduling application built using Angular. The calendar view is created using DayPilot Angular Calendar component. The server-side backend is created using PHP and stores events in a MySQL or SQLite database.
How to Add Interactive Elements to Vue Scheduler Events Using Templates

How to Add Interactive Elements to Vue Scheduler Events Using Templates

Vue templates supported by the Scheduler component allow you to add dynamic content to events, such as checkboxes, drop-down lists, or attachment upload buttons.
Vue Scheduler: Using Cell Templates to Show Slot Prices

Vue Scheduler: Using Cell Templates to Show Slot Prices

How to use Vue templates to display dynamic reservation prices in each Scheduler time slot. Slot prices are defined using pricing plans independently for each day of the week.
Next.js Scheduler with Horizontal Timeline (Open-Source)

Next.js Scheduler with Horizontal Timeline (Open-Source)

Build a Next.js scheduler with a horizontal timeline (one year, day-by-day) featuring a date picker with scroll synchronization, a timeline header context menu for bulk day actions, and column highlighting.
Vue Scheduler with Horizontal Timeline (Open-Source)

Vue Scheduler with Horizontal Timeline (Open-Source)

Build a horizontal, resource-based timeline using the open-source Vue Scheduler and customize event appearance with Vue templates and CSS.
Angular Scheduler with Horizontal Timeline (Open-Source)

Angular Scheduler with Horizontal Timeline (Open-Source)

Plan and visualize your resources in Angular with this lightweight, Apache‑licensed Scheduler - with a horizontal timeline, multi‑row time headers, CSS themes, dynamic event content and large‑dataset performance.
Vue Scheduler: How to Display Holidays

Vue Scheduler: How to Display Holidays

How to display global and row-specific holidays in the Vue Scheduler. Optionally, disable the drag and drop operations for the holiday cells.
JavaScript Scheduler with Horizontal Timeline (Open-Source)

JavaScript Scheduler with Horizontal Timeline (Open-Source)

Use the open-source JavaScript Scheduler to build a horizontal timeline for multiple resources: adjust the appearance, add custom controls, configure the timeline, show a context menu, and switch the visible month.
Vue Scheduler: Row Header Templates

Vue Scheduler: Row Header Templates

How to customize the Vue Scheduler row header using Vue templates: add icons, badges, buttons and Vue components.
React Scheduler: Rendering JSX in Time Header and Upper-Left Corner

React Scheduler: Rendering JSX in Time Header and Upper-Left Corner

How to render custom React JSX components in the Scheduler time header and upper-left corner.