GithubHelp home page GithubHelp logo

dwyl / calendar Goto Github PK

View Code? Open in Web Editor NEW
24.0 93.0 1.0 573 KB

πŸ“… effortlessly know when everyone in your team is available / busy with a single glance.

Home Page: https://gcal.fly.dev/

License: GNU General Public License v2.0

JavaScript 4.97% Elixir 73.30% CSS 0.14% HTML 18.86% Dockerfile 2.50% Shell 0.14% Batchfile 0.08%
calendar google-calendar google-calendar-integration phoenix phoenix-framework

calendar's People

Contributors

92arpitgoyal avatar arhell avatar dependabot[bot] avatar jackcarlisle avatar katpas avatar luchoturtle avatar nelsonic avatar sohilpandya 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

Watchers

 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

Forkers

abhi1010

calendar's Issues

Temporary Solution?

Through discussion with FAC6 we concluded that the Google Calendar UI goes most of the way to solving the issue of viewing other people's calendars.

So... for now we are not going to re-build the calendar UI.

Instead we are going to create a Guide for how to use Google Calendar and require that everyone working with dwyl shares their google calendar.
_OR_ we have a Team Calendar which anyone can create events on.

Please discuss.

Research: How to store calendar/event entries?

What is the most flexible way of storing calendar/event entries to ensure they are easy to query/search for and display in our intuitive UI #1

Note: our "solution" should persist new calendar events back into the person's Google Calendar.
However to make them searchable and viewable by everyone we need to store them in our own database which
is kept in Sync with GCal.

seems a dead project?

You succeeded in cheating me. Nothing to do with the title or propaganda as team-calendar. suggest to change the project name to something like hapi-google-oauth-demo

Error 400: redirect_uri_mismatch

When attempting to authenticate on https://gcal.fly.dev we get the following error:

image image

@LuchoTurtle suggested inspecting the Network -> Preview tab in Dev Tools to investigate:
Error-400-redirect_uri_mismatch

redirect_uri: http://gcal.fly.dev/auth/google/callback

For some reason the redirect URL generated by:

oauth_google_url = ElixirAuthGoogle.generate_oauth_url(conn)

Is generating an http link and it needs to be https ...

Todo

  • Figure out why the generated URL is http and fix it!

Warning: Phoenix.Controller.get_flash/2 is deprecated. get_flash/2 is deprecated.

On my localhost when I run mix s I see the following warning:

warning: Phoenix.Controller.get_flash/2 is deprecated. get_flash/2 is deprecated. Use Phoenix.Flash.get(@flash, key) instead
  lib/cal_web/live/app_live.ex:178: CalWeb.AppLive.get_token/1

@LuchoTurtle can you please tidy this up. πŸ™
Should be a quick fix. Just remove the code that calls it.
We shouldn't be using get_flash/2 we don't have a usecase (interface) for it.
Thanks.

SPIKE: Display Next Calendar `event` from Google Cal

As a person wanting to maximise their personal effectiveness,
I want to import Google Calendar data and display it on a single page with other info
so that I don't have to look at multiple places to see what is next in my day.

This SPIKE is scope-limited to displaying my next calendar event on a page.
It should be time-boxed to T1d (or T8h split over several sessions). ⏳

Todo

  • In this repo, Create a barebones Phoenix + LiveView App #22
  • Should have a landing page explaining the purpose of the single-feature Spike and
  • a Sign-in with Google button
  • Retrieve the list of events for the person who has authenticated
  • Display them on a page without saving to DB.
  • Create a new event and save it back to Google Calendar
    • Read the newly created event from Google Calendar and display it in the Phoenix App.

If we can achieve this proof-of-concept we can move forward with more interesting features. 🀞

Bonus Level

  • Research how to store calendar events in Postgres DB, document everything you learn! πŸ“

Groups?

@thegsi had a good question regarding how we should decide who should see who's calendar details...

Will we need to have "groups" so it's clear exactly who can see your calendar once you have authorised "the app" to access your calendar?

for this MVP all we just want to be able to display the calendar for anyone who has authorised the app.
at the moment, the idea is to have an app people can deploy to Heroku just for their team.
In the future we could make a "hosted version" (where a service provider would handle the deployment of the app) and a team organiser would invite people to join and everyone would be able to see who has access to their calendar...

What problem are we solving?

Letting People know when their work colleagues (and friends?) are available so events can be booked or projects/meetings can be planned is an essential part of keeping any organisation/company/team organised. Having to verbally ask people if they are "free" is time-consuming, error prone and increases complexity/time as the number of people increases.

Our mission is to solve this problem with a simple interface that does not require people to manually enter their availability but rather syncs their existing personal/work calendar to display their availability effortlessly.

Who else is trying to solve this problem?

Feat: Basic Interface

@LuchoTurtle as discussed on Standup, our goal with the SPIKE #21 is to do the bare minimum to show that we can get data in and out of Google Calendar. If you decide to go the "extra mile" when displaying the events, please try and "borrow" some interface from the interwebs to save time, e.g:

https://tailwindui.com/components/application-ui/data-display/calendars
image

Are we ready to pay for TailwindUI? πŸ’°

https://freefrontend.com/tailwind-calendars/
image

I'm sure there are many others, including using more recent versions of TailwindCSS.

Sadly, there's nothing in https://daisyui.com/components/ ...
daisyui-no-calendar

Chore: Clear Stale [`JS`] Code and Init `Phoenix` Project

At present the /lib directory has some stale JS code.
e.g: /lib/google_oauth_handler.js and server.js and package.json
I wrote it so have no issues retiring it so that we can revive this project and make it useful. πŸ‘Œ

Todo

  • DELETE (git rm) the /lib and test directories
  • DELETE server.js and package.json
  • Create a new Phoenix project using the latest phx.new
  • Setup GitHub Actions (CI/CD) so that we know the build is passing

EPIC: Research Child-friendly Interface for Calendar / Daily Schedule Viewer

Calendars are typically not designed for children. πŸ§’
In general, they are made by adults for other adults and then imposed on children.
Many schools use Google Calendar or Microsoft Exchange/Outlook and suffer the horrible interface/experience silently because they are powerless to improve it. πŸ™ƒ

There are many other calendar apps besides Google, Microsoft and Apple:
https://en.m.wikipedia.org/wiki/Category:Calendaring_software
The top 3 are just the most used by far.
There are a handful of Open Source options but none has achieved critical mass adoption. This is clear from the fact that you - learned reader - are not using one of the available open source calendars …
https://en.m.wikipedia.org/wiki/Category:Free_calendaring_software

We need to find or build a child-friendly interface to view calendar events. 😍
This needs to be a combination of simplified layout, color coordination/contrasting and icons (emojis) πŸ“†
that children who don’t yet read can easily understand. πŸ’‘

The advantage of this approach to interface/experience design
is that what a child can interpret/understand anyone else can too.

Todo

  • Research the available child-friendly calendar/schedule interface design online.

    • Please record the Google queries you perform (keywords used) and resulting images you found.
    • If applicable use other image search engines or https://dribbble.com/ to find interface.
    • Go for quantity we want at least 30 screenshots of interface/design. More is better during research phase.
  • Once we have researched what is available we can be informed if there is anything we can already use
    If there is nothing ready-made we will need to design something ourselves.

@Stephanymtr I expect the research part of this task to take around T4h. πŸ‘©β€πŸ’» ⏳
Please capture your findings directly as comments in this issue. πŸ–ΌοΈ
Thanks! πŸ™

P.S: this will be used for BMH so it will be immediately practical. πŸ‘Œ

Redeploy Fly.io App to `gcal.fly.dev`

At present the app is deployed to: https://dwyl-calendar.fly.dev
image

The working App has not yet been deployed.

And it does not yet have any of the necessary Google Auth API keys:
https://fly.io/apps/dwyl-calendar/secrets
image

So I want to use this opportunity to:

  • Create a New Fly.io App with the name cal under the dwyl-calendar org so that we can reuse the existing DB. Currently: https://cal.fly.dev/
    image

  • Deploy the gcal App and comment in this issue with progress. πŸ’¬

  • @nelsonic to setup Google API Keys (for maintenance reasons...)

  • Finally DELETE the existing "placeholder" App named dwyl-calendar once we confirm cal.fly.dev is working.

    Note: I'd much rather just rename it but it's not supported see: https://community.fly.io/t/how-to-rename-my-apps/3098

We are going to be using this calendar App internally so we need to make it good.
And we will be abstracting some of the code into a library very soon to tidy up.
Watch this space: https://github.com/dwyl/gcal

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.