{"id":15910777,"url":"https://github.com/dukebody/forix","last_synced_at":"2026-04-18T14:05:14.061Z","repository":{"id":66599826,"uuid":"109515499","full_name":"dukebody/forix","owner":"dukebody","description":"Forix is a currency exchange microservice powered by Sinatra/Ruby","archived":false,"fork":false,"pushed_at":"2018-02-24T18:18:35.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-05T08:52:55.078Z","etag":null,"topics":["currency-exchange-rates","ruby","sinatra"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dukebody.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":"2017-11-04T17:29:56.000Z","updated_at":"2017-11-04T19:13:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"4ecbbbed-a99e-4a20-8512-e5f10136282d","html_url":"https://github.com/dukebody/forix","commit_stats":{"total_commits":12,"total_committers":1,"mean_commits":12.0,"dds":0.0,"last_synced_commit":"dfe4a106eeba3f34e745d8fba2cce12cc6d9de9d"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dukebody/forix","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dukebody%2Fforix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dukebody%2Fforix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dukebody%2Fforix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dukebody%2Fforix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dukebody","download_url":"https://codeload.github.com/dukebody/forix/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dukebody%2Fforix/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31971500,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-exchange-rates","ruby","sinatra"],"created_at":"2024-10-06T15:21:26.306Z","updated_at":"2026-04-18T14:05:09.043Z","avatar_url":"https://github.com/dukebody.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"Forix\n=====\n\nDISCLAIMER: I have no idea what I'm doing - I'm just doing this to learn Ruby.\n\n**Forix is a mini currency exchange service powered by Sinatra/Ruby.**\n\nConversion rates are pulled from api.fixer.io (updated daily). The idea is to sync with this remote\nserver from time to time and place the forix service inside your app network so it can be accessed\nwith micro-latency (as any micro-service requires;).\n\nThe conversion rates are stored in the worker memory so it's super fast, but at the same\ntime it doesn't allow multiple worker processes.\n\n\n# Install and run\n\n 1. Install docker \u0026 docker-compose\n 2. `docker-compose up`\n\n# Usage\n\nUse the URL pattern:\n\n```\nhttp://localhost:9292/convert?amount=:numeric_amount\u0026from=:currency_from\u0026to=:currency_to\n```\n\nFor example:\n\n```\nhttp://localhost:9292/convert?amount=134\u0026from=EUR\u0026to=GBP\n```\n\nA correct response is `200 OK` and has the shape:\n\n```\n{\"original_amount\":134.0,\"original_currency\":\"EUR\",\"converted_amount\":119.16,\"converted_currency\":\"GBP\"}\n```\n\nIf the requested currency is not found or the request is invalid, a `400 Bad Request` is returned like:\n\n```\n{\"error\":\"Currency not found: BTC\"}\n```\n\nThe exchange rates are synced at application start, and can be refreshed any time using:\n\n```\nhttp://localhost:9292/sync\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdukebody%2Fforix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdukebody%2Fforix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdukebody%2Fforix/lists"}