{"id":21714333,"url":"https://github.com/somespecialone/sert","last_synced_at":"2025-04-12T19:13:18.594Z","repository":{"id":115339456,"uuid":"575967169","full_name":"somespecialone/sert","owner":"somespecialone","description":"Steam Exchange Rate Tracker and Converter 💱","archived":false,"fork":false,"pushed_at":"2025-01-27T09:04:48.000Z","size":542,"stargazers_count":10,"open_issues_count":10,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T19:12:41.284Z","etag":null,"topics":["currency-converter","deta","exchange","nitro","nodejs","steam","steammarket","svelte","sveltekit"],"latest_commit_sha":null,"homepage":"https://converter.somespecial.one/","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/somespecialone.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":"2022-12-08T17:47:01.000Z","updated_at":"2025-04-07T11:28:49.000Z","dependencies_parsed_at":"2024-01-02T12:24:24.318Z","dependency_job_id":"5cd12935-7846-4161-bb2a-223fa55ad3c6","html_url":"https://github.com/somespecialone/sert","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/somespecialone%2Fsert","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/somespecialone%2Fsert/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/somespecialone%2Fsert/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/somespecialone%2Fsert/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/somespecialone","download_url":"https://codeload.github.com/somespecialone/sert/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248618283,"owners_count":21134201,"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":["currency-converter","deta","exchange","nitro","nodejs","steam","steammarket","svelte","sveltekit"],"created_at":"2024-11-26T00:34:18.126Z","updated_at":"2025-04-12T19:13:18.567Z","avatar_url":"https://github.com/somespecialone.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Steam Exchange Rate Tracker\n\n*Stay updated on Steam market prices and convert currencies with easy!*\n\n[![Made in Ukraine](https://img.shields.io/badge/made_in-ukraine-ffd700.svg?labelColor=0057b7)](https://stand-with-ukraine.pp.ua)\n[![license](https://img.shields.io/github/license/somespecialone/sert)](https://github.com/somespecialone/sert/blob/master/LICENSE)\n[![steam](https://shields.io/badge/steam-1b2838?logo=steam)](https://store.steampowered.com/)\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat)](https://github.com/prettier/prettier)\n[![API](https://github.com/somespecialone/sert/actions/workflows/api.yml/badge.svg)](https://github.com/somespecialone/sert/actions/workflows/api.yml)\n[![Test](https://github.com/somespecialone/sert/actions/workflows/test.yml/badge.svg)](https://github.com/somespecialone/sert/actions/workflows/test.yml)\n[![Converter](https://github.com/somespecialone/sert/actions/workflows/converter.yml/badge.svg)](https://github.com/somespecialone/sert/actions/workflows/converter.yml)\n[![codecov](https://codecov.io/gh/somespecialone/sert/branch/master/graph/badge.svg?token=GM6IQU4U2K)](https://codecov.io/gh/somespecialone/sert)\n[![CodeFactor](https://www.codefactor.io/repository/github/somespecialone/sert/badge)](https://www.codefactor.io/repository/github/somespecialone/sert)\n---\n\n\u003e [!NOTE]\n\u003e \n\u003e **Web converter [converter.somespecial.one](https://converter.somespecial.one) 🧮**\n\u003e \n\u003e **API [sert.somespecial.one](https://sert.somespecial.one)**\n\u003e\n\u003e **Python API consumer [aiosteampy.converter](https://github.com/somespecialone/aiosteampy/blob/master/aiosteampy/ext/converter.py)**\n\n## How it works\n\nEvery hour on **9 and 39 minute** app checks if rates data in db is expired (updated yesterday or even older)\nand if true, _update currency rates_:\n\n1. Get data of specified item on steammarket for each needed currency.\n2. Calculate exchange rates by comparing item price in previously fetched currencies.\n3. Save data to db 😎.\n\n\u003e [!WARNING]\n\u003e It is possible to get max 4 currencies for each schedule wake up due to `Steam` rate limit.\n\n## API\n\nAll currency rates eval to 1 USD 💵.\n\n\u003e [!IMPORTANT]\n\u003e All routes have `Expires` ⌛ header\n\u003e So please consider using a caching mechanism to avoid unnecessary requests to the service as its resources are limited.\n\n### Rates\n\n\u003e GET `/rates`\n\n```json5\n{\n  \"EUR\": [\n    0.91, // rate\n    1683121141 // updated ts in seconds\n  ],\n  \"UAH\": [\n    36.71,\n    1683121141\n  ]\n}\n```\n\n### History\n\n\u003e GET `/history`\n\n```json5\n{\n  \"EUR\": [\n    [\n      0.91,\n      1683121141\n    ],\n    [\n      0.91,\n      1682986141\n    ],\n    // ...\n  ],\n  \"UAH\": [\n    [\n      36.71,\n      1683121141\n    ],\n    [\n      36.94,\n      1682986141\n    ],\n    // ...\n  ]\n}\n```\n\n| Param    | Descr                               | Default |\n|----------|-------------------------------------|---------|\n| `length` | Max length of history entries array | 30      |\n| `all`    | Show full list of entries           | `false` |\n\nExamples:\n\n* https://sert.somespecial.one/history?length=20\n* https://sert.ssomespecial.one/history?all\n\n\n[//]: # (## Tests 🧪)\n[//]: # ()\n[//]: # (Copy repo, install deps, place filled `.env` in `api` dir and there run npm script:)\n[//]: # ()\n[//]: # (```shell)\n[//]: # (npm run api:test)\n[//]: # (```)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsomespecialone%2Fsert","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsomespecialone%2Fsert","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsomespecialone%2Fsert/lists"}