{"id":15653413,"url":"https://github.com/anandchowdhary/services","last_synced_at":"2025-04-30T21:42:22.103Z","repository":{"id":43993916,"uuid":"223619777","full_name":"AnandChowdhary/services","owner":"AnandChowdhary","description":"🔧 Node.js serverless microservices for automating things","archived":false,"fork":false,"pushed_at":"2024-04-23T00:36:32.000Z","size":201,"stargazers_count":29,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-26T22:25:44.105Z","etag":null,"topics":["lambda","nodejs","now","serverless","typescript","zeit"],"latest_commit_sha":null,"homepage":"https://services.anandchowdhary.now.sh","language":"TypeScript","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/AnandChowdhary.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":"2019-11-23T16:30:20.000Z","updated_at":"2023-03-15T15:07:49.000Z","dependencies_parsed_at":"2024-10-23T03:36:12.598Z","dependency_job_id":"6f53f02d-ac5a-48ac-b09a-4663e191b50b","html_url":"https://github.com/AnandChowdhary/services","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/AnandChowdhary%2Fservices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnandChowdhary%2Fservices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnandChowdhary%2Fservices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnandChowdhary%2Fservices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AnandChowdhary","download_url":"https://codeload.github.com/AnandChowdhary/services/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251788920,"owners_count":21644075,"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":["lambda","nodejs","now","serverless","typescript","zeit"],"created_at":"2024-10-03T12:45:36.063Z","updated_at":"2025-04-30T21:42:22.066Z","avatar_url":"https://github.com/AnandChowdhary.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔧 Services\n\nThese are microservices for automating everyday tasks, written in TypeScript/Node.js and deployed to [ZEIT](https://zeit.co).\n\n**Endpoint:** [services.anandchowdhary.now.sh/api](https://services.anandchowdhary.now.sh/api/)\n\n## ⭐ Endpoints\n\n### `/wikipedia-summary`\n\nReturns the introductory text for a search term. [Try it →](https://services.anandchowdhary.now.sh/api/wikipedia-summary?q=GitHub)\n\n| Query param | Description               | Example     |\n| ----------- | ------------------------- | ----------- |\n| `q`         | Search query              | Oswald Labs |\n| `limit`     | Max length of summary     | 300         |\n| `min`       | Minimum length of summary | 8           |\n| `cacheAge`  | Seconds to cache for      | 86400       |\n\n### `/github-contributors`\n\nReturns an SVG image with profile pictures of contributors of a repository on GitHub. [Try it →](https://services.anandchowdhary.now.sh/api/github-contributors?repo=elninotech/uppload)\n\n| Query param    | Description                        | Example            |\n| -------------- | ---------------------------------- | ------------------ |\n| `repo`         | GitHub repository path             | elninotech/uppload |\n| `width`        | Profile picture width in pixels    | 85                 |\n| `itemsPerLine` | Number of pictures per line        | 8                  |\n| `padding`      | Padding between pictures in pixels | 5                  |\n| `cacheAge`     | Seconds to cache for               | 86400              |\n\n![Contributors](https://services.anandchowdhary.now.sh/api/github-contributors?repo=elninotech/uppload)\n\n### `/github-members`\n\nReturns an SVG image with profile pictures of members of a repository on GitHub. [Try it →](https://services.anandchowdhary.now.sh/api/github-members?org=elninotech)\n\n| Query param    | Description                        | Example    |\n| -------------- | ---------------------------------- | ---------- |\n| `org`          | GitHub organization name           | elninotech |\n| `width`        | Profile picture width in pixels    | 85         |\n| `itemsPerLine` | Number of pictures per line        | 8          |\n| `padding`      | Padding between pictures in pixels | 5          |\n| `cacheAge`     | Seconds to cache for               | 86400      |\n\n![Contributors](https://services.anandchowdhary.now.sh/api/github-members?org=elninotech)\n\n### `/github-files`\n\nReturns a [Shields.io schema](https://shields.io/endpoint) for a badge with the number of files in a GitHub repository's directory. [Try it →](https://services.anandchowdhary.now.sh/api/github-files?repo=elninotech/uppload\u0026path=src/i18n\u0026subtract=1\u0026label=i18n\u0026message=%241%24%20language%24S%24\u0026color=blueviolet)\n\n![Badge example](https://img.shields.io/endpoint?url=https%3A%2F%2Fservices.anandchowdhary.now.sh%2Fapi%2Fgithub-files%3Frepo%3Delninotech%2Fuppload%26path%3Dsrc%2Fi18n%26subtract%3D1%26label%3Di18n%26message%3D%25241%2524%2520language%2524S%2524%26color%3Dblueviolet)\n\n| Query param            | Description                   | Example            |\n| ---------------------- | ----------------------------- | ------------------ |\n| `repo`                 | GitHub repository path        | elninotech/uppload |\n| `path`                 | Directory path                | src/i18n           |\n| `add`\u003csup\u003e1\u003c/sup\u003e      | Add to number of files        | 0                  |\n| `subtract`\u003csup\u003e1\u003c/sup\u003e | Subtract from number of files | 1                  |\n| `label`                | Shield label                  | i18n               |\n| `message`\u003csup\u003e2\u003c/sup\u003e  | Shield message                | $1$ language$S$    |\n| `color`                | Shield color                  | blueviolet         |\n| `cacheAge`             | Seconds to cache for          | 3600               |\n\n- \u003csup\u003e1\u003c/sup\u003e Add and subtract numbers can be used, for example, to subtract the index.html file and return the number of content files\n- \u003csup\u003e2\u003c/sup\u003e Special variables $1$ and $S$ are replaced with the number of files and pluralized \"s\" respectively\n\n### Life data endpoints\n\nThese endpoints are used as webhooks for a cron job, and fetch data from various web services' APIs and update my [Life Data GitHub repo](https://github.com/AnandChowdhary/life-data).\n\n| Endpoint                | Description                            | File                                                                                                           |\n| ----------------------- | -------------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| `/spotify`              | My top artists data from Spotify       | [top-artists.yml](https://github.com/AnandChowdhary/life-data/blob/master/top-artists.yml)                     |\n| `/wakatime`             | My programming data from Wakatime      | [development.yml](https://github.com/AnandChowdhary/life-data/blob/master/development.yml)                     |\n| `/owntracks`            | My real-time location from OwnTracks   | [location.json](https://github.com/AnandChowdhary/life-data/blob/master/location.json)                         |\n| `/yoga`                 | My heart rate from HealthKit           | [heart-rate.yml](https://github.com/AnandChowdhary/life-data/blob/master/heart-rate.yml)                       |\n| `/yoga`                 | My step count from HealthKit           | [step-count.yml](https://github.com/AnandChowdhary/life-data/blob/master/step-count.yml)                       |\n| `/yoga`                 | My flights climbed from HealthKit      | [flights-climbed.yml](https://github.com/AnandChowdhary/life-data/blob/master/flights-climbed.yml)             |\n| `/yoga`                 | My distance from HealthKit             | [distance.yml](https://github.com/AnandChowdhary/life-data/blob/master/distance.yml)                           |\n| `/yoga`                 | My active energy from HealthKit        | [active-energy.yml](https://github.com/AnandChowdhary/life-data/blob/master/active-energy.yml)                 |\n| `/yoga`                 | My basal energy from HealthKit         | [basal-energy.yml](https://github.com/AnandChowdhary/life-data/blob/master/basal-energy.yml)                   |\n| `/instagram-highlights` | My story highlights from Instagram     | [instagram-highlights.json](https://github.com/AnandChowdhary/life-data/blob/master/instagram-highlights.json) |\n| `/pocket-casts`         | My podcasts list from Pocket Casts     | [podcasts.yml](https://github.com/AnandChowdhary/life-data/blob/master/podcasts.yml)                           |\n| `/pocket-casts`         | My listening history from Pocket Casts | [podcast-history.yml](https://github.com/AnandChowdhary/life-data/blob/master/podcast-history.yml)             |\n| `/gmail`                | My email summary from Gmail            | [emails.yml](https://github.com/AnandChowdhary/life-data/blob/master/emails.yml)                               |\n\n## 💻 Development\n\nSeveral secret keys are required to run these services, particularly my private access tokens for third-party services.\n\n- Locally, they are available in the `.env` file.\n- On Now, they come from `now.json` using Now Secrets\n- As backup, the are available in this repo in [`secrets.gpg`](./secrets.gpg), using the public key [`public.asc`](./public.asc) (also [on OpenPGP](https://keys.openpgp.org/search?q=mail%40anandchowdhary.com))\n\n## 📄 License\n\n[MIT](https://github.com/AnandChowdhary/services/blob/master/LICENSE) © [Anand Chowdhary](https://anandchowdhary.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanandchowdhary%2Fservices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanandchowdhary%2Fservices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanandchowdhary%2Fservices/lists"}