Free to host and open-source cal.com / calendly alternative built on Google-Apps-Script for Gmail users.
https://someday-demo.vercel.app/
Someday is a simple, open-source scheduling tool designed specifically for Gmail users. Uses Google Apps Scripts to host and clasp to manage. Built with modern technologies like React, TypeScript, Shadcn/UI, and Vite. A simple alternative to traditional scheduling apps like Calendly.
- Free and Open Source: Someday is completely free to use and open for contributions.
- Effortless Integration: Designed as a Google Apps Script, Someday integrates seamlessly with your Gmail, making it easy to manage your schedule directly from your inbox.
- Developer-Friendly: Built with modern, developer-preferred technologies, Someday is easy to customize and extend to meet your specific needs.
- Customizable Work Hours: Set your availability with precision, allowing others to book time slots that fit your schedule perfectly.
- Simple Booking Process: Users can select a date and time slot, then fill out a straightforward form with their name, email, phone, and an optional note.
- Privacy First: No data sharing beyond google to 3rd party apps
Change the following variables in backend/src/app.ts
to customize your availability settings:
// backend/src/app.ts
const CALENDAR = "primary";
const TIME_ZONE = "America/New_York";
const WORKDAYS = [1, 2, 3, 4, 5];
const WORKHOURS = {
start: 9,
end: 13,
};
const TIMESLOT_DURATION = 30;
-
Google apps script has a banner that says "This application was created by a Google Apps Script user", to remove you can host the html file yourself and embed the script as an iframe
-
Use the
hosted-iframe-example.html
file, github pages is a good option for this, add your script url to the iframe src
cd ./frontend
npm install
npm run dev
- dummyData will be generated on the fly using the generateDummyData function ~line 42 in
frontend/hooks/useGoogleTimeSlots.ts
you may need to sign out of all accounts, and only into your target account
-
Install
clasp
:- Ensure you have Node.js installed.
- Install
clasp
globally using npm:npm install -g @google/clasp
-
Login with
clasp
:- Execute the following command to log in:
clasp login
- Execute the following command to log in:
-
Remove Existing Configuration (if necessary):
- If you encounter issues, remove the existing
.clasp.json
file:rm .clasp.json
- If you encounter issues, remove the existing
-
Enable Apps Script API:
- Visit Google Apps Script API settings.
- Enable the Apps Script API.
- Wait a few minutes for the changes to propagate.
-
Create a New Project:
- Create a new Apps Script project as a web app:
clasp create --type webapp
- Create a new Apps Script project as a web app:
-
Deploy the Script:
- Use the following command to deploy your script:
npm run deploy
- Use the following command to deploy your script:
-
Access the Web App:
- Visit the URL provided after deployment.
- You will see the message "Authorization is required to perform that action."
-
Authorize the Web App: (!!! IMPORTANT !!!)
- run
clasp open
to open the editor - go to
dist/app.gs
- in the drop down at the top, select
fetchAvailability
then hit run - Authorization modal will pop up, 'Review permissions', select your account, you will see a warning, go to advanced, then Go to (unsafe) then click Allow
- if it worked, refresh the page/editor then run the function again and it should complete without issue.
- run
-
npm run deploy
- build and delpoy -
npm run build
- build only -
undeployall.sh
- undeploy all versions of the script -
deployments.sh
- list all deployments web-urls -
clasp open
- open the script editor
Open a pull request or issue to contribute to Someday. welcoming all contributions, including bug fixes, feature requests, and documentation improvements.
MIT