{"id":27423432,"url":"https://github.com/sosow0212/community","last_synced_at":"2025-07-26T07:32:56.802Z","repository":{"id":38337230,"uuid":"495888317","full_name":"sosow0212/community","owner":"sosow0212","description":"Community API Server","archived":false,"fork":false,"pushed_at":"2023-06-18T14:28:56.000Z","size":526,"stargazers_count":16,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-14T10:52:59.895Z","etag":null,"topics":["java","jpa","junit5","jwt","mysql","redis","spring","spring-boot","spring-security","swagger","validation"],"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/sosow0212.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,"zenodo":null}},"created_at":"2022-05-24T15:44:42.000Z","updated_at":"2024-04-25T14:58:05.000Z","dependencies_parsed_at":"2025-04-14T10:45:44.187Z","dependency_job_id":"765edea0-15de-453a-9461-9e4fcae84fbf","html_url":"https://github.com/sosow0212/community","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sosow0212/community","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sosow0212%2Fcommunity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sosow0212%2Fcommunity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sosow0212%2Fcommunity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sosow0212%2Fcommunity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sosow0212","download_url":"https://codeload.github.com/sosow0212/community/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sosow0212%2Fcommunity/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267135791,"owners_count":24041106,"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","status":"online","status_checked_at":"2025-07-26T02:00:08.937Z","response_time":62,"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":["java","jpa","junit5","jwt","mysql","redis","spring","spring-boot","spring-security","swagger","validation"],"created_at":"2025-04-14T10:45:41.268Z","updated_at":"2025-07-26T07:32:56.750Z","avatar_url":"https://github.com/sosow0212.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Community\n\n\u003chr\u003e\n\n### 진행 사항\n\n- [X] 기본적인 API 설계 완료 (Done 2022.08)\n- [X] 레거시 프로젝트 클린코드 적용과 리팩토링 작업 시작 (Done 2022.11.28)\n- [X] Docker, Docker-compose를 이용한 환경 세팅 (Done 22.12.26)\n- [X] 1차 클린코드 리팩토링 작업 완료 \u0026 도메인 메서드 분리 작업 (Done 22.12.26)\n- [X] 남은 도메인 단위 테스트 작성 (Done 22.12.26)\n- [X] 확장성을 위해 Domain 기본키 Long 타입으로 리팩토링 작업 (Done 22.12.31)\n- [X] User 도메인의 네이밍을 Member로 모두 변경 (Done 23.01.01)\n- [X] 페이징 처리 리팩토링 작업 (Done 23.01.03)\n- [x] 로그인 중복 로직 제거 및 빠른 인증 가능하도록 HandlerMethodArgumentResolver로 리팩토링 (Done 23.05.04)\n- [X] Redis를 이용한 포인트 랭킹 API 추가 (Done 23.01.18)\n- [ ] 기존에 해결한 N+1 문제 다른 방식으로 해결하기\n- [x] 2차 클린코드 리팩토링 작업, 테스트 다양한 케이스 추가 및 커버리지 높이기 (Done 23.04.04)\n- [ ] Rest Docs 적용\n- [ ] 테스트코드 리팩토링 작업 (통합, 단위, ...)\n- [ ] 성능 개선\n- [ ] Jenkins 적용\n- [ ] AWS HTTPS 배포\n\n### 프로젝트 설명\n\n- 커뮤니티 API 서버 제작 개인 프로젝트입니다.\n- 성능 튜닝을 위해 JPA 설계와 테이블 설계에 집중했습니다.\n- 여러가지 기술 적용으로 역량 상승을 위해 제작한 프로젝트입니다.\n- 클린코드 원칙에 입각하여, 프로젝트를 타 개발자도 쉽게 읽을 수 있도록 노력했습니다.\n- 테스트 코드의 다양한 케이스를 작성하며 서비스의 안정도, 리팩토링 속도, 커버리지를 높이기 위해 노력했습니다.\n\n### Dependency\n\n- Spring Web\n- JPA\n- JUnit5 Test\n- Spring Security\n- JWT\n- MySQL Driver\n- Validation\n- Swagger\n- Redis\n- Docker, Docker-compose\n\n### Git Convention\n\n- feat : 기능추가\n- fix : 버그 수정\n- refactor : 리팩토링, 기능은 그대로 두고 코드를 수정\n- style : formatting, 세미콜론 추가 / 코드 변경은 없음\n- chore : 라이브러리 설치, 빌드 작업 업데이트\n- docs : 주석 추가 삭제, 문서 변경\n\n### API 설명\n\n- Auth : 회원가입 및 Spring Security + JWT 로그인 및 Redis를 이용해서 RefreshToken 관리 및 AccessToken 재활성화\n- Member : 전체 및 개별 유저 조회, 즐겨찾기 한 글 목록 조회, 유저 정보 관련 CRUD\n- Category : 계층형 카테고리 구현\n- Board : 게시글 CRUD 및 검색 기능 추가, 이미지 업로드, 게시글 좋아요 및 즐겨찾기 기능\n- Comment : 댓글 조회, 작성, 삭제\n- Message : 쪽지 CRUD, 받은 쪽지와 보낸 쪽지 사이 둘다 삭제되면 테이블에서 Column 제거\n- Report : 유저 및 게시글 신고 관리 기능\n- Admin : 관리를 위한 백오피스 구현\n- Point : Redis를 이용해서 포인트 제도 도입\n\n\u003cimg width=\"1217\" alt=\"image\" src=\"https://member-images.githubusercontent.com/63213487/186867100-8983c4f6-98cf-414f-b9b6-df5ab0c05624.png\"\u003e\n\n### JUnit5 테스트\n\n- JUnit5 를 이용해서 Domain, Service, Controller 레이어의 단위테스트를 진행했습니다.\n\n\u003cimg width=\"323\" alt=\"image\" src=\"https://member-images.githubusercontent.com/63213487/186866768-4e091e48-e3ee-43c1-86db-aa5c81069227.png\"\u003e \n\u003cimg width=\"316\" alt=\"image\" src=\"https://member-images.githubusercontent.com/63213487/186866894-e44c50e7-572b-4298-ad84-3e1323ce5373.png\"\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsosow0212%2Fcommunity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsosow0212%2Fcommunity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsosow0212%2Fcommunity/lists"}