Coder Social home page Coder Social logo

simpleqna's People

Contributors

changhwa avatar devsejong avatar scarfunk avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

scarfunk changhwa

simpleqna's Issues

task : 인프라 구성

서버 구성

  • 운영 서버는 이중화 할 것
  • 운영과 별도로 개발(테스트계)가 하나 필요함
  • 총 3개의 박스가 필요할 듯..
  • WAS는 톰캣을 활용(embedded로 가능한지(spring boot 사용) 확인할 것)

DB

  • DB는 mysql을 사용.
  • DB마이그래이션을 할 수 있도록 flyway 설정 필요

빌드/배포

  • travis CI로 빌드 및 검증
  • 배포는 젠킨스 사용. 빌드후에 자바 실행.
  • DB설정등은 소스에 들어가지 않도록 할 것.

기타

  • 검색환경 구성을 위해서 elastic search필요. (또는 다음 릴리즈???)
    • 오늘 엘라스틱서치 + 스프링데이터 세미나 후 어떻게 할지 고민할 것

task : [질문] 질문 상세 페이지 구현

  • /questions/{questionId}에서는 질문의 상세내용과 답변리스트를 확인할 수 있다.

현재상황

  • 질문을 볼 수 있음.
  • 답변리스트가 노출됨
  • 사용자가 작성한 질문에 한해서 편집 및 삭제버튼이 보임.

TODO

  • 태그, 사용자 정보, 날짜, 점수를 구현하여 화면에 보여주어야 한다.
  • 답변은 해당 답변을 작성한 사용자만 수정할 수 있음.
  • 답변은 로그인한 사용자만 작성할 수 있음.

feature : 질문

  • 질문에 대해서 CRUD가 가능하다.
    • 질문에는 제목, 태그, 작성자, 작성일, 본문이 들어간다.
    • /questions로 접속할 경우 질문 리스트를 볼 수 있다.
      • 질문리스트에서는 질문의 제목, 태그, 작성자, 점수, 답변의 수가 드러나야 한다.
      • /quesions?page=4과 같이 해당 페이지의 질문을 조회할 수 있다.
      • 질문리스트의 하단에는 페이지를 이동할 수 있는 버튼을 표시한다.
    • /questions/{questionId}에서는 질문의 상세내용과 답변리스트를 확인할 수 있다.
      • 자신의 질문을 수정 또는 삭제할 수 있다.
      • 회원에 한해서 답변을 추가하고, 추가된 자신의 답변을 수정할 수 있다.
    • CUD 과정은 유저와 관리권한을 가진사람만 사용할 수 있다.
      • /questions/add 쓰기,/questions/edit`로 수정으로 이동한다. 동일주소의 post method를 통해 수정작업을 할 수 있다.
      • /question/delete를 호출하여 페이지를 삭제할 수 있다.
    • 다른이가 올린 글을 수정할 수 있는 기능을 고려한다.
      (유저 시나리오를 정확하게 정할 필요 있음. 첫번째 릴리즈에서는 고려하지 않는다.)
  • 각 질문에는 점수를 매길 수 있다.
    • 점수는 로그인한 사용자만 매길 수 있다.
    • 좋아요를 누를 경우 +1점, 싫어요는 -1점이 추가된다.
    • 각 사용자가 중복하여 좋아요, 싫어요를 매길수는 없다.
    • 각 사용자는 투표를 변경할 수 있다.
  • 질문에는 태그를 추가할 수 있다.
    • 태그 여러개를 추가할 수 있다.
    • 태그는 검색시 조건으로 활용된다.
  • 질문 상세 페이지와 질문 쓰기 페이지에서는 유사한 질문을 보여 준다. (hashing?, bayes?, svm?)
  • 질문을 추가하거나 수정시 한글, 영어 맞춤법을 제공해준다.
  • 질문을 할 경우 해당 회원에게는 활동 점수를 제공한다.

feature : 검색

  • 태그, 제목, 내용을 기준으로 항목을 검색할 수 있다.
  • 검색시 조건을 지정할 수 있다.
  • 검색결과는 리스트로 표현되며, 질문리스트와 동일한 형태를 가진다.
    • 검색기능은 질문리스트 와 함께 사용가능. 두 기능 병합할 것.

feature : 태그

질문에 태그를 등록하고 수정할 수 있는 기능을 추가한다.

backlog : 전반적인 프로젝트 구조 변경

현재 구조는 한 프로젝트 안에 다양한 기능이 존재합니다. ( 또는 그렇게 될수 있습니다.)
이런 구조는 확장에 상당히 취약함을 보입니다.
특히나 저희같이 인프라가 빈약한 경우에는 더욱더 구조를 확장이 유리하도록 변경할 필요가 있습니다.

물론 우선순위는 아~~~~~~~~주 최하 입니다.

task : [질문] 질문리스트 구현

#9 의 일부작업을 진행

  • /questions로 접속할 경우 질문 리스트를 볼 수 있다.
  • 질문리스트에서는 질문의 제목, 태그, 작성자, 점수, 답변의 수가 드러나야 한다.
  • /quesions?page=4과 같이 해당 페이지의 질문을 조회할 수 있다.
  • 질문리스트의 하단에는 페이지를 이동할 수 있는 버튼을 표시한다.

backlog : API Gateway Pattern

플랫폼을 넘어서 플랫폼과 플랫폼의 연결고리로 확장하기 위해서
API Gateway Pattern 이 상당히 유리한 편입니다. (물론 그에 따르는 부수적인 단점도 많습니다만)

차후 이부분에 대해서 고민해봤으면 좋겠습니다.

제가 꿈꾸는 가장 최종적인 모습은 굳건한 회원/공통 시스템을 기반으로
Any Language, Any Platform, Any Framework 기반으로 동작하는 모습입니다.

물론 이럴 경우 중심이 되는 gateway의 설계가 상당히 중요해지고 무거워진다는 단점이 있습니다만
그를 위해 직접 erlang 이나 분산처리에 유리한 언어로 설계를 해보는 재미도 있을듯 합니다.
#25 와 비슷한내용이며 우선순위도 역시 최~~하 입니다. (안할수도있다는 이야기)

feature : 답변

  • 각 질문에는 답변을 추가할 수 있다.
    • 답변에는 내용과 작성자, 작성일이 들어간다.
    • CUD과정은 유저와 관리권한을 가진사람만 사용할 수 있다.
    • 다른이가 올린 글을 수정할 수 있는 기능을 고려한다.
  • 각 답변에는 점수를 매길 수 있다. #9 점수 항목과 동일
  • 다른질문에서 유사한 답변을 가져와 보여줄 수 있다.
  • 답변에도 댓글을 달 수 있다.
  • 답변을 할 경우 해당 회원에게는 활동 점수를 제공한다.

task : [회원] 회원가입

#11 회원가입이 가능하다.

우선순위

  • 이름, 이메일, 비밀번호는 필수 정보로 받는다.
    • 위의 정보가 등록되지 않을 경우, 회원가입이 불가능하다.

우선순위 아님

  • 부가 정보로 프로필 사진을 추가할 수 있다.
    • (중요)프로필 사진을 구현하기 위해서는 별도의 CDN서버 같은 공간이 필요.
  • 이메일 인증기능을 구현한다. (시간여유가 될 경우 진행)
  • 회원정보 페이지에서 소셜 연동을 할 수 있다.
    소셜연동이 된 경우, 해당 소셜로그인기능으로 로그인이 가능하다.

backlog : 회원관리(admin)

알파버젼 이라도 일반사용자에게 공개된다면,
회원의 운영자관리 권한이 필요할것 같습니다.

  1. 광고스팸성 글을 삭제.
  2. 사유에 의거한 회원 강제 탈퇴

또한, 어제 회의에도 나온 이야기지만 이메일 인증을 통한 더미유저 유입 방지도 필요할듯 싶네요.
용어가 이게 맞나 싶네;;
recapcha? 자동가입방지등도 고려하면 좋겠네요.

feature : 인증기능 추가.

회원가입 및 로그인 기능을 추가한다.

  • 질문과 답변 도메인에는 User 필드를 추가한다.
  • 작성한 사람만 수정 및 삭제가 가능하도록 한다.

feature : 회원

  • 회원가입이 가능하다.
    • 이름, 이메일, 비밀번호는 필수 정보로 받는다.
    • 프로필 사진정보와 SNS정보, 설명을 부가정보로 등록할 수 있다.
    • 이메일 인증기능을 통과한 사람만 로그인 및 글 작성이 가능하다.
  • 회원정보를 수정할 수 있다.
    • 위의 정보를 전부 수정할 수 있다.
    • 회원가입 정보는 모두 수정할 수 있다.
    • 이메일인증이 될 경우 이메일 정보까지 수정이 가능하다.
  • 회원은 이메일과 비밀번호로 로그인 할 수 있다.
  • 아이디, 비밀번호 재발급 기능을 제공한다.
  • SNS를 연동을 한 회원은 SNS를 사용하여 로그인이 가능하다.(회원가입은 반드시 필요함.)
    • 구글, 페이스북, 트위터, 깃헙 4가지를 제공.
  • 각 회원의 정보를 확인할 수 있다.
    • //TODO
  • 자신의 정보를 확인할 수 있다.
    • //TODO
  • 회원점수 및 가입일은 다른사람에게 보이지 않는다.
    • 점수나 가입일에 따른 계급제가 생기는 것을 방지하기 위함이다.
    • 활동지수를 제공하며, 한달 내에 얼마만큼 활동 했는지 여부만을 외부에 보여준다.

task : [회원] 비밀번호 찾기

우선순위 아님

  • 비밀번호 찾기를 할 경우, 이메일로 본인여부확인 URL을 보낸다.
    특정 시간(1시간) 내에 URL을 사용해 접속할 경우, 비밀번호를 수정할 수 있는 화면을 보여준다.
    URL은 요청에 따라 랜덤으로 생성한다.

backlog : session 사용

session 사용에 대한 논의를 했으면 합니다.
서버가 늘어나게되면 아마도 session clustering을 적용하게 될텐데 이 경우 (de)serialize 문제가 있습니다.
문제가 없으려면 session을 사용하는 모든 서버에서 session에 저장된 객체를 가지고 있어야합니다.
예를 들면 인증확인은 필요없고 session만 사용하는 서버에서 불필요하게 스프링 시큐리티와 의존성을 가져야합니다.

feature : 점수기능 추가

각 질문, 답변에 점수를 추가할 수 있는 기능을 추가한다.

로그인한 사용자만 사용할 수 있다.
이미 투표한 항목에 다시 투표할 수는 없다.

task : QnA와 인증기능 통합

회원만 질문을 등록할 수 있다.
회원만 글의 답변을 달 수 있다.
자기자신 또는 운영자만 글을 삭제하거나 수정할 수 있다.

task : [질문] 답변하기 및 수정하기

  • 답변창은 질문상세페이지의 하단에 위치한다.
  • 답변은 로그인한 사용자만 작성할 수 있다.
  • 자기가 작성한 답변은 자신만 수정할 수 있다.
  • 답변은 에디터를 통해서 작성할 수 있으며, 코드작성기능이 있다.

task : [질문] 질문 추가 및 수정

  • 제목, 본문, 태그를 설정할 수 있어야 한다.
  • 질문 추가는 로그인한 사용자만 할 수 있다.
  • 에디터를 추가한다. 에디터는 summernote를 지원한다.
    • 반드시 코드를 넣을 수 있어야 한다.
  • 태그는 자동 완성으로 설정할 수 있다.

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.