{"id":23635173,"url":"https://github.com/hfxbse/dbg-schedule-sync","last_synced_at":"2026-01-20T02:18:29.854Z","repository":{"id":44417414,"uuid":"318790239","full_name":"hfxbse/DBG-Schedule-Sync","owner":"hfxbse","description":"A web service to sync the representation plan of the school DBG Metzingen to Google Calendar.","archived":false,"fork":false,"pushed_at":"2024-08-01T20:31:23.000Z","size":420,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"firebase","last_synced_at":"2025-02-10T22:35:08.149Z","etag":null,"topics":["aws-ses","calendar","dbg-metzingen","dbg-schedule","dsbmobile","email-sender","firebase","firebase-admin","google-calendar","nodejs","school","sync","web-app"],"latest_commit_sha":null,"homepage":"https://dbg-vertretung.stubit.tv/","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hfxbse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2020-12-05T13:04:01.000Z","updated_at":"2024-08-01T20:26:34.000Z","dependencies_parsed_at":"2024-08-01T22:10:09.757Z","dependency_job_id":null,"html_url":"https://github.com/hfxbse/DBG-Schedule-Sync","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hfxbse%2FDBG-Schedule-Sync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hfxbse%2FDBG-Schedule-Sync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hfxbse%2FDBG-Schedule-Sync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hfxbse%2FDBG-Schedule-Sync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hfxbse","download_url":"https://codeload.github.com/hfxbse/DBG-Schedule-Sync/tar.gz/refs/heads/firebase","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247326822,"owners_count":20920916,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["aws-ses","calendar","dbg-metzingen","dbg-schedule","dsbmobile","email-sender","firebase","firebase-admin","google-calendar","nodejs","school","sync","web-app"],"created_at":"2024-12-28T05:31:40.518Z","updated_at":"2026-01-20T02:18:29.829Z","avatar_url":"https://github.com/hfxbse.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"**️️⚠️ Service no longer functional. See this [issue](https://github.com/hfxbse/DBG-Schedule-Sync/issues/3) for details.**\n\n# DBG Schedule Sync\n\n![Icon](https://i.imgur.com/BvxYrRZt.png)\n\nA web service to sync the representation plan of the school [DBG Metzingen](https://dbg-metzingen.de), which is hosted\non [DSBmobile](https://www.dsbmobile.de), to [Google Calendar](https://calendar.google.com). It is built using\n[Firebase](https://firebase.google.com). For mailing, [AWS SES](https://aws.amazon.com/ses/) is used.\n\nOnly the changes which are relevant to the individual student get synced to their calendar. A separate secondary\ncalendar gets created for the plan, which then looks something like the image below.\n![Synced calendar on Google Calendar](https://i.imgur.com/SirZztp.png)\nAt the start of the new school year, all active users receive an email, reminding them to adjust their settings to their\nnew schedule accordingly.\n\nThe web app running in production can be found on [dbg-vertretung.stubit.tv](https://dbg-vertretung.stubit.tv/).\n\n# Deployment\n\nBefore the service can be deployed successfully, config files and environment variables need to be added.\n\n## Frontend\n\nThe Firebase SDK configuration can be configured via environment variables with a nearly identical name. Remember that\nit is possible to create a `.env`-file to set them only once.\n\n| JSON field name     | Environment variable                                                                                                                      |\n|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------|\n| `apiKey`            | `VUE_APP_API_KEY`                                                                                                                         |\n| `authDomain`        | `VUE_APP_DOMAIN`                                                                                                                          |\n| `authDomain`        | `VUE_APP_ALT_DOMAIN` _In case your website can be reached from another domain.\u003cbr/\u003eIf not, it should be set identically to the previous._ |\n| `databaseURL`       | `VUE_APP_DATABASE_URL`                                                                                                                    |\n| `projectId`         | `VUE_APP_PROJECT_ID`                                                                                                                      |\n| `storageBucket`     | `VUE_APP_STORAGE_BUCKET`                                                                                                                  |\n| `messagingSenderId` | `VUE_APP_MESSAGING_SENDER_ID`                                                                                                             |\n| `appId`             | `VUE_APP_APP_ID`                                                                                                                          |\n| `measurementId`     | `VUE_APP_MEASUREMENT_ID`                                                                                                                  |\n\nThe Google-OAuth client ID can be set via the `VUE_APP_GOOGLE_OAUTH_CLIENT_ID` environment variable. In addition, to get\nverified by Google to use it in production, add your privacy notice PDF as `public/privacy.pdf`.\n\nTo verify your website for Google Search indexing, you can set the verification code via `GOOGLE_VERIFICATION_ID_ONE`,  \nand for the second domain via `GOOGLE_VERIFICATION_ID_TWO`.\n\nThe social media preview image URL, which will show the chosen image when your website is linked, can be set via\n`PREVIEW_IMAGE`.\n\n## Backend\n\nAll required config files need to be at the root of the `functions`-directory. In addition, the appropriate accounts\nneed to be created for the cloud services.\n\nThe sign-in process needs the same Firebase SDK configuration as the frontend but in a less modified form. Create\n`web_client.json`, in which you copy your configuration, and change to formatting to be proper JSON. The field names\nstay unmodified. It should look like this:\n\n```json\n{\n  \"apiKey\": \"\",\n  \"appId\": \"\",\n  \"authDomain\": \"\",\n  \"databaseURL\": \"\",\n  \"measurementId\": \"\",\n  \"messagingSenderId\": \"\",\n  \"projectId\": \"\",\n  \"storageBucket\": \"\"\n}\n```\n\nDownload your OAuth client configuration to complete the sign-up process as JSON and save it as `oauth_client.json`.\n\nDownload your service account credentials to access the Google Calendar API and Firebase as JSON and save it as\n`service_account.json`.\n\nThe rest of the configuration is done via the\n[Firebase environment configuration](https://firebase.google.com/docs/functions/config-env?gen=1st#environment_configuration).\nThe keys are as follows:\n\n| Configuration key                       | Description                                                                               |\n|-----------------------------------------|-------------------------------------------------------------------------------------------|\n| `aws.email.debug_addresses`             | Email addresses which will receive emails while debugging.                                |\n| `aws.email.templates.permissions`       | Email template name, which informs the user about missing calendar access permissions.    |\n| `aws.email.templates.new_year_reminder` | Email template name, which reminds the user to adjust their settings for the new year.    |\n| `aws.email.source_address`              | Email addresses to send emails from.                                                      |\n| `aws.region`                            | AWS service region.                                                                       |\n| `aws.key_id`                            | AWS service account key ID.                                                               |\n| `aws.access_key`                        | AWS service account access key. **Should be replaced by the Google Cloud Secret Manger.** |\n| `web_app.address`                       | URL to your web app that will be added to the calendar description.                       |\n| `dsb.password`                          | DSB password.  **Should be replaced by the Google Cloud Secret Manger.**                  |\n| `dsb.user`                              | DSB username.                                                                             |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhfxbse%2Fdbg-schedule-sync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhfxbse%2Fdbg-schedule-sync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhfxbse%2Fdbg-schedule-sync/lists"}