{"id":50871179,"url":"https://github.com/drizzleco/salary-database","last_synced_at":"2026-06-15T05:05:15.043Z","repository":{"id":37221546,"uuid":"268151713","full_name":"drizzleco/salary-database","owner":"drizzleco","description":"H1B Salary Database Viewer ","archived":false,"fork":false,"pushed_at":"2022-12-08T11:21:51.000Z","size":60,"stargazers_count":0,"open_issues_count":15,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2023-03-04T12:48:26.769Z","etag":null,"topics":["flask","graphql","heroku","postgres","python"],"latest_commit_sha":null,"homepage":"http://salary-database.herokuapp.com/","language":"Python","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/drizzleco.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}},"created_at":"2020-05-30T20:08:18.000Z","updated_at":"2021-01-20T10:21:35.000Z","dependencies_parsed_at":"2023-01-25T05:31:14.207Z","dependency_job_id":null,"html_url":"https://github.com/drizzleco/salary-database","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/drizzleco/salary-database","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drizzleco%2Fsalary-database","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drizzleco%2Fsalary-database/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drizzleco%2Fsalary-database/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drizzleco%2Fsalary-database/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drizzleco","download_url":"https://codeload.github.com/drizzleco/salary-database/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drizzleco%2Fsalary-database/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34348362,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"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":["flask","graphql","heroku","postgres","python"],"created_at":"2026-06-15T05:05:14.213Z","updated_at":"2026-06-15T05:05:15.035Z","avatar_url":"https://github.com/drizzleco.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Salary Database\n\n[![Build status](https://badge.buildkite.com/1728e3c9006224625e2748c1c7e17f2c1f36f6c444e8dd9e71.svg)](https://buildkite.com/drizzle/salary-database)\n[![codecov](https://codecov.io/gh/drizzleco/salary-database/branch/master/graph/badge.svg?token=TXTAUEBCXS)](https://codecov.io/gh/drizzleco/salary-database)\n\n## Technology\n\n- sqlite3\n- python\n\n## Setup\n\n1.  `make install`\n2.  `make collect_2019_data` to populate salary db with just 2019 data(if using sqlite)\n3.  `docker-compose up --build` to build and start docker container(if using postgres)\n\n## Info\n\nTo obtain the H1B data, go to the [site here](https://www.foreignlaborcert.doleta.gov/performancedata.cfm#dis). Then, click on the \"Disclosure Data\" tab. Once we're here, scroll down to LCA Programs and download the report for the given fiscal year. In my sample, I ran this for 2019. After downloading one of the excel file, open it in your desktop client and export it to csv. Then, use the \"Data Ingestion\" notebook to clean it up.\n\nCurrently, all the information exists in the data folder. I added the steps for moving information in the data ingestion notebook. We can probably automate that to make this idempotent.\n\n## Feel free to access the GraphQL Viewer!\n\nUsing https://salary-database.herokuapp.com/graphql, feel free to take a look at the schema and query the data. Here is an example input\n\n```\n{\n  salaries(limit: 10, employer: \"AIRBNB\", year:\"2020\"){\n    caseNumber\n    employerName\n    jobTitle\n    prevailingWage\n    employmentStartDate\n  }\n}\n```\n\nwith the following link: [Query Link](\u003chttps://salary-database.herokuapp.com/graphql?query=%7B%0A%20%20salaries(limit%3A%2010%2C%20employer%3A%20%22AIRBNB%22%2C%20year%3A%20%222020%22)%20%7B%0A%20%20%20%20caseNumber%0A%20%20%20%20employerName%0A%20%20%20%20jobTitle%0A%20%20%20%20prevailingWage%0A%20%20%20%20employmentStartDate%0A%20%20%7D%0A%7D%0A\u003e)\n\n## Production\n\n**Deploying to Heroku**\n\nTo deploy Docker container to heroku:\n\n0. heroku create (one time step)\n1. heroku container:push web\n2. heroku container:release web\n3. heroku open\n\n**Pushing Salary Data from Local DB to Production DB**\n\nYou'll need:\n\n- postgresql\n  - install with: `brew install pgloader`\n- pgloader\n  - install with: `brew install postgresql`\n- Heroku CLI\n\n---\n\nIn the future, when we want to update the database, the steps to push our local sqlite database to the production heroku database are:\n\n1. use pgloader to load our local sqlite db to a local postgres database\n   - `pgloader data/salary.sqlite postgresql:///[name of postgres dev db]`\n2. reset remote db\n   - `heroku pg:reset DATABASE_URL --app salary-database`\n3. push local postgres database to heroku\n   - `heroku pg:push postgresql:///[name of postgres dev db] DATABASE_URL --app salary-database`\n\nNOTE: you can use `heroku pg:info --app salary-database` to get info about the the production database and check if we are near the row limit.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrizzleco%2Fsalary-database","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrizzleco%2Fsalary-database","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrizzleco%2Fsalary-database/lists"}