{"id":25111839,"url":"https://github.com/xastt/skillswap","last_synced_at":"2026-04-13T18:02:37.161Z","repository":{"id":276280136,"uuid":"928791569","full_name":"Xastt/SkillSwap","owner":"Xastt","description":"Микросервисное веб-приложение поиска навыков \"SkillSwap\"","archived":false,"fork":false,"pushed_at":"2025-03-19T09:00:28.000Z","size":3576,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T10:18:08.133Z","etag":null,"topics":["docker","flyway-migrations","kafka","spring","spring-security"],"latest_commit_sha":null,"homepage":"","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/Xastt.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":"2025-02-07T08:48:01.000Z","updated_at":"2025-03-25T12:22:23.000Z","dependencies_parsed_at":"2025-02-25T19:19:39.056Z","dependency_job_id":"28f46086-f28b-43ab-9974-71f1c3359381","html_url":"https://github.com/Xastt/SkillSwap","commit_stats":null,"previous_names":["xastt/skillswap"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xastt%2FSkillSwap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xastt%2FSkillSwap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xastt%2FSkillSwap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xastt%2FSkillSwap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Xastt","download_url":"https://codeload.github.com/Xastt/SkillSwap/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246794210,"owners_count":20834938,"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":["docker","flyway-migrations","kafka","spring","spring-security"],"created_at":"2025-02-08T01:28:17.042Z","updated_at":"2026-04-13T18:02:37.125Z","avatar_url":"https://github.com/Xastt.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SkillSwap v3.0\n\n\n***Работа проекта:***\n\n- Веб-приложение SkillSwap предоставляет пользователям уникальную возможность находить или размещать навыки,\n  по которым они хотят получить или провести урок. \n\n\n- **v2.0**: Архитектура системы построена на основе двух микросервисов. Первый отвечает за реализацию ключевых \nфункций приложения, а второй обеспечивает рассылку уведомлений по электронной почте. Пользователи получают \nприветственное письмо после регистрации, а также оповещения, если кто-то заинтересовался их предложением. \nВзаимодействие между микросервисами осуществляется через брокер сообщений Kafka.\n\n\n- Доступ к платформе предоставляется только после прохождения первичной регистрации, включающей стандартную \nаутентификацию и ввод личных данных. После этого пользователь может либо найти нужный навык, либо предложить \nсвой. В целях безопасности каждый пользователь имеет право изменять только свои персональные данные. Для \nреализации этого функционала используется Spring Security: система сравнивает данные аутентифицированного \nпользователя из контекста с данными на платформе. Если они совпадают, доступ разрешен; в противном случае пользователь \nперенаправляется на страницу с предупреждением.\n  \n\n- Для удобства пользователей на платформе реализован поиск по названию навыка. Также предусмотрена возможность \nредактирования предлагаемых услуг (цены, описания) и личных данных. \n\n\n-  **v3.0**: Если пользователь выбирает навык и желает связаться с его обладателем, платформа предоставляет \nконтактные данные и открывает транзакцию со статусом IN_PROCESS. В зависимости от итогового статуса сделки \n(CANCELED или COMPLETED), пользователю предлагается оставить отзыв и оценить наставника. Рейтинг преподавателя \nформируется на основе всех полученных оценок, что помогает другим пользователям выбирать качественные услуги. \nЧтобы предотвратить накрутку рейтинга, система проверяет, что сделка заключается между разными пользователями. \nВ случае попытки обмана система перенаправляет на страницу с предупреждением.\n\n\n - **Обработка ошибок**: Все действия в приложении логируются. В случае возникновения ошибки, она передается \nна уровень контроллера, где обрабатывается, а пользователь видит страницу с предложением повторить попытку.\n\n---\nВ начале работы над проектом были составлены следующие UML-диаграммы:\n- Диаграмма вариантов использования\n\n  ![фото](SkillSwap/img/UseCaseDiagram.png)\n- Диаграмма классов\n\n  ![фото](SkillSwap/img/ClassDiagram.png)\n- Диаграмма базы данных\n\n  ![фото](SkillSwap/img/ERDDiagram.png)\n- Диаграмма последовательности\n\n  ![фото](SkillSwap/img/SequenceDiagram.png)\n\n---\n\n### Использованные технологии:\n1. Java \n2. Spring\n3. Spring Boot \n4. Spring Security \n5. Spring Validator\n6. Spring Data\n7. Spring Mail\n8. Kafka\n9. Docker\n10. Hibernate\n11. PostgreSQL\n12. Flyway\n13. HTML, CSS, Thymeleaf\n14. Maven\n15. Slf4j\n16. Flyway\n---\n### Интерфейс приложения:\n\n1. В начале пользователей встречает приветственная страница и просит пройти регистрацию.\n   \n    ![фото](SkillSwap/img/welcomePage.png)\n- Регистрация\n\n  ![фото](SkillSwap/img/RegistrationForm.png)\n- Вход в систему + демонстрация валидации\n\n  ![фото](SkillSwap/img/LogInForm.png)\n- Ввод личных данных\n\n  ![фото](SkillSwap/img/newPers.png)\n- Валидация личных данных\n\n  ![фото](SkillSwap/img/PersInfDataValidation.png)\n- Приветственное письмо\n\n  ![фото](SkillSwap/img/HelloMsg.png)\n\n2. После прохождения регистрации и аутентификации пользователь имеет полный\nдоступ к платформе и ее содержимому.\n- Пользователи приложения\n\n  ![фото](SkillSwap/img/persInfIndex.png)\n- Просмотр чужих личных данных\n\n  ![фото](SkillSwap/img/AccessToSomethingElseData.png)\n- Просмотр своих личных данных\n\n  ![фото](SkillSwap/img/PersonShow.png)\n- Изменение личных данных\n\n  ![фото](SkillSwap/img/PersonEdit.png)\n- Страница с навыками\n\n  ![фото](SkillSwap/img/profInfIndex.png)\n- Добавление профессиональных данных(для преподавателей)\n\n  ![фото](SkillSwap/img/newSkill.png)\n- Изменение профессиональных данных(для преподавателей)\n\n  ![фото](SkillSwap/img/EditProfInf.png)\n3. Далее пользователь может найти нужный навык, связаться с преподавателем\nи в случае успеха оставить ему отзыв.\n- Поиск навыка\n\n  ![фото](SkillSwap/img/FindSkill.png)\n- Просмотр данных навыка\n\n  ![фото](SkillSwap/img/SkillShowExchange.png)\n- Страница личных контактов\n\n  ![фото](SkillSwap/img/skillExchangeYesNo.png)\n- Письмо с оповещением о заинтересованности в предоставляемом навыке\n\n  ![фото](SkillSwap/img/IntrestedSkill.png)\n- Попытка сделать сделку самому с собой\n\n  ![фото](SkillSwap/img/GetContactsWithYourSelf.png)\n- Случай, если сделка не состоялась\n\n  ![фото](SkillSwap/img/skillExchangeNo.png)\n- Случай, если сделка состоялась\n\n  ![фото](SkillSwap/img/Review.png)\n- Страница после отправки отзыва\n\n  ![фото](SkillSwap/img/ReviewSubmitRes.png)\n4. Обработка ошибок\n- Страница, появляющаяся при возникновении ошибки\n  ![фото](SkillSwap/img/ExceptionHandling.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxastt%2Fskillswap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxastt%2Fskillswap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxastt%2Fskillswap/lists"}