{"id":24561591,"url":"https://github.com/jongfeel/webhooktocalendar","last_synced_at":"2026-02-02T09:07:48.987Z","repository":{"id":111820759,"uuid":"332494220","full_name":"jongfeel/WebhookToCalendar","owner":"jongfeel","description":"Github webhook event push to google calendar management web service","archived":false,"fork":false,"pushed_at":"2021-09-24T10:44:32.000Z","size":13,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-04T07:39:46.369Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jongfeel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-24T16:13:41.000Z","updated_at":"2021-09-24T10:44:35.000Z","dependencies_parsed_at":"2023-06-04T02:45:14.091Z","dependency_job_id":null,"html_url":"https://github.com/jongfeel/WebhookToCalendar","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jongfeel/WebhookToCalendar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongfeel%2FWebhookToCalendar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongfeel%2FWebhookToCalendar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongfeel%2FWebhookToCalendar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongfeel%2FWebhookToCalendar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jongfeel","download_url":"https://codeload.github.com/jongfeel/WebhookToCalendar/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongfeel%2FWebhookToCalendar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29009543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-02T08:40:12.472Z","status":"ssl_error","status_checked_at":"2026-02-02T08:40:10.926Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-23T08:33:26.251Z","updated_at":"2026-02-02T09:07:48.967Z","avatar_url":"https://github.com/jongfeel.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# WebhookToCalendar\n\nGithub webhook event push to google calendar management web service\n\n## Motivation\n\n매주 온라인 모각코 issue를 생성한 후에 각 참여자가 self-assigned를 하는데 그 때마다 assignees를 보고 google calendar event에 assignees에 맞는 사용자를 추가하는 작업을 진행.\n\n문제는 assignees가 할당 되었다는 알림을 볼 때 마다 그 assignee를 수동으로 google calendar에 추가해 주는데 자동으로 이걸 해주는 service가 있으면 좋겠다는 생각에 시작함.\n\n## Requirements\n\n- github webhook을 등록해서 issue에 대한 이벤트 알림을 받을 준비를 한다.\n- webhook을 받아서 처리할 API 서버를 구현한다.\n  - 새로운 issue를 등록할 때 그 issue에 포함된 assignees가 누구인지 파악한다.\n  - 혹은 기존 issue에 assignee가 등록되거나 삭제 되면 누구인지 파악한다.\n- webhook을 받아서 처리하는 API 서버는 assignee가 누구인지 파악이 되면 google calendar API를 통해\n  - 공개 캘린더인 `Mentoring schedule`에 caneldar event 생성 후 attendees 추가\n  - 이미 생성된 calendar event라면 attendees 등록 혹은 삭제\n\n### Studied pre-requirements\n\n- github에 issue의 상태를 알 수 있는 REST API가 있음. 이걸 pulling해야 하나 할 때 쯤에 검색해 보니 github webhook도 있다는 걸 알게 됨\n- .NET Core로 할 생각은 없었지만 github actions를 사용하고 싶은 생각이 많이 들었고 거기에 최적화 되어 있는 deploy가 azure를 쓸 때 적합하다는 걸 찾아냄\n- 무엇보다도 cloud service 중에 한정된 기간 혹은 크레딧 소진 없이 서비스를 유지할 수 있는 cloud는 azure 뿐임 =\u003e azure web apps에는 F1 이라는 진짜 free tier가 있는데 일 60분의 CPU를 공유해서 쓸 수 있다.\n- Google Calendar API 역시 .NET client를 지원하므로 어렵지 않게 구현 가능함.\n\n## Design\n\n### Use case\n\n그림 나중에 추가 예정\n\n- User: Set up Webhook settings to issues\n  - Set up one time\n  - Webhook address is `WebhookToCalendar` serivce address (POST)\n- User: Check out google calendar event\n  - `WebhookToCalendar` service set to google calendar event attendees from github issue assignee\n\n### Data flow\n\n### Data definition\n\n#### Webhooks payload\n\nReference:\nhttps://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#issues\n\nWhat data use:\n\n1. check out payload.action === \"assigned\" or payload.action == \"unassigned\"\n2. payload.issue.assignee.login\n\n### Github API\n\n## Skill keyword\n\n- Github webhook\n- .NET Core\n- Github Actions\n- Azure web apps with github actions\n- Google Calendar API\n- OAuth 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjongfeel%2Fwebhooktocalendar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjongfeel%2Fwebhooktocalendar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjongfeel%2Fwebhooktocalendar/lists"}