Giter Club home page Giter Club logo

litebook's Introduction

litebook

Social Network Service (Timeline)

친구와 가족, 같은 관심사를 가진 사람들과 소통할 수 있는
좋아하는 컨텐츠 업로더를 구독하거나 나의 이야기를 공유할 수 있는 서비스입니다.


해당 프로젝트는 2020-NAVER-CAMPUS-HACKDAY와 같은 주제로 비슷한 기능, 기술로 구현되었고
https://github.com/hyerin6/HACKDAY에서 확인할 수 있습니다.


프로젝트 목적은 학습으로 SNS 프로젝트는 백엔드에 더 집중하기 위해
앞으로는 https://github.com/hyerin6/SNS 여기서 더 develop 합니다!


프로젝트 진행 과정


  • DB 설계 과정 보러가기 : wiki

시연 영상

litebook's People

Contributors

hyerin6 avatar dependabot[bot] avatar

Watchers

Fitz (Joongsoo.Park) avatar  avatar

litebook's Issues

users/profile : 게시글 작성 및 작성글 출력(infinite scroll)

users/profile

MENU : POSTS

(1) 사용자가 로그인에 성공하면 Profile 화면으로 이동합니다.
(2) 로그인한 본인만 Profile의 POSTS menu에서
글을 작성하고 작성한 글 목록을 확인할 수 있습니다.
(3) 글 목록은 5개씩 호출되어 출력되며, infinite scroll로 구현합니다. (ajax 호출)

게시글 작성 기능 구현

  • 사용자가 게시글을 작성하기 위해 Post 테이블이 필요합니다.

  • Post entity, controller, service, reposiroty 등을 구현합니다.

  • jsp도 해당 기능에 맞게 수정합니다.

  • 사용자는 user/profilePOSTS 메뉴에서 글 작성이 가능합니다.

게시글 좋아요 기능

Likes

  • 게시글에 '좋아요(or 추천, 공감)' 기능을 구현합니다.

  • 사용자는 한 게시글에 한번만 '좋아요'를 누를 수 있습니다.

USER Entity 및 sign up, sign in 구현

USER Entity

서비스에서 필요한 uid, name, profile image만 저장한다.

sign up

회원 가입이 완료되면 uid와 함께 유저 정보 DB에 저장

sign in

client에서 uidaccess token을 전달받아 kakao profile과 DB에서 USER 조회 후 비교

  • 일치하면 session 로그인
  • 불일치, not found 로그인 실패
  • 로그인된 사용자만 사용 가능한 api는 session 로그인 interceptor 필요

구독 기능 구현

Follow

  • Follower : 나를 팔로우하는 사람

  • Following : 내가 팔로우하는 사람

profile의 메뉴 FOLLOWERFOLLOWING에서 구독 정보를 확인할 수 있게 구현합니다.

타임라인 구현

  • 내가 구독한 사용자들의 게시글 목록

  • 타임라인에서 프로필 사진 옆 name 을 클릭하면 해당 사용자가 작성한 글 목록 페이지로 이동합니다.

로그인 기능 구현

  • AuthenticationProvider을 구현 (예정)

  • 이메일 인증이 완료된 사용자만 로그인 가능하기 때문에
    아이디, 비밀번호 뿐만 아니라 enabled도 검사합니다.

회원가입 기능 구현

  • user : controller, service, repository

  • 이메일 인증 기능과 회원가입 로직, 로그인 로직까지 이어지는지 확인해야 합니다.

  • DB에 user가 입력한 정보가 저장되는지 확인해야 합니다.

user profile 화면 구현

  • 로그인한 유저에게 보이는 화면 구현

  • 네비게이션바 - 프로필, 포스트, 타임라인, 팔로워, 팔로잉, 검색

  • 유저 정보를 수정할 수 있는 버튼

위 기능들을 수행할 수 있게 화면을 구현합니다.

error 페이지 생성

잘못된 url 접근 혹은 서비스 실패 시 이동할 에러 페이지를 생성하고
사용자가 다른 서비스를 이용할 수 있는 페이지로 이동할 수 있게 구현합니다.

follow(구독), 취소 기능 구현

following

: 내가 구독한 사용자
사용자는 자신이 관심있는 업로더를 팔로우할 수 있으며
자신이 팔로우한 사용자의 목록을 확인할 수 있습니다.

follower

: 나를 구독하는 사용자
나에게 관심 있는 사용자는 나를 팔로우할 수 있으며
나를 팔로우한 사용자의 목록을 확인할 수 있습니다.


예시) A만 B를 구독하고 있다면

  • A의 팔로잉 목록: B가 있음
  • B의 팔로잉 목록: A가 없음
  • A의 팔로워 목록: B가 없음
  • B의 팔로워 목록: A가 있음

[web] 구현 기능 리스트

사용자 관리

  • 이메일 인증으로 회원가입이 가능, Redis 이용하여 인증 토큰 저장
  • 회원가입 시 비밀번호, 이름, 전화번호, 프로필 사진을 입력받음
  • spring form validationd으로 입력된 오류 자동 검사
  • Spring Security를 사용하여 로그인/로그아웃 구현
  • 사용자 정보를 수정이 가능하고 탈퇴 가능

스크린샷 2021-05-14 오후 11 33 46
스크린샷 2021-05-14 오후 11 34 23
스크린샷 2021-05-14 오후 11 34 43
스크린샷 2021-05-14 오후 11 35 34


검색 & 구독

원하는 사용자를 검색하여 구독, 구독 취소할 수 있고 구독한 사용자 리스트를 확인할 수 있음

스크린샷 2021-05-14 오후 11 36 38


게시글 업로드, 수정, 삭제

게시글을 업로드, 수정, 삭제할 수 있습니다.

스크린샷 2021-05-14 오후 11 38 16
스크린샷 2021-05-14 오후 11 38 35
스크린샷 2021-05-14 오후 11 38 44


타임라인

나의 타임라인, 특정 사용자 타임라인, 구독 타임라인

  • 타임라인은 ajax로 호출로 페이징 구현
  • No offset 기반으로 성능 개선 및 무한 스크롤 페이징 구현
  • JPQL로 쿼리 직접 작성

스크린샷 2021-05-14 오후 11 42 38


게시글 좋아요

게시글에 좋아요를 누를 수 있음

스크린샷 2021-05-14 오후 11 39 51
스크린샷 2021-05-14 오후 11 39 59


CI/CD

  • Jenkins 사용
  • 직접 스크립트 작성

80232609-24db8400-8690-11ea-8876-3114a6e2b158

사용자 이메일 인증

  • spring smtp 사용하여 구현

  • 이메일 인증은 GET 방식으로 구현 : 사용자가 이미지 혹은 url 클릭

  • 이메일 본문 내용은 로그인을 설명하는 이미지, 로그인할 수 있는 url 로 구성

댓글 기능 구현

Comments

  • 게시글에 댓글을 작성할 수 있는 기능 생성

  • 수정 기능은 없고, 생성, 삭제 기능만 구현합니다.

  • 댓글에 사용자 프로필 사진, 이름 등의 정보를 함께 출력해줍니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.