{"id":26982878,"url":"https://github.com/spyker77/skillhunter","last_synced_at":"2025-04-03T16:35:42.631Z","repository":{"id":39825141,"uuid":"265300129","full_name":"spyker77/skillhunter","owner":"spyker77","description":"Web service that helps an IT newcomers find a job ASAP","archived":false,"fork":false,"pushed_at":"2024-03-20T17:33:13.000Z","size":184736,"stargazers_count":4,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T00:03:03.797Z","etag":null,"topics":["aws","django","django-rest-framework","docker","docker-compose","playwright","postgresql","python","tailwindcss"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spyker77.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-05-19T16:24:00.000Z","updated_at":"2025-02-26T13:10:47.000Z","dependencies_parsed_at":"2023-12-06T12:45:39.994Z","dependency_job_id":null,"html_url":"https://github.com/spyker77/skillhunter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spyker77%2Fskillhunter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spyker77%2Fskillhunter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spyker77%2Fskillhunter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spyker77%2Fskillhunter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spyker77","download_url":"https://codeload.github.com/spyker77/skillhunter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247038273,"owners_count":20873311,"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":["aws","django","django-rest-framework","docker","docker-compose","playwright","postgresql","python","tailwindcss"],"created_at":"2025-04-03T16:35:42.196Z","updated_at":"2025-04-03T16:35:42.625Z","avatar_url":"https://github.com/spyker77.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SkillHunter\n\n[![CI/CD](https://github.com/spyker77/skillhunter/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/spyker77/skillhunter/actions/workflows/main.yml)\n[![Codecov](https://codecov.io/gh/spyker77/skillhunter/graph/badge.svg?token=BBTT6UO39V)](https://codecov.io/gh/spyker77/skillhunter)\n[![Codacy](https://app.codacy.com/project/badge/Grade/111702284f88482bbc4b64d2b6d169c5)](https://app.codacy.com/gh/spyker77/skillhunter/dashboard)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](CODE_OF_CONDUCT.md)\n\nSkillHunter is all about helping you and your mates identify the most in-demand skills in the job market in order to find a new position as soon as possible. Cut the bullshit and prepare yourself in the most efficient way, no need to learn everything!\n\nWhat if you asked yourself the wrong question: \"What do I need to learn?\" Whereas a better one could be: \"What I don't need to learn?\" The latter helps you save a ton of time by avoiding unnecessary work when time is the most valuable – at the very beginning of unknown – that's where the SkillHunter really shines.\n\n## Installation\n\nDownload this project and run [Docker Compose](https://docs.docker.com/compose/install/) on your machine:\n\n```bash\ngit clone https://github.com/spyker77/skillhunter.git\ncd skillhunter\n```\n\n## Usage\n\nUpdate environment variables inside the docker-compose.yml and run the following bash commands inside downloaded project's folder – this will launch the process of building the image (if it doesn't exist), create and start containers in a detached mode.\n\n1. Due to a forced HTTPS in production, it might be a good idea to start with **ENVIRONMENT=development** in .env file – this will allow you to avoid SSL related errors.\n\n```bash\ndocker compose up -d\n```\n\n2. On the first run you need to apply migrations to the fresh database:\n\n```bash\ndocker compose exec web python manage.py migrate\n```\n\n3. Load the job titles to parse and skills to identify:\n\n```bash\ndocker compose exec web python manage.py loaddata jobs.json skills.json\n```\n\n4. [Optional] Run scrapers manually to collect data about available vacancies:\n\n```bash\ndocker compose exec worker python manage.py scrape_hh\ndocker compose exec worker python manage.py scrape_indeed\ndocker compose exec worker python manage.py scrape_sh\n```\n\nOr rely on the Celery beat to run this and other tasks periodically – see the `CELERY_BEAT_SCHEDULE` setting.\n\n**Tada** 🎉\n\nBy now you should be up and running. Try to reach the \u003chttp://localhost\u003e in your browser.\n\nIn order to prepopulate the database, you can use the test data:\n\n```bash\ndocker compose exec web python manage.py loaddata scrapers_vacancy.json scrapers_vacancy_part_1.json scrapers_vacancy_part_2.json scrapers_vacancy_part_3.json\n```\n\nIn order to run tests:\n\n```bash\ndocker compose exec -e DB_HOST=db web pytest -n auto --cov=\".\"\n```\n\n**Note** ⚠️\n\nFor the local development you may need to install **pg_config** for the **psycopg** (e.g. using `brew install postgresql`), and **Node.js** in case you want to update the packages for a production build of CSS.\n\n## Architecture\n\n![SkillHunter's architecture](https://spyker77.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F24293db7-cf4b-46ca-8a44-e9ac458107f9%2FArchitecture.png?table=block\u0026id=de70516a-c572-4324-8f80-c40b97118997\u0026spaceId=d8f7323e-790b-48e9-8264-b0e2573a22ac\u0026width=2000\u0026userId=\u0026cache=v2)\n\n## Contributing\n\nPull requests are really welcome. For major changes, please open an issue first to discuss what you would like to change.\n\nAlso, make sure to update tests as appropriate 🙏\n\n## License\n\nThis project is licensed under the terms of the [MIT](https://github.com/spyker77/skillhunter/blob/main/LICENSE) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspyker77%2Fskillhunter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspyker77%2Fskillhunter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspyker77%2Fskillhunter/lists"}