{"id":18645876,"url":"https://github.com/interledger/ts-tech-test","last_synced_at":"2026-03-19T05:34:59.343Z","repository":{"id":103176426,"uuid":"484166859","full_name":"interledger/ts-tech-test","owner":"interledger","description":null,"archived":false,"fork":false,"pushed_at":"2022-04-21T18:48:22.000Z","size":3,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-06-17T09:51:21.057Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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/interledger.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,"zenodo":null}},"created_at":"2022-04-21T18:43:35.000Z","updated_at":"2022-04-21T18:49:43.000Z","dependencies_parsed_at":"2023-03-09T18:45:53.700Z","dependency_job_id":null,"html_url":"https://github.com/interledger/ts-tech-test","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/interledger/ts-tech-test","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/interledger%2Fts-tech-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/interledger%2Fts-tech-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/interledger%2Fts-tech-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/interledger%2Fts-tech-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/interledger","download_url":"https://codeload.github.com/interledger/ts-tech-test/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/interledger%2Fts-tech-test/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28964429,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T01:25:30.373Z","status":"online","status_checked_at":"2026-02-01T02:00:08.102Z","response_time":56,"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":[],"created_at":"2024-11-07T06:17:31.627Z","updated_at":"2026-02-01T02:02:58.263Z","avatar_url":"https://github.com/interledger.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Interledger Technical Test for the [TypeScript Developer Role](https://interledger-foundation.breezy.hr/p/660ff8e7ba21-typescript-developer)\n\n## Logistics\nThis challenge is intended to be done at home. You should write the code in TypeScript and you may use any resources you like. You are encouraged to use any libraries that you find helpful.\n\nWe will schedule a review session afterwards with one or two of the engineers working on [rafiki](https://github.com/interledger/rafiki), via video call. We will ask you to discuss your solution, explain your design choices and pair-program a feature live.\n\n_Please do not share this challenge or your solution to it._\n\n## Challenge\nA “peering relationship” is a way to keep track of debt between two parties. The peering relationship balance starts at 0 and both parties independently track their views of the balance. If Alice owes Bob $10, then Alice sees a balance of -10 and Bob sees a balance of 10. If Alice sends Bob $10 more, then her balance would be -20, and Bob’s balance would be 20.\n\nWrite a program that implements a peering relationship and exposes an interactive Command Line Interface. Once both users start the interactive prompt, they should be able to send money to the other user and view their own balance.\n\n### Constraints\n\n- Each user keeps track of their own balance\n- Assume the users are on different computers\n- State does not have to persist between sessions\n- State should not be tracked or stored remotely (i.e. on a server)\n\n### Example Terminal Output\n\n#### Alice\n\n```sh\n$ ./start-peer ... # (plus connection options)\nWelcome to your peering relationship!\n\u003e balance\n0\n\u003e pay 10\nSent\n\u003e balance\n-10  # (other balance is now 10)\n\u003e exit\nGoodbye.\n```\n\n#### Bob\n\n```sh\n$ ./start-peer ... # (plus connection options)\nWelcome to your peering relationship!\n\u003e balance\n0\nYou were paid 10!\n\u003e balance\n10\n\u003e exit\nGoodbye.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finterledger%2Fts-tech-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finterledger%2Fts-tech-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finterledger%2Fts-tech-test/lists"}