Skip to content

ahmetskilinc/payload-appointments-plugin

Repository files navigation

Warning

This plugin is a WIP and currently testing.

Payload plugin to add appointment scheduling to your Payload app.

This plugin allows you to add appointment scheduling capabilities to your payload app. It provides:

  • Services and Appointments collections.
  • An Appointment schedule calendar view.
  • Opening times global.

Appointments Schedule View For Everyone

Appointments List day

Appointments Schedule View For Logged In User

Appointments List week

Dashboard View

Dashboard

Installation

1. install

npm i payload-appointments-plugin
pnpm install payload-appointments-plugin
yarn add payload-appointments-plugin

2. add fields to users collection

const Users: CollectionConfig = {
  // ...
  fields: [
    {
      name: 'firstName',
      type: 'text',
      label: 'First name',
    },
    {
      name: 'lastName',
      type: 'text',
      label: 'Last name',
    },
    {
      name: 'roles',
      type: 'select',
      options: [
        {
          value: 'admin',
          label: 'Admin',
        },
        {
          value: 'customer',
          label: 'Customer',
        },
      ],
    },
    {
      name: 'roles',
      type: 'select',
      options: [
        {
          label: 'Admin',
          value: 'admin',
        },
        {
          label: 'Customer',
          value: 'customer',
        },
      ],
    },
    {
      name: 'appointments',
      type: 'join',
      collection: 'appointments',
      defaultLimit: 0,
      maxDepth: 999,
      on: 'customer',
    },
  ],
};

export default Users;

3. add to config

import appointments from 'payload-appointments-plugin';

export default buildConfig({
  /* ... */
  plugins: [appointmentsPlugin()],
  /* ... */
});

4. add email config

follow instructions on PayloadCMS Email Docs

Todo?

  • Appointments collection
    • Appointment type, Host, Customer, Services, Title, Start date/time, End date/time
    • Appointment type is appointment or blockout (lunch, break, interview, meeting, day off? etc.)
    • Endpoint for getting available time slots
  • Add new properties/attributes to default auth collection
    • Taking appointments checkbox
    • Preffered name
    • Calendar subscription
  • Services collection for ...services
    • Title
    • Description
    • Duration
    • Cost/Price
      • Variable cost (per hour... etc.)
  • Emails
    • Email config (Will need to be added by the dev)
    • React email templates
      • Appointment created email
        • Add iCal link/file to email
      • Appointment updated email
        • Add iCal link/file to email
      • Customer signed up email
  • Custom payload views
    • Appointments schedule view /appointments/schedule
    • Appointments schedule view for loggined in user /appointments/schedule/me
    • Charts /appointments/charts
    • Marketing Campaigns /appointments/marketing-campaigns
    • ...more to come
  • Endpoints
    • Get available timeslots for given date, services, host
    • ...more to come
  • Calendar schedule view
    • Ability to update appointment from calendar view
    • Ability to add appointments by clicking/tapping slot in calendar
      • Add appointments using Payload Drawer
      • Get start date and time from clicked slot
      • Get host from clicked slot
  • Opening times global
    • Monday...Sunday
    • Set times for different days of week
    • Define if closed on that day
  • Add properties for showing/hiding navItems and beforeDashboard
  • Add overrides for collections

A lot more I want to add. But may need some help.

About

A plugin to add appointment scheduling to a PayloadCMS App

Topics

Resources

Stars

Watchers

Forks

Contributors 2

  •  
  •