{"id":44185349,"url":"https://github.com/dogeorg/shipper","last_synced_at":"2026-02-09T15:39:50.429Z","repository":{"id":255138913,"uuid":"848654700","full_name":"dogeorg/shipper","owner":"dogeorg","description":"Shipping calculator microservice","archived":false,"fork":false,"pushed_at":"2025-06-17T05:32:33.000Z","size":111,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-06-17T06:27:15.370Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://shipper-pink.vercel.app","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/dogeorg.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":"2024-08-28T06:48:50.000Z","updated_at":"2025-06-17T05:08:43.000Z","dependencies_parsed_at":"2024-08-28T08:23:21.856Z","dependency_job_id":"85f247bd-55fc-4126-a6db-36201a1e7068","html_url":"https://github.com/dogeorg/shipper","commit_stats":null,"previous_names":["dogeorg/shipper"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dogeorg/shipper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dogeorg%2Fshipper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dogeorg%2Fshipper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dogeorg%2Fshipper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dogeorg%2Fshipper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dogeorg","download_url":"https://codeload.github.com/dogeorg/shipper/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dogeorg%2Fshipper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29271292,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-09T13:47:44.167Z","status":"ssl_error","status_checked_at":"2026-02-09T13:47:43.721Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2026-02-09T15:39:49.573Z","updated_at":"2026-02-09T15:39:50.424Z","avatar_url":"https://github.com/dogeorg.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Shipper\n\nPostage calculation API for Dogebox pre-orders\n\n### Setup\n\nRequires NodeJS 18 or upwards OR docker.\n\nCopy the example configuration file and modify it for your environment:\n\n```bash\ncp config/config.example.json config/config.development.json\n```\n\nEdit `config/config.development.json` with your settings:\n\n```json\n{\n  \"port\": 3000,\n  \"auspostApiKey\": \"your-api-key-here\",\n  \"dogeToAudRate\": 0.15,\n  \"handlingCostInDoge\": 30,\n  \"allowedOrigins\": \"*\"\n}\n```\n\nThe application supports different environments through configuration files:\n\n- `config/config.development.json` - Used when NODE_ENV=development or not set\n- `config/config.production.json` - Used when NODE_ENV=production\n- `config/config.test.json` - Used when NODE_ENV=test\n\n### Running in Prod (via Docker container)\n\n```bash\n# Build the container\ndocker build -t shipper .\n\n# Run the container (mount config directory)\ndocker run -p 3000:3000 -v $(pwd)/config:/app/config shipper\n\n# Interact with container\nhttp \u003caddress\u003e:3000/shipping/calc sku=b0rk country=PT\n```\n\n### Run in Prod (bare metal)\n\n```bash\n# Install NodeJS 18 or upwards\nnvm install 18\n\n# Install project dependencies\nnpm install\n\n# Compile application (Typescript -\u003e Javascript)\nnpm run build\n\n# Run app\nnpm start\n```\n\n### Run dev server (not suitable for prod)\n\n```bash\n# Requires NodeJS 18 or greater\nnpm install\nnpm run dev\n```\n\n---\n\n### Interacting with API\n\n#### On success:\n\n_Example HTTPie Request_\n```bash\nhttp localhost:3000/shipping/calc sku=\"b0rk\" country=\"PT\" postcode=\"90210\"\n```\n\n_Example JSON Payload_\n```json\n{\n    \"sku\": \"b0rk\",\n    \"country\": \"PT\", \n    \"postcode\": \"90210\"\n}\n```\n\n_Response_\n```json\n{\n  \"deliveryAdviceURL\": \"https://auspost.com.au/sending/delivery-speeds-and-coverage/international-delivery-times\",\n  \"options\": [\n    {\n      \"id\": \"INT_PARCEL_COR_OWN_PACKAGING\",\n      \"label\": \"Courier\",\n      \"price\": \"134.15\"\n    },\n    {\n      \"id\": \"INT_PARCEL_EXP_OWN_PACKAGING\",\n      \"label\": \"Express\",\n      \"price\": \"69.15\"\n    },\n    {\n      \"id\": \"INT_PARCEL_STD_OWN_PACKAGING\",\n      \"label\": \"Standard\",\n      \"price\": \"54.15\"\n    },\n    {\n      \"id\": \"INT_PARCEL_AIR_OWN_PACKAGING\",\n      \"label\": \"Economy Air\",\n      \"price\": \"51.65\"\n    }\n  ],\n  \"success\": true\n}\n```\n\n#### On error:\n\n_Bad Example HTTPie Request_\n```bash\nhttp localhost:3000/shipping/calc sku=\"bL0rk\" country=\"CHICKEN\" postcode=\"90210\"\n```\n\n_Bad Example JSON Payload_\n```json\n{\n    \"sku\": \"bL0rk\",\n    \"country\": \"CHICKEN\", \n    \"postcode\": \"90210\"\n}\n```\n\n_Response:_\n```json\n{\n  \"error\": \"BAD_INPUT\",\n  \"reasons\": [\n    \"Invalid SKU. Received \\\"bL0rk\\\", expected one of standard, founders, b0rk\",\n    \"Malformed country code. Received \\\"CHICKEN\\\", expected 2 letter A-Z\"\n  ],\n  \"success\": false\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdogeorg%2Fshipper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdogeorg%2Fshipper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdogeorg%2Fshipper/lists"}