{"id":25065932,"url":"https://github.com/lkdcode/wanted-pre-onboarding-backend","last_synced_at":"2025-10-17T13:26:21.766Z","repository":{"id":185519189,"uuid":"673635131","full_name":"lkdcode/wanted-pre-onboarding-backend","owner":"lkdcode","description":null,"archived":false,"fork":false,"pushed_at":"2023-08-16T02:18:31.000Z","size":168,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-31T14:04:33.089Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/lkdcode.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":"2023-08-02T04:46:35.000Z","updated_at":"2023-08-02T06:19:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"fc1160f8-6709-4a03-8e57-df18007187b6","html_url":"https://github.com/lkdcode/wanted-pre-onboarding-backend","commit_stats":null,"previous_names":["lkdcode/wanted-pre-onboarding-backend"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/lkdcode/wanted-pre-onboarding-backend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkdcode%2Fwanted-pre-onboarding-backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkdcode%2Fwanted-pre-onboarding-backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkdcode%2Fwanted-pre-onboarding-backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkdcode%2Fwanted-pre-onboarding-backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lkdcode","download_url":"https://codeload.github.com/lkdcode/wanted-pre-onboarding-backend/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkdcode%2Fwanted-pre-onboarding-backend/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279352078,"owners_count":26154070,"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-10-17T02:00:07.504Z","response_time":56,"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":[],"created_at":"2025-02-06T19:55:45.780Z","updated_at":"2025-10-17T13:26:21.750Z","avatar_url":"https://github.com/lkdcode.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 원티드 프리온보딩 백엔드 인턴십 - 선발 과제\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n### 지원자의 성명\n\n- 이기덕\n\n### 애플리케이션의 실행 방법 (엔드포인트 호출 방법 포함)\n\n로컬환경에서 실행\n\n- POST : localhost:8181/api/members/signin : 로그인\n- POST : localhost:8181/api/members/signup : 회원가입\n- GET : localhost:8181/api/posts/list : 게시판 전체 조회\n- GET : localhost:8181/api/posts/{idx} : 특정 게시판 조회\n- POST : localhost:8181/api/posts : 게시판 작성\n- DELETE : localhost:8181/api/posts/{id} : 특정 게시판 삭제\n- PUT : localhost:8181/api/posts : 특정 게시판 수정\n\n### 데이터베이스 테이블 구조\n\n```mermaid\nerDiagram\n    TB_MEMBER ||--o{ TB_POST: MEMBER-POST\n\n    TB_MEMBER {\n        id BIGINT PK \"AUTO_INCREMENT\"\n        created_at DATETIME(6)\n        updated_at DATETIME(6)\n        email VARCHAR(255) UK \"NOT NULL\"\n        name VARCHAR(255) \"NOT NULL\"\n        password VARCHAR(255) \"NOT NULL\"\n        status VARCHAR(255) \"NOT NULL\"\n    }\n\n    TB_POST {\n        id bigint PK \"AUTO_INCREMENT\"\n        created_at DATETIME(6)\n        updated_at DATETIME(6)\n        title VARCHAR(255) \"NOT NULL\"\n        content VARCHAR(2000) \"NOT NULL\"\n        member_id BIGINT \"NOT NULL\"\n    }\n```\n\n### 구현한 API의 동작을 촬영한 데모 영상 링크\n\nhttps://github.com/lkdcode/wanted-pre-onboarding-backend/assets/110602069/ca3133b5-cd90-48d3-9d13-b5acab7e950c\n\n### 구현 방법 및 이유에 대한 간략한 설명\n\n- 회원가입\n    - 이름, 이메일, 비밀번호를 입력하여 회원가입을 한다.\n    - 이메일은 중복을 허용하지 않고 이메일 양식을 따른다.\n    - 비밀번호는 8자 이상으로 암호화되어 저장한다.\n- 로그인\n    - 이메일, 비밀번호를 입력하여 로그인을 한다.\n    - 이메일 혹은 비밀번호가 일치하지 않을 경우 클라이언트에게 메시지 전달을 한다.\n    - 보안상 이유로 존재하지 않는 회원인지, 비밀번호가 틀린건지 정확하게 알려주지 않는다.\n    - 로그인에 성공할 경우 토큰을 발급한다.\n- 게시글 전체 조회\n    - 토큰 유효성 검사 후 게시글을 조회한다.\n- 게시글 작성\n    - 토큰 유효성 검사 후 게시글을 작성한다.\n- 게시글 삭제\n    - 토큰 유효성 검사 후 현재 게시글의 작성자와 일치할 경우 삭제한다.\n- 게시글 수정\n    - 토큰 유효성 검사 후 현재 게시글의 작성자와 일치할 경우 수정한다.\n- Jwt\n    - 로그인에 성공한 회원에게만 토큰을 발급한다.\n    - 요청이 오기전 필터에서 유효성 검사를 진행하고 컨트롤러에서 사용할 정보를 넘겨준다.\n\n### API 명세(request/response 포함)\n\n- POST : localhost:8181/api/members/signin : 로그인\n    - request : String email, String rawPassword\n    - response : String token\n- POST : localhost:8181/api/members/signup : 회원가입\n    - request : String name, String email, String rawPassword\n    - response : boolean success\n- GET : localhost:8181/api/posts/list : 게시판 전체 조회\n    - request : Pagealbe pageable\n    - response : List`\u003cPostResponseDTO\u003e` list\n- GET : localhost:8181/api/posts/{idx} : 특정 게시판 조회\n    - request : Long id\n    - response : Long id, String title, String content, String name, Instant createdAt, Instant updatedAt\n- POST : localhost:8181/api/posts : 게시판 작성\n    - request : String title, String content, CustomUserDetails userDetails\n    - response : Boolean success\n- DELETE : localhost:8181/api/posts/{id} : 특정 게시판 삭제\n    - request : Long id, CustomUserDetails userDetails\n    - response : Boolean success\n- PUT : localhost:8181/api/posts : 특정 게시판 수정\n    - request : Long postId, String updateTitle, String updateContent, CustomUserDetails userDetails\n    - response : Boolean success\n\n### 가산점\n\n- 요구사항에 맞게 API를 만든 후에 아래의 기능을 추가할 경우 가산점이 주어집니다.\n    - 통합 테스트 또는 단위 테스트 코드를 추가한 경우\n    - docker compose를 이용하여 애플리케이션 환경을 구성한 경우 (README.md 파일에 docker-compose 실행 방법 반드시 기입)\n    - 클라우드 환경(AWS, GCP)에 배포 환경을 설계하고 애플리케이션을 배포한 경우 (README.md 파일에 배포된 API 주소와 설계한 AWS 환경 그림으로 첨부)\n\n### docker compose를 이용하여 애플리케이션 환경을 구성한 경우 (README.md 파일에 docker-compose 실행 방법 반드시 기입)\n\n- Terminal : `docker-compose up -d`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flkdcode%2Fwanted-pre-onboarding-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flkdcode%2Fwanted-pre-onboarding-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flkdcode%2Fwanted-pre-onboarding-backend/lists"}