Skip to content

원티드 개인과제입니다. SNS의 백엔드를 구현합니다. 유저는 서비스에 접속하여 게시물을 업로드할 수 있고, 다른 사람의 게시물을 조회하여 좋아요를 누를 수 있습니다.

Notifications You must be signed in to change notification settings

F5-Refresh/kiwon-sns

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💌 SNS 프로젝트

원티드 프리온보딩에서 진행한 과제, SNS 프로젝트 입니다.


개발기간 : 7.20 ~ 7.27 ~

고도화예정

  • 게시물 테스트 코드 작성
  • 로그아웃 redis
  • aws rds -> ok!

📢서비스 개요

  • 본 서비스는 SNS(Social Networking Service) 입니다.

✔ 유저는

  • 서비스에 접속하여 게시물을 업로드하고 수정, 삭제 및 복구 할 수 있습니다.
  • 다른 사람의 게시물을 확인하고, 좋아요를 누를 수 있습니다.
  • 원하는 대로 정렬하거나 키워드를 검색할 수 있습니다.

🔨 Stack


🎫ERD

image


🔑 API docs

Action Method Url Permission
회원가입 POST users/signup/ AllowAny
로그인 POST users/signin/ AllowAny
게시글 리스트 GET article/list/ AllowAny
게시글 작성 POST article/ IsAuthenticated
게시글 상세 GET article/<int: article_id> IsAuthenticated
게시글 수정 PATCH article/<int: article_id> IsAuthenticated
게시글 삭제 및 복구 PATCH aritcle/<int: article_id>/delete_on IsAuthenticated
좋아요 및 좋아요 취소 PATCH aritcle/<int: article_id>/like IsAuthenticated


🎇구현

1. 회원가입

  • 유저를 생성합니다.
  • 이메일로 가입 합니다.

2. 로그인

  • JWT 인증방식 로그인을 구현하였습니다. (Simple JWT사용)
  • 로그아웃은 프론트에서 처리합니다.

3. 게시글 생성, 수정, 삭제


✔ 유저는

  • 제목, 내용, 해시태그를 입력하여 게시글을 생성할 수 있습니다.
    유저는 해당 API 를 요청한 인증정보에서 추출하여 등록 합니다.
    해시태그는 #으로 시작합니다.
    아래와 같이 request body에 data를 보냅니다.
{
    "title":"toto",
    "content":"tutu",
    "hashtags" : [
                {"hashtag" : "#test1"},
                {"hashtag" : "#test2"}
                ]
}

✔ 작성자는,

  • 제목, 내용, 해시태그를 수정할 수 있습니다.
  • 삭제하고, 삭제한 게시글을 복구 할 수 있습니다.

4. 게시글 상세 조회


✔ 유저는

  • 아래와 같이 게시글을 상세 조회할 수 있습니다.
  • 작성자를 포함한 사용자는 본 게시글에 좋아요를 누를 수 있습니다.
    좋아요를 취소할 수 있습니다.
  • 작성자 포함한 사용자가 게시글을 상세보기 하면 조회수가 1 증가합니다.
    횟수는 제한이 없습니다.

{
    "name": "kiwon",
    "title": "Harry Potter and the Goblet of Fire",
    "content": "hahahahah",
    "hashtags": [
        {
            "hashtag": "harry"
        },
        {
            "hashtag": "potter"
        }
    ],
    "total_likes": 2,
    "view": 5,
    "delete_flag": false,
    "created": "2022-07-22T17:38:28.737932Z"
}

5. 게시글 목록


✔ 유저는

  • 정렬
    ?ordering=total_likes
    원하는 값으로 게시글 목록을 정렬 할 수 있습니다.
    작성일, 좋아요, 조회수 중 1개를 선택할 수 있습니다.
    default 값은 작성일입니다.
    오름차 순, 내림차 순을 선택할 수 있습니다.

  • 검색
    ?search=good
    사용자는 입력한 키워드로 해당 키워드를 포함한 제목을 조회할 수 있습니다.

  • 페이지
    ?limit=5&offset=10
    사용자는 1페이지 당 게시글 수를 조정할 수 있습니다.
    default값은 10건입니다.

  • 필터링
    ?hashtags=harry
    사용자는 지정한 키워드로 해당 키워드를 포함한 게시물을 필터링할 수 있습니다.


위에서 언급한 4가지 동작은 동시에 적용될 수 있습니다.


🚩 테스트

  • 회원가입 테스트 : 4개
  • 로그인 테스트 : 3개
  • 게시글 테스트 : 3개~ 추가 예정

🛫배포


nginxgunicorn을 이용하여 aws ec2서버에서 django 프로젝트를 배포하였습니다.
db는 로컬에서 개발할 땐 sqlite를 사용하고, 배포할 때는 mysql을 사용하였습니다.


아래에 해당 서버에 접속하여 postman과 웹에서 테스트한 것을 첨부하겠습니다.
지금은 비용 문제로 서버를 중단했습니다.


로그인

image

게시글 생성

image

게시글 리스트 & 필터링

해시태그 키워드 cat을 검색하여 조회수 내림차순으로 정렬한 모습입니다.


image


필터링은 아래와 같이 볼 수 있습니다.

image

About

원티드 개인과제입니다. SNS의 백엔드를 구현합니다. 유저는 서비스에 접속하여 게시물을 업로드할 수 있고, 다른 사람의 게시물을 조회하여 좋아요를 누를 수 있습니다.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published