Giter VIP home page Giter VIP logo

meet-me's Introduction

Meet Me

calendly clone in Deno

Google Trust and Safety verification

This app uses Google Calendar API and the app is now being reviewed by Google's Trust and Safety team for verification. If you'd like to try this app by yourself at this point, please click the below links and approve the app on your own risk while signing in to the app.

Development

First copy .env.example to .env and set CLIENT_ID, CLIENT_SECRET, and FIREBASE_* appropriate values.

Then run the deployment locally:

deno task dev

This starts Meet Me service in your local machine.

Testing

Start the firestore emulator by the below command (You need Node.js and Java > 11 to run the emulator):

deno task firestore-emulator

In another terminal window, run the below command to run the unit tests:

deno task test

Visual Design

https://www.figma.com/file/P0XsTDIeiwNhm8jFS03gwz/Deno-Cal

LICENSE

MIT License

Notes

How to configure GCP Resources

You need Google Cloud Platform Project to develop this app.

  • First go to GCP Console and create a project.
  • Then go to APIs & Services.
  • Enable Calendar API from + ENABLE APIS AND SERVICES link.
  • In OAuth consent screen tab, set up the project's consent screen.
  • In Credentials tab, create OAuth client ID with Web application type.
    • Under Authorized JavaScript origins add http://localhost:3000
    • Under Authorized redirect URIs add http://localhost:3000/api/authorize
  • Then you'll find client id and client secret of the oauth client.
  • Copy those values and set them as CLIENT_ID and CLIENT_SECRET in .env

Now setup Firebase:

  • Go to https://console.firebase.google.com/ and click Create a project.
  • Select the project you created above.
  • Select your preferred billing and analytics options.
  • Wait while your Firebase app is created.
  • From the Overview screen add a Web app (currently represented with a </> icon).
  • Don't add Firebase hosting, as you'll be using Deno Deploy.
  • You'll be presented with some JavaScript code including firebaseConfig. Copy those values to the appropriate place in .env. (If you didn't enable analytics there will not be a value for FIREBASE_MEASUREMENT_ID).
  • Click back to the Overview screen, click Cloud Firestore, and then Create database.
  • Start in production mode.
  • Select a Firestore location, the default is probably good, and then Enable.
  • Click to the Rules tab, copy the content of firestore.rules, and click Publish.
  • Now head to Overview, then Storage. You might need to click See all Build features.
  • Under the Rules tab, copy the content of storage.rules, and click Publish.

You should now be able to start the app locally with the instructions in Development. If you see a an error similar to Could not reach Cloud Firestore backend then you may need to wait awhile for Firestore to be available.

For Deno Land employees:

  • You can find these values in Meet Me API Credentials section in the password manager.

meet-me's People

Contributors

anishkny avatar arnauorriols avatar dsherret avatar github-actions[bot] avatar ije avatar kitsonk avatar klevente avatar kt3k avatar ry avatar satyarohith avatar stuk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

meet-me's Issues

🔍 Solution Overview

User Journeys

  1. Acquisition Journey

    As a potential user of cal, I want to be able to view information about the solution to determine if I want to sign up for the product.

  2. Signup Journey

    As an intended user of cal, I want to be able to signup for cal, using my Google Account for identification and authentication and linking my cal account to my Google Calendar. I also want to select some default configuration details about how I want cal to operate.

  3. Cal Configuration Journey

    As an authenticated user, I want in interface to be able to configure my meeting slots as well as well as configure other options associated with my account.

  4. Cal Visitor Journey

    As an unauthenticated user/visitor to a specific users page, I want to be presented with the available meetings slots for the user so I can book a meeting with them.

  5. Cancellation Journey

    As an authenticated user, I want to be able to un-enroll in cal.

Infrastructure

  • CI/CD (GitHub Actions)
  • Frontend Tooling (Aleph.js)
  • Business Logic/Middleware/Client API (Deploy Services)
  • Persistance (Supabase)

Initial Work Break Down

  • Infrastructure

    • Scaffold out CI/CD
    • Setup architectural decision records
  • Frontend

    • Mocks/Designs for Landing, Sign-up, Configuration, Visitor/Booking pages
    • Scaffold out Aleph.js for "pages" (Landing, Sign-up, Configuration, Visitor/Booking)
  • Middleware

    • Design domain model (event storm?)
    • Design process flow for sign-up
    • Design process flow for configuration
    • Design process flow for booking creation and change
    • Design and build mock APIs based on domain model and flows
  • Integrations

    • Investigate and Detail OAuth integration with Google
    • Investigate and Detail Google Calendar Permissions and APIs
    • Investigate and Detail notifications via e-mail
  • Backend

    • Investigate and Detail supabase integration
    • Design data model based on domain model
    • Implement data store design

Prototype onboarding flow

Path

  • /mypage/onboarding

The user set up the url slug, availabilities, event types.

After setting up those parameters, they are navigated to my page (/mypage)

Tasks

  • Set slug (user's url)
  • Set availability
  • Set timezone
    • Move Dropdown component from Deploy
  • Set event type
    • Create a new Event Type Modal
      • Move Dialog component from Deploy
    • Delete event type
    • Edit Event Type modal

detect users' timezone

Detect users' timezone somehow and set it to user object when first creating the user. (Currently in routes/api/authorize.ts)

Topics to discuss 5/31

  • Share progress on onboarding flow
  • Discuss Inbox feature: Maybe drop it for first pass? (@ry says he doesn't need it for his use case)
  • Plan this week's work

☂️ Create booking page

tasks:


Note: booking page has 2 types:

Type 1: URL https://meet-me.deno.dev/user-slug/

  • It shows all available type
  • The user first select the event type
  • Then the user select a vacant slot from the calendar

Type 2: URL https://meet-me.deno.dev/user-slug/event-slug

  • It shows the only one event type, which is already selected when the user visited the page
  • The user select a vacant slot from the calendar

  • Note1: if the user doesn't set the user slug, the booking page is not available.
  • Note2: if the user doesn't set the event slug, then the booking page for the single event is still available via the url https://meet-me.deno.dev/user-slug/event-uuid

event type has url

each event type has a url like https://meet-me.deno.dev/my-name/event-name

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.