Skip to content

kny3037/mutsa-sns

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

104 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🦁멋사스네스 (Mutsa SNS)

멋쟁이 사자처럼 백엔드 스쿨 2기에서 진행하는 회원가입, 로그인, 글쓰기, 댓글, 좋아요, 마이 피드, 알림 등의 기능이 있는 SNS 입니다.

💻Swagger

http://ec2-52-78-186-104.ap-northeast-2.compute.amazonaws.com:8081/swagger-ui/

❗EndPoint

User
  • 회원 가입 (POST /api/v1/users/join)
    회원가입 성공 시 "회원가입 성공" 을 리턴한다.
  • 로그인 (POST /api/v1/users/login)
    Spring Security와 JWT를 사용하여 구현하며 로그인 성공 시 `token` 을 리턴한다.
  • Post
  • 글 쓰기 (POST /api/v1/posts)
    회원만이 글 작성을 할 수 있다.
  • 글 상세 (GET /api/v1/posts/{postId})
    회원, 비회원 모두 볼 수 있고 글의 제목, 내용, 글쓴이, 작성날짜, 마지막 수정날짜가 표시된다.
  • 글 수정 (PUT /api/v1/posts/{postId})
    ADMIN회원이나 글을 작성한 일반회원이 글에 대한 수정을 할 수 있다.
  • 글 삭제 (DELETE /api/v1/posts/{postId})
    ADMIN회원이나 글을 작성한 일반회원이 글에 대한 삭제를 할 수 있다.
  • 글 리스트 (GET /api/v1/posts)
    1. 회원, 비회원 모두 볼 수 있으며 제목, 글쓴이, 마지막 수정날짜가 표시된다.
    2. 목록 기능은 페이징 기능이 포함된다. (Pageable 사용) 한 페이지당 default 피드 갯수가 20개.
  • Comment
  • 댓글 쓰기 (POST /posts/{postsId}/comments)
    회원만이 댓글 작성을 할 수 있다.
  • 댓글 수정 (PUT /posts/{postId}/comments/{id})
    댓글 수정은 댓글을 작성한 회원만이 권한을 가진다.
  • 댓글 삭제 (DELETE /posts/{postsId}/comments/{id})
    댓글 삭제는 댓글을 작성한 회원만이 권한을 가진다.
  • 댓글 목록 조회 (GET /posts/{postId}/comments[?page=0])
    Pageable을 사용하여 10개씩 최신순으로 페이징한다.
  • Like
  • 좋아요 누르기 (POST /posts/{postId}/likes)
    회원만이 좋아요를 누를 수 있다.
  • 좋아요 개수 (GET /posts/{postsId}/likes)
    좋아요 개 수를 확인할 수 있다.
  • MyFeed
  • 조회 기능 (GET /posts/my)
    로그인된 유저만의 피드목록을 필터링 하는 기능 (Pageable 사용)
  • Alarm
  • 알람 리스트 (GET /alarms)
    글에 좋아요, 댓글이 달리면 알람이 오고 알람을 리스트로 확인 가능한 기능

  • 📑ERD

    2차 ERD 다이어그램


    ✅체크 리스트

    AWS EC2 Docker 배포

    Swagger 사용

    Gitlab CI/CD 적용

    1주차 기능 코드 작성

    1주차 기능 테스트 코드 작성

    2주차 기능 코드 작성

    2주차 기능 테스트 코드 작성



    ❓접근 방법

    Post에서 글 리스트는 로그인을 하지 않아도 가능하게 했으며 글 작성, detail은 로그인 한 사용자만 볼 수 있게 처리했습니다.
    update와 delete는 로그인 한 사용자와 글을 적은 사용자의 아이디가 같을 경우에만 가능하도록 하였습니다.

    User에서는 회원가입은 userName과 password를 입력하여 가입하고 userName이 겹칠 시 DUPLICATED_USER_NAME 에러가 발생되게 하였습니다.
    로그인을 할 때 Spring Security와 JWT를 사용하여 로그인이 성공 할 시에 토큰을 리턴하게 하였습니다.

    Comment에서는 댓글 리스트는 로그인을 하지 않아도 가능하게 했으며 댓글 작성, 수정 및 삭제는 로그인 한 사용자만 가능하게 처리했습니다.

    MyFeed는 로그인 한 사용자가 본인이 작성한 글 리스트를 볼 수 있게끔 하였습니다.

    Alarm은 글에 달린 댓글, 좋아요를 알람으로 처리했으며, 로그인 한 사용자만 본인의 알람을 확인 가능하게 하였습니다.



    💬특이사항

    1차 미션
    배웠던 내용과 새로운 내용들을 합쳐 혼자서 처음부터 만들어보려니 쉽지 않았습니다. 기능들은 그래도 수업을 들었던 내용을 생각해보며 조금씩 도전해봤지만 Test코드는 정말 힘들었습니다. 수업 때 적었던 코드와 검색을 하며 거의 다 작성한 것 같아 다음 Test코드는 혼자서 코드를 짜볼 수 있게 더 노력해야겠다는 마음이 들었습니다.
    2차 미션
    알람과 test 코드를 작성하는데 많은 어려움을 겪었습니다. 새롭게 적용해야 하는 것들이 많았고 제대로 이해하지 못하면 활용하기 어려운 것들도 많았기 때문에 프로젝트를 진행하며 공부했던 내용도 많았던 거 같습니다. 1차 미션 때보다는 조금 더 코드의 가독성을 높이려 노력했고 1차 미션 때 팀원분들께 리뷰를 받았던 부분들도 적용해보려 노력하였습니다. 아직 모르는 게 많다는 생각이 들어 더 공부하고 싶다는 마음이 들었습니다.😊

    About

    No description, website, or topics provided.

    Resources

    Stars

    0 stars

    Watchers

    1 watching

    Forks

    Releases

    No releases published

    Packages

     
     
     

    Contributors