Volver al ranking

rbbydotdev/someday

TypeScriptsomeday-demo.vercel.app

Free to host calendar availability picker - open-source cal.com / calendly alternative built on Google-Apps-Script for Gmail users. Built with modern technologies like React, TypeScript, Shadcn/UI, and Vite. https://someday-demo.vercel.app

reactschedulingshadcn-uitypescriptvitegoogle-apps-script
Crecimiento de estrellas
Estrellas
1.1k
Forks
58
Crecimiento semanal
Issues
3
9009501k1.1k
nov 2024may 2025dic 2025jul 2026
Artefactosnpmnpm install someday
README

Someday

someday logo

Free to host calendar availability picker - open-source cal.com / calendly alternative built on Google-Apps-Script for Gmail users.

Demo (mocked endpoints)

https://someday-demo.vercel.app/

What is Someday?

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.

Key Features

  • Free to Host: Using Google Apps Script, hosting is free via your google account.
  • 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

Getting Started

Customize

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;

Self host iframe html / remove google app scripts banner

  • 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

Develop

  • 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

Install

Step 1: Set Up Your Environment

you may need to sign out of all accounts, and only into your target account

  1. Install clasp:

    • Ensure you have Node.js installed.
    • Install clasp globally using npm:
      npm install -g @google/clasp@^2.5.0
      
  2. Login with clasp:

    • Execute the following command to log in:
      clasp login
      
  3. Remove Existing Configuration (if necessary):

    • If you encounter issues, remove the existing .clasp.json file:
      rm .clasp.json
      
  4. Enable Apps Script API:

Step 2: Create and Deploy the Script

  1. Create a New Project:

    • Create a new Apps Script project as a web app:
      clasp create --type webapp
      
  2. Deploy the Script:

    • Use the following command to deploy your script:
      npm run deploy
      
  3. Access the Web App:

    • Visit the URL provided after deployment.
    • You will see the message "Authorization is required to perform that action."
  4. 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.
  5. Calendar Access:

    • By default, the script uses your primary calendar
    • To use other calendars, make sure they are added to your Google Calendar with appropriate permissions
    • You can change which calendar to use by modifying the CALENDAR variable in backend/src/app.ts
    • Note: The script needs at least read access to the calendar you specify
    • To use multiple calendars, you'll need to add them as Script Properties in the Apps Script editor:
      1. Open the script editor with clasp open
      2. Go to Project Settings (⚙️ icon)
      3. Under "Script Properties", click "Add Script Property"
      4. Add a property named "CALENDARS" with a comma-separated list of calendar IDs

Cheat Sheet

  • 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

Screen Captures

Contributing

Open a pull request or issue to contribute to Someday. welcoming all contributions, including bug fixes, feature requests, and documentation improvements.

License

MIT

Repositorios relacionados
freeCodeCamp/freeCodeCamp

freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

TypeScriptnpmBSD 3-Clause "New" or "Revised" Licenselearn-to-codenonprofits
contribute.freecodecamp.org
452.2k45.6k
react/react

The library for web and native user interfaces.

JavaScriptnpmMIT Licensejavascriptreact
react.dev
246.6k51.3k
facebook/react

The library for web and native user interfaces.

JavaScriptnpmMIT Licensejavascriptreact
react.dev
233k47.8k
vercel/next.js

The React Framework

JavaScriptnpmMIT Licensereactserver-rendering
nextjs.org
141k31.5k
react/react-native

A framework for building native applications using React

C++MIT Licenseandroidapp-framework
reactnative.dev
126.2k25.2k
facebook/react-native

A framework for building native applications using React

C++MIT Licenseandroidapp-framework
reactnative.dev
120.9k24.5k
shadcn-ui/ui

A set of beautifully-designed, accessible components and a code distribution platform. Works with your favorite frameworks. Open Source. Open Code.

TypeScriptnpmMIT Licensecomponentsnextjs
ui.shadcn.com
119.4k9.5k
justjavac/free-programming-books-zh_CN

:books: 免费的计算机编程类中文书籍,欢迎投稿

GNU General Public License v3.0pythonjavascript
weibo.com/justjavac
117.7k28.2k
nextlevelbuilder/ui-ux-pro-max-skill

An AI SKILL that provide design intelligence for building professional UI/UX multiple platforms

PythonPyPIMIT Licenseai-skillsantigravity
uupm.cc
108.2k11.5k
react/create-react-app

Set up a modern web app by running one command.

JavaScriptnpmMIT Licensereactzero-configuration
create-react-app.dev
103.3k26.9k
facebook/create-react-app

Set up a modern web app by running one command.

JavaScriptnpmMIT Licensereactzero-configuration
create-react-app.dev
103.1k27k
ant-design/ant-design

An enterprise-class UI design language and React UI library

TypeScriptnpmMIT Licensereactui-kit
ant.design
98.8k54.7k