Git Product home page Git Product logo

schedul8r's Introduction

Schedul8r

  • Connect to personal or a shared calendar to share availability for meeting with guests

Dev Setup

  1. create an apps script project in your Google Drive
  2. copy the meetingDB sheet to the same location you created in step 1
  3. update meetingDB with your values.
  4. Get the Script Id from Project Settings page
  5. copy and .example.clasp.json to .clasp.json and update the scriptId with your scriptId from step 2
  6. install clasp
  7. login to google with clasp, you will need to update some settings in google your first time
  8. push to google
## example cli commands
> npm install @google/clasp -g
> clasp login
> npm run build:push

Deploying locally

To deploy locally, execute npm run build:push. This will bundle up everything in the /src folder and push it to the Google App Script with the ID in your .clasp.json.

Deploying a static release

If you want to use a specific descriptor name, the script looks for RELEASE_NAME from the environment. If it is not set it will default to schedul8r. Running the following command will create a new deployment with the specific descriptor from above. If the deployment already exists then it will update the existing deployment with the latest code.

npm run deploy

Configuring meetings

Configuration takes place directly in a spreadsheet.

Meeting fields

id:"sync_15", //this will be passed in as a url param e.g. http://script.google.../exec?meetingType=<id>
calendar: "[email protected]", //can be a shared calendar or your primary calendar
duration: 15, //duration of the meeting in minutes entered as an integer
title: "15 min Sync up", //This is will be what is seen on the google calendar
description: "Additional info to help guest understand purpose of meeting",
hosts: "[email protected], [email protected]", // comma seperated list the possible hosts, must match host obect id field. NeverL8 will randomly
// select a host from this list.  Helpful for sharing tasks like interviewing
hasBotGuest: false // boolean.  Add a bot if you want it to perform additional tasks, such as prep github for an interview

Host fields

email: "[email protected]", // this is used to invite the host to the meeting if using a shared calendar. this must match what is used in the hosts entry from the meeting object doesn't need to be email
timeZone: "America/New_York", //TimeZone of the host. See link below for correct TZ indentifier values
officeHours: "9,17", // comma separated values of the starting and ending hour of your day using the 24hr clock
buffers: "15,15" // buffers in minutes ensures free time before or after the meeting

Time Zone Identifiers

schedul8r's People

Contributors

dlamberson-rise8 avatar jwills-r8 avatar lambersond avatar brijal-rise8 avatar jmiller-rise8 avatar

Stargazers

 avatar Matthew Jadud avatar  avatar  avatar

schedul8r's Issues

Buffer Meetings

As a: Host
I want: the option to buffer my meetings
So that: I don't have to come out of 1 meeting and go directly into another

Acceptance Criteria

Meetings offered will have the desired number of minutes before or after any other meetings on my calendar

bug: duplicate scheduled checkmarks

Reproduce: Select and confirm a date, then go to the information fields. Click the back button and reselect a date and the schedule the event.

Repo tidyness

As a dev
I want repo rules configured, git hooks established, lint and code standards defined.
So that the code can always comply with the ilities of good engineering.

Acceptance criteria

@jwills-r8, @jmiller-rise8, or @dlamberson-rise8 feel as though they have reached a zen state of peace when reading through the code

Feat: Add Skeleton Loading on Calendar

If a user selects a date on the calendar before the meeting info and host are retrieved, it will error. We should skeleton-load the calendar until the data is fetched so that it is more clear the data is still being fetched and to prevent accidental errors.

Update Event Title to show names

As a hiring team member.
I want to see the names of the interviewee and interviewer on the Google Calendar event title.
So that I don't have to look at the description.

Acceptance criteria

Should look something like this.
Screenshot 2023-09-07 at 2 16 39 PM

Allow meetings to be added dynamically

As a: Meeting administrator user
I want to: be able to add meetings without having to redeploy the application
So that: the link BreezyHr link sends to candidates doesn't need to be updated

Acceptance Criteria

I can navigate to a meetings configuration page and enter new meetings and then navigate to the schedule a meeting URL that will schedule meetings with having to restart the application.

Shorten Url

As a user.
I want a short URL that is easily identified.
So that I'm not afraid to follow the link.

Acceptance Criteria

URL is easily read

Bridge Calendars

As a non-rise8 / rise8 host.
I want to find availability across all of my calendars.
So that I don't create scheduling conflicts across my varied calendars

Acceptance Criteria
Open link and see availability for host / participant across all calendars.

Handle 30min timezones

As a host or attendee living in a timezone with a half-hour offset.
I want the preview options to reflect the half-hour offset.
So that the confusion created by living in a half-hour offset timezone can be minimized

Acceptance criteria

When I schedule a meeting, it occurs when I expect that it should

Improve availbility

As a: candidate.
I Want to see the earliest available appointments for the meeting type regardless of host.
So That I can get my interview as early as possible

Show thumbnail

As a user scheduling the meeting (attendee).
I want. to see the host's thumbnail on the calendar
So that I can begin to know who will interview me

Acceptance criteria

Left pane of calendar will look like the following
Screenshot 2023-05-01 at 5 52 29 PM

Reschedule

As a user or interviewer.
I want to propose a new meeting time.
so that I can deconflict short-notice meetings.

Acceptance Criteria

Display Proposed events using 12hr clock

As an attendee.
I want to see possible meeting times displayed using AM/PM 12hr clock
so that I don't have to convert 24-hour clock into the way I am accustomed to seeing time

Acceptance criteria

Times will be displayed 5:00 PM instead of 17:00

current view
Screenshot 2023-05-10 at 11 54 20 AM

RNG god loves Alex

As an interviewer.
I want to share interview responsibilities and not be selected consecutively.
So that interview duties are fairly shared.

Acceptance Criteria

Meetings that have more than one interview will not consecutively select the same interview when both interviews are equally available

Update Readme w/ Service Account instructions

As a dev.
I want instructions how to run the application with a service token.
So that the app context is not that of a developer account.

Acceptance criteria

  1. app will have access to all required APIs
  2. when meetings are scheduled the created by will be the name on the service token

TypeScriptify

As a developer.
I want the code to be in TypeScript.
So that code is more clear and maintainable.

Acceptance Criteria

Code will be written in TS with interfaces for objects

auto provision technical assessment

As a Technical interviewer.
I want The Schedul8r to create a github branch of my technical assessment.
So that I don't have to create a technical branch and environment to assess engineering candidates

Acceptanc criteria

When an engineering candidate schedules an assessment through Schedul8r a corresponding and properly labeled branch and environment is provisioned in which to conduct the interview

Greenhouse integration

As a Hiring user.
I want neverl8 to update the greenhouse calendar with the scheduled interview.
So that Greenhouse mails out the automated individualized scorecard link to the assessor.

Acceptance criteria

  1. interview shows on the bot hiring calendar
  2. greenhouse sends a scorecard to the assessor when an interview is booked

Feature: Tag events

Events should support setTag so you should be able to do something like event.setTag('technical-assessment', type) where type in ['swe', 'platform'] (edited)

Improve build config

As a dev.
I want both the appscript.json file, backend, and frontend dirs to be in src, and copied to dist on npm run build.
So that there is proper order and automation

Acceptance criteria

dist will be emptied and all new code will be entered in dist as part of the build process

Feat: Load previews faster

As a user.
I want the meeting options to load faster.
So that I don't have to spend as much time on the page.

Acceptance criteria

it catches🔥 because it is so fast

Add Meet and bot to scheduled event

As a host.
I want meetings to have video conferences added to the meeting.
So that I can communicate with the interviewee.

Acceptance criteria

When I look at the meeting on the calendar it will have a google Meet link attached to it

Add new host prefrences

As a: Host.
I want to add or update my settings without redeploying the application.
So that: the link BreezyHr link sends to candidates doesn't need to be updated

Acceptance Criteria
I can navigate to a host's prefrences page and enter new or update settings and then navigate to the schedule a meeting URL and see the updated settings in effect

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.