{"id":28179674,"url":"https://github.com/jhamadhav/30daygooglecloud","last_synced_at":"2025-10-27T12:19:31.913Z","repository":{"id":46625501,"uuid":"412513816","full_name":"jhamadhav/30DayGoogleCloud","owner":"jhamadhav","description":"Leader-board and bulk report mail for Participants and Facilitators to make 30 Days of Google Cloud more informative, interactive and fun","archived":false,"fork":false,"pushed_at":"2021-10-31T16:40:33.000Z","size":4236,"stargazers_count":10,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-07-30T16:45:51.108Z","etag":null,"topics":["actions","gcp","github","javascript","leaderboard","mail","nodejs","report","workflow"],"latest_commit_sha":null,"homepage":"http://gdsc-rcoem.jhamadhav.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jhamadhav.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}},"created_at":"2021-10-01T15:08:23.000Z","updated_at":"2024-02-14T05:19:30.000Z","dependencies_parsed_at":"2022-09-15T18:40:16.695Z","dependency_job_id":null,"html_url":"https://github.com/jhamadhav/30DayGoogleCloud","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/jhamadhav%2F30DayGoogleCloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhamadhav%2F30DayGoogleCloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhamadhav%2F30DayGoogleCloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhamadhav%2F30DayGoogleCloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jhamadhav","download_url":"https://codeload.github.com/jhamadhav/30DayGoogleCloud/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254453586,"owners_count":22073618,"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":["actions","gcp","github","javascript","leaderboard","mail","nodejs","report","workflow"],"created_at":"2025-05-16T02:13:28.175Z","updated_at":"2025-10-27T12:19:26.858Z","avatar_url":"https://github.com/jhamadhav.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# #30DayGoogleCloud\n\n\u003cp align=\"center\"\u003e\n        \u003ca href=\"https://events.withgoogle.com/30daysofgooglecloud/#content\" target=\"_blank\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/37475140/135711341-d3327a78-968e-4a52-916e-a2a9bed85b10.png\" alt=\"banner\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## what is #30DayGoogleCloud ?\n\n30 Days of Google Cloud program will provide you an opportunity to kickstart your career in cloud and get hands-on practice on Google Cloud - the tool that powers apps like Google Search, Gmail and YouTube.\n\n## How can this project help you ?\n\nTo make things more fun and informative, this project will help **Facilitators** and **Participants** with *leaderboard* and *progress report mails*.\n\n**Leaderboard** will update by `github workflow`, therefore no manual work needed, just set it up once all the participants can enjoy the *leaderboard*\n\nLet's see how to set this project up :\n\n### Step 1: setup\n1. Give this repo a 🌟 😛 \n2. Fork this repo\n3. Clone it to your favorite code editor and run\n```bash\nnpm install\n``` \n\n### Step 2: get and filter data\n\nTo all the facilitator google provides a sheet with participants data, since it contains **private data** such as email. We have not included it to the repo.\n\n1. Convert the `excel sheet` to `json`, you can use [online tools](https://csvjson.com/)\n2. Run\n```npm\nnpm setup\n```\nonce done you will find `refineData\\rawParticipantsData.json`, paste the json data there\n\nIt should look something like this\n```text\n[\n    ...\n    {\n        \"Student Name\": \"name\",\n        \"Institution\": \"Institute\",\n        \"Enrolment Date \u0026 Time\": \"Date\",\n        \"Enrolment Status\": \"All Good || not\",\n        \"Student Email\":\"participant email\",\n        \"Qwiklabs Profile URL\": \"profileLink\",\n        \"# of Skill Badges Completed in Track 1\": 0,\n        \"# of Skill Badges Completed in Track 2\": 0\n    }\n    ...\n]\n```\n3. Once you have pasted the raw data run\n```npm\nnpm run 1.RefineData\n```\nThis will collect only necessary for our leaderBoard and discard `email` and such.\nIt will create `participants.json` in the root folder.\n\n### Step 3 (optional): wanna have a nickname ? 🤔\n\n1. If you want to avoid making even names public on the leaderBoard you can use\n```npm\nnpm run 2.GenerateNicknames\n```\nThis will generate **Pseudo names** for all participants, you can share them privately via emails and keep the data confidential.\n\n\u003e 🛑 **Above (1-3)steps are meant to be run only once**: running them more than that can result in confusion with nicknames and such\n\n### Step 4: Making leaderBoard\n\nNow that we have successfully filtered our data, run :\n```npm\nnpm run 3.GetData\nnpm run 4.MakeLeaderBoard\n```\nwith this you have your leaderBoard ready\ntry opening the `index.html` file in root folder\n\n### Step 5: what about updating it ?\n\nManually updating the **LeaderBoard** is a hassle and a waste of time.\nLet's make use of `Github workflow` for this.\n\n1. Make folder `.github/workflows` if you don't have already\n2. Make a file named `update-leaderBoard.yaml`\n3. Paste the following code\n```yaml\nname: Update leaderBoard data\non:\n  schedule:\n    - cron: '0 */6 * * *'\n\n  # Allows you to run this workflow manually from the Actions tab\n  workflow_dispatch:\n\n# A workflow run is made up of one or more jobs that can run sequentially or in parallel\njobs:\n  build:\n    # The type of runner that the job will run on\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v2\n      - name: Setup node 12\n        uses: actions/setup-node@v2\n        with:\n          node-version: 12.x\n      - run: |\n          npm install\n          npm run 3.GetData\n          npm run 4.MakeLeaderBoard\n      - name: Commit and push changes\n        run: |\n          git config --global user.name \"jhamadhav\"\n          git config --global user.email \"contact@gmail.com\"\n          git add -A\n          git commit -m \"Leaderboard Updated\"\n          git push\n\n```\nThis will update the leaderBoard automatically 4 times a day.\n\n🥳🎊 **Our leaderBoard is ready!!** 🎊🥳\n\n## Progress report mail\n\nHurray! we have are LeaderBoard up and running, but how about we send all the participants a progress report mail, something tailored for each of them with how they are progressing in this 30Day program.\n\n### Step 1: \n\nTo do so, in the folder `./progressMailReport/cred.js`, in `cred.js`add emails and password.\n\n### Step 2: \n\nSince we will be sending mails using `Nodemailer` that will use your email add the following\n```js\nconst cred = [\n\n    {\n        \"user\": \"your email\",\n        \"pass\": \"password\"\n    },\n    {\n        \"user\": \"another email\",\n        \"pass\": \"password\"\n    }\n\n]\nmodule.exports = cred\n```\nYou can add as many emails as to want, to lower the burden of sending mails as `gmail` has a limit of `100` mails per/day.\n\n### Step 3: \nNow all that is left is to send mails, run:\n```npm\nnpm run sendMailReport\n```\n\n🎉We can now send report mails!!\n\n\u003e This has to be run **manually** since we can't have participants data in public repo.\n\n## Sample progress report mail\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"./demo/mailSample.gif\" alt=\"mailDemo\"\u003e\u003c/p\u003e\n\n## Bugs\n\nIf you are experiencing any bugs, don’t forget to open a [new issue](https://github.com/jhamadhav/30DayGoogleCloud/issues/new).\n\n## Liked it?\n\nHope you liked this project, don't forget to give it a star ⭐.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjhamadhav%2F30daygooglecloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjhamadhav%2F30daygooglecloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjhamadhav%2F30daygooglecloud/lists"}