{"id":18151963,"url":"https://github.com/arkapravo-ghosh/qwiklabs-tools","last_synced_at":"2026-05-10T19:04:17.113Z","repository":{"id":260643679,"uuid":"881932479","full_name":"Arkapravo-Ghosh/qwiklabs-tools","owner":"Arkapravo-Ghosh","description":"Faciliator Tools for Qwiklabs","archived":false,"fork":false,"pushed_at":"2024-11-06T19:04:17.000Z","size":37,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-13T05:44:17.510Z","etag":null,"topics":["cheerio","csv","csv-parser","hacktoberfest","json","nodejs","qwiklabs","typescript","web-scraping"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Arkapravo-Ghosh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-11-01T14:20:04.000Z","updated_at":"2024-11-06T19:04:20.000Z","dependencies_parsed_at":"2024-11-01T15:29:19.491Z","dependency_job_id":"4c09fe91-9347-492f-9434-a5ac90593048","html_url":"https://github.com/Arkapravo-Ghosh/qwiklabs-tools","commit_stats":null,"previous_names":["arkapravo-ghosh/qwiklabs-tools"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arkapravo-Ghosh%2Fqwiklabs-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arkapravo-Ghosh%2Fqwiklabs-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arkapravo-Ghosh%2Fqwiklabs-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arkapravo-Ghosh%2Fqwiklabs-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Arkapravo-Ghosh","download_url":"https://codeload.github.com/Arkapravo-Ghosh/qwiklabs-tools/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247569130,"owners_count":20959758,"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":["cheerio","csv","csv-parser","hacktoberfest","json","nodejs","qwiklabs","typescript","web-scraping"],"created_at":"2024-11-02T02:05:09.520Z","updated_at":"2026-05-10T19:04:17.097Z","avatar_url":"https://github.com/Arkapravo-Ghosh.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Qwiklabs Tools\n\n## Description\n\nThis repository contains tools that can be used to interact with Qwiklabs which would be useful for the facilitators of programs related to Google Cloud Platform and Qwiklabs. It now exposes an Express API for loading participants, configuring assignments, triggering the scraper, and reviewing progress.\n\n## Usage\n\n### Clone the repository and navigate to the directory\n\n```bash\ngit clone https://github.com/Arkapravo-Ghosh/qwiklabs-tools.git\ncd qwiklabs-tools\n```\n\n### Install the dependencies\n\n```bash\nnpm i\n```\n\n### Configure environment variables\n\nCreate an `.env.development` (or `.env`) file with at least:\n\n```\nMONGO_URI=\u003cyour mongodb connection string\u003e\nAPI_KEY=\u003cshared secret for authenticated routes\u003e\n```\n\nThe same values are required in production. `API_KEY` must be supplied through the `Authorization` header when calling protected endpoints (you can send the raw key, `Bearer \u003ckey\u003e`, or `Api-Key \u003ckey\u003e`).\n\n### Setup the required csv file\n\nCopy the csv file containing the list of participants sent by Google into `src/assets/data.csv`.\n\n### Copy the default assignments file\n\n```bash\ncp src/assets/assignments_example.json src/assets/assignments.json\n```\n\n### Run all tools at once\n\n```bash\nnpm run dev\n```\n\nThis starts the Express server with hot reload. Use `npm start` when running the compiled build (or inside Docker).\n\n### Call the API routes\n\nAll routes below are rooted at `http://localhost:8000` by default.\n\n| Route | Method | Auth | Description |\n| --- | --- | --- | --- |\n| `/load` | POST | Required | Accepts a CSV payload given by Google to the Faciliator via mail and seeds/updates profiles. Use `Content-Type: text/csv` and place the file contents in the request body. |\n| `/assignments` | POST | Required | Accepts JSON `{ \"assignments\": [], \"arcade_assignments\": [] }` and persists badge targets. |\n| `/scrape` | GET | Required | Queues the scraper and returns queued or in-progress status with batch-based progress percentages. |\n| `/progress` | GET | Optional | Returns the full progress summary as JSON. |\n| `/progress/plaintext` | GET | Optional | Returns the same summary as plain text for copy/paste.\n\n**Flow suggestion:**\n1. Upload assignments with `/assignments`.\n2. Load participant profiles with `/load`.\n3. Trigger scraping via `/scrape` and poll the same endpoint to observe progress.\n4. Share progress using `/progress` or `/progress/plaintext`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farkapravo-ghosh%2Fqwiklabs-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farkapravo-ghosh%2Fqwiklabs-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farkapravo-ghosh%2Fqwiklabs-tools/lists"}