{"id":27699886,"url":"https://github.com/ppirog/joboffers","last_synced_at":"2026-04-05T22:35:49.496Z","repository":{"id":226644131,"uuid":"761416873","full_name":"ppirog/JobOffers","owner":"ppirog","description":"excercise to practise commercial technologies such as spring-boot, junit, mockito, mongodb, wiremock, docker, testcontainters, redis. App deployed on AWS","archived":false,"fork":false,"pushed_at":"2024-05-13T20:53:22.000Z","size":312,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-05-13T21:55:17.959Z","etag":null,"topics":["aws","docker","java","junit","lombok","maven","mockito","mongodb","redis","spring","spring-boot","spring-security","testcontainers","wiremock"],"latest_commit_sha":null,"homepage":"https://www.youtube.com/watch?v=-vTgTVoMRhs","language":"Java","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/ppirog.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}},"created_at":"2024-02-21T20:38:48.000Z","updated_at":"2024-05-13T20:53:25.000Z","dependencies_parsed_at":"2024-05-13T22:00:06.826Z","dependency_job_id":null,"html_url":"https://github.com/ppirog/JobOffers","commit_stats":null,"previous_names":["ppirog/joboffers"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppirog%2FJobOffers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppirog%2FJobOffers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppirog%2FJobOffers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppirog%2FJobOffers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ppirog","download_url":"https://codeload.github.com/ppirog/JobOffers/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250862425,"owners_count":21499284,"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","docker","java","junit","lombok","maven","mockito","mongodb","redis","spring","spring-boot","spring-security","testcontainers","wiremock"],"created_at":"2025-04-25T17:34:04.418Z","updated_at":"2026-04-05T22:35:44.125Z","avatar_url":"https://github.com/ppirog.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/117201156-9a724800-adec-11eb-9a9d-3cd0f67da4bc.png\" alt=\"Java\" title=\"Java\"/\u003e\u003c/code\u003e\n\t\u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/117201470-f6d56780-adec-11eb-8f7c-e70e376cfd07.png\" alt=\"Spring\" title=\"Spring\"/\u003e\u003c/code\u003e\n  \u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/182884177-d48a8579-2cd0-447a-b9a6-ffc7cb02560e.png\" alt=\"mongoDB\" title=\"mongoDB\"/\u003e\u003c/code\u003e\n  \u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/182884894-d3fa6ee0-f2b4-4960-9961-64740f533f2a.png\" alt=\"redis\" title=\"redis\"/\u003e\u003c/code\u003e\t\n\t\u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/117207330-263ba280-adf4-11eb-9b97-0ac5b40bc3be.png\" alt=\"Docker\" title=\"Docker\"/\u003e\u003c/code\u003e\n  \u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/117533873-484d4480-afef-11eb-9fad-67c8605e3592.png\" alt=\"JUnit\" title=\"JUnit\"/\u003e\u003c/code\u003e\n\t\u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/183892181-ad32b69e-3603-418c-b8e7-99e976c2a784.png\" alt=\"mocikto\" title=\"mocikto\"/\u003e\u003c/code\u003e\n  \u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/184097317-690eea12-3a26-4f7c-8521-729ebbbb3f98.png\" alt=\"Testcontainers\" title=\"Testcontainers\"/\u003e\u003c/code\u003e\n\t\u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/192107854-765620d7-f909-4953-a6da-36e1ef69eea6.png\" alt=\"HTTP\" title=\"HTTP\"/\u003e\u003c/code\u003e\n\t\u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/192107858-fe19f043-c502-4009-8c47-476fc89718ad.png\" alt=\"REST\" title=\"REST\"/\u003e\u003c/code\u003e\n\t\u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/192108890-200809d1-439c-4e23-90d3-b090cf9a4eea.png\" alt=\"IntelliJ\" title=\"IntelliJ\"/\u003e\u003c/code\u003e\n\t\u003ccode\u003e\u003cimg width=\"50\" src=\"https://cdn.brighttalk.com/ams/california/images/channel/19357/image_840418.png\" alt=\"Auth0\" title=\"Auth0\"/\u003e\u003c/code\u003e\n\t\u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/117207242-07d5a700-adf4-11eb-975e-be04e62b984b.png\" alt=\"Maven\" title=\"Maven\"/\u003e\u003c/code\u003e\n\t\u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/190229463-87fa862f-ccf0-48da-8023-940d287df610.png\" alt=\"Lombok\" title=\"Lombok\"/\u003e\u003c/code\u003e\n\t\u003cdiv align=\"center\"\u003e\n\t\u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/183896132-54262f2e-6d98-41e3-8888-e40ab5a17326.png\" alt=\"AWS\" title=\"AWS\"/\u003e\u003c/code\u003e\n\t\t\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n\t\u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/183890595-779a7e64-3f43-4634-bad2-eceef4e80268.png\" alt=\"Angular\" title=\"Angular\"/\u003e\u003c/code\u003e\n\t\u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/183890598-19a0ac2d-e88a-4005-a8df-1ee36782fde1.png\" alt=\"TypeScript\" title=\"TypeScript\"/\u003e\u003c/code\u003e\n\t\u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/183898674-75a4a1b1-f960-4ea9-abcb-637170a00a75.png\" alt=\"CSS\" title=\"CSS\"/\u003e\u003c/code\u003e\n\t\u003ccode\u003e\u003cimg width=\"50\" src=\"https://user-images.githubusercontent.com/25181517/192158954-f88b5814-d510-4564-b285-dff7d6400dad.png\" alt=\"HTML\" title=\"HTML\"/\u003e\u003c/code\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\n# LIVEDEMO\n\nCLICK LINK TO SEE ON YOUTUBE HOW APP WORKS:\nhttps://www.youtube.com/watch?v=-vTgTVoMRhs\n\nCLICK LINK TO USE APP:\nhttp://ec2-3-79-167-135.eu-central-1.compute.amazonaws.com/login (currently disabled)\n\n# Frontend\n\nFrontend to this app: https://github.com/ppirog/joboffers-front \n\n# Info\n\n\nThis apllication fetches job offers from an external service using a rest api and stores it in mongodb database.\n\n\n\nApplication was deployed on AWS.  (instruction how to use it in LIVEDEMO section)  \nTo boost time efficiency during making request redis db was added.\n\nFetching new offers is done by app automaticly using scheduler.\n\nTo use application user has to register, login and fetch JWT token\n\nThen user can fetch data using endpoints:\n- GET /offers\n- GET /offers/{id}\n\nApplication enables adding offers manualy using endpoint:\n- POST /offers\n\nAll functionality are unit and integration tested. \n\n# Core\n- Java  \n- Spring  \n- MongoDb\n- Redis\n- Spring Security\n- Scheduler\n- Docker\n- JWT\n# Testing:\n- JUnit  \n- AssertJ\n- Mockito\n- Testcontainers\n- Wiremock\n- MockMvc\n\n# Architecture\n![img](https://github.com/ppirog/JobOffers/assets/126290295/c0a5aa63-4b33-467d-adbe-7b013c43340e)\n\n# HOW TO USE IT FROM POSTMAN\nApplication was deployed on AWS. \nIf you want to use deployed app use postman as in an example below BUT INSTEAD OF\nhttp://localhost:8080 add http://ec2-3-79-167-135.eu-central-1.compute.amazonaws.com:8000\n\nhttp://ec2-3-79-167-135.eu-central-1.compute.amazonaws.com:8000/register  \nhttp://ec2-3-79-167-135.eu-central-1.compute.amazonaws.com:8000/token  \nhttp://ec2-3-79-167-135.eu-central-1.compute.amazonaws.com:8000/offers  \n\n# Postman AWS\n![image](https://github.com/ppirog/JobOffers/assets/126290295/fc30f795-17e5-4879-935b-e15d8fe38e83)\n\n\n# Postman Localhost\n![image](https://github.com/ppirog/JobOffers/assets/126290295/423242ea-d62f-411f-9011-02f569c16898)\n![image](https://github.com/ppirog/JobOffers/assets/126290295/adc880e9-57a0-4afb-9a3e-32653bae169f)\n![image](https://github.com/ppirog/JobOffers/assets/126290295/438f160d-add5-43e5-9ff9-796cb5f3ceee)\n![image](https://github.com/ppirog/JobOffers/assets/126290295/08550690-b446-49e8-b64b-03b9f5ee11e4)\n![image](https://github.com/ppirog/JobOffers/assets/126290295/e5448ad9-a7e8-4682-aaf9-4c2edc499aa0)\n\n##### To start app go to go to file docker-compose.yml first and launch it\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fppirog%2Fjoboffers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fppirog%2Fjoboffers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fppirog%2Fjoboffers/lists"}