{"id":19486246,"url":"https://github.com/textbook/salary-stats","last_synced_at":"2025-06-27T23:02:40.813Z","repository":{"id":15477539,"uuid":"78056378","full_name":"textbook/salary-stats","owner":"textbook","description":"Analyse and compare salaries by cohort","archived":false,"fork":false,"pushed_at":"2023-05-15T11:56:13.000Z","size":8754,"stargazers_count":5,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-22T01:47:43.055Z","etag":null,"topics":["angular","angular-cli","cypress","jasmine","karma","tdd"],"latest_commit_sha":null,"homepage":"https://blog.jonrshar.pe/salary-stats","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/textbook.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-01-04T21:58:10.000Z","updated_at":"2023-10-22T14:34:39.000Z","dependencies_parsed_at":"2023-02-15T07:16:18.326Z","dependency_job_id":"6f900b60-15fe-4896-a1da-425761aeae98","html_url":"https://github.com/textbook/salary-stats","commit_stats":null,"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"purl":"pkg:github/textbook/salary-stats","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/textbook%2Fsalary-stats","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/textbook%2Fsalary-stats/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/textbook%2Fsalary-stats/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/textbook%2Fsalary-stats/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/textbook","download_url":"https://codeload.github.com/textbook/salary-stats/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/textbook%2Fsalary-stats/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262347468,"owners_count":23296893,"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":["angular","angular-cli","cypress","jasmine","karma","tdd"],"created_at":"2024-11-10T20:35:59.504Z","updated_at":"2025-06-27T23:02:40.784Z","avatar_url":"https://github.com/textbook.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Salary Statistics\n\nAnalyse and compare salaries by cohort.\n\n[![Build Status][1]][2]\n[![Coverage Status][3]][4]\n[![License][7]][8]\n[![Codacy Grade][9]][10]\n[![Docker Image][18]][19]\n\n## Usage\n\nThis tool is very simple to use. You can add as many people, in as many\ndifferent cohorts, as you like. Each person can be added by entering their\ndetails in the inputs in the table footer and either clicking the Add button\nor hitting Enter. The cohort is simply a string identifying the cohort, for\nexample by job title or year of starting.\n\nYou can delete a single person at a time or everyone at once. In the former\ncase, if the inputs are empty when you choose to delete a person, they are\nfilled in with that person's details. This makes it harder to accidentally lose\ndata and means you can easily \"edit\" someone by deleting them, modifying the\ninputs and submitting them again. In the latter case a warning appears asking\nfor confirmation, as this cannot be undone.\n\nAs you add and remove people, the comparison chart is automatically updated.\nThe box plot shows five values: the central box is the upper and lower\nquartiles and the median; and the outer \"fences\" are set at the quartiles\nplus or minus 1.5 times the interquartile range. Any value outside the fences\nis considered an outlier and is shown separately.\n\n## Deployment\n\nIf you're using this to look at real salary data, you don't want to be sharing\nit. All analysis happens in your local browser, nothing gets sent to any\nbackend. If you'd prefer to run your own instance, though, you can easily do\nso either:\n\n 1. Without downloading the code:\n\n     - Heroku - click the button below:\n\n        [![Deploy][14]][15]\n\n     - Any web server - download the build output from the [latest\n        release][16] and serve it\n\n     - Docker - deploy the image `textbook/salary-stats`\n\n 2. By downloading the code (e.g. clone the repository) you can deploy to:\n\n     - [Cloud Foundry][13] - install the CF CLI and run `cf push`\n\n     - Heroku - install the Heroku CLI and `git push heroku main`, but you\n        will need to manually set up the buildpacks on the app:\n\n        ```shell script\n        heroku buildpacks:clear\n        heroku buildpacks:add heroku/nodejs\n        heroku buildpacks:add https://github.com/heroku/heroku-buildpack-static\n       ```\n\n     - Any web server - [build locally][17] and serve the content of `dist/`\n\n## Development\n\nYou will need to [clone the repository][11]. It uses the [Angular CLI][12], so\nstart off by running:\n\n```bash\nnpm install -g @angular/cli\ncd [repo directory]\nnpm install  # or npm ci\n```\n\nFrom there you can run it for local testing/development with:\n\n```bash\nnpm run start\n```\n\nand visit the site at http://localhost:4200. The following commands are also\navailable:\n\n - `npm run lint` - run ESLint on the `*.ts` files\n - `npm run test` - run the Karma unit tests (use `test:watch` to re-run every time something\n    changes)\n - `npm run e2e` - run the Protractor end-to-end tests\n - `npm run build` - create the production build in `dist/`\n\nBoth sets of tests are configured to run using the Chrome browser headlessly,\nso you won't see anything pop up on your screen.\n\n  [1]: https://github.com/textbook/salary-stats/workflows/Node.js%20CI/badge.svg\n  [2]: https://github.com/textbook/salary-stats/actions\n  [3]: https://coveralls.io/repos/github/textbook/salary-stats/badge.svg?branch=main\n  [4]: https://coveralls.io/github/textbook/salary-stats?branch=main\n  [7]: https://img.shields.io/badge/license-ISC-blue.svg\n  [8]: LICENSE\n  [9]: https://api.codacy.com/project/badge/Grade/ec6f1694d6c04b0e82645375719422f2\n  [10]: https://www.codacy.com/app/j-r-sharpe-github/salary-stats?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=textbook/salary-stats\u0026amp;utm_campaign=Badge_Grade\n  [11]: https://help.github.com/articles/cloning-a-repository/\n  [12]: https://cli.angular.io/\n  [13]: https://www.cloudfoundry.org/\n  [14]: https://www.herokucdn.com/deploy/button.svg\n  [15]: https://heroku.com/deploy?template=https%3A%2F%2Fgithub.com%2Ftextbook%2Fsalary-stats%2Ftree%2Fmain\n  [16]: https://github.com/textbook/salary-stats/releases/latest\n  [17]: #Development\n  [18]: https://img.shields.io/docker/image-size/textbook/salary-stats\n  [19]: https://hub.docker.com/r/textbook/salary-stats/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftextbook%2Fsalary-stats","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftextbook%2Fsalary-stats","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftextbook%2Fsalary-stats/lists"}