Giter Club home page Giter Club logo

locomoco_be's Introduction

📍MOCO : 위치 기반 모각코 서비스

썸네일


프로젝트 소개

  • MOCO는 모여서 각자 코딩을 하는 사람들에게 만남의 기회를 가질 수 있도록 하는 프로젝트 입니다.
  • 개발자들, 개발공부를 시작하는 사람들, 스터디를 하는 사람들에게 만남의 기회를 제공합니다.
  • 번개 모각코를 통해 빠르게, 일반 모각코를 통해 목적에 맞는 모각코를, 위치기반 모각코로 추천 장소까지 제공받을 수 있습니다.

백엔드 팀원 구성

박유진 조인수

@eugene225

@ZZAMBAs

1. 개발 환경

  • 기술스택 : Java17, Spring 3.1.8, Spring WebSocket, MySQL, Redis, MongoDB
  • 버전 및 이슈관리 : Github, Github Issues, Github Project
  • 협업 툴 : Notion, Slack, Swagger
  • 서비스 배포 환경 : AWS EC2

2. 채택한 개발 기술과 브랜치 전략

Spring WebSocket + STOMP : 채팅기능 구현

  • 설명

Redis : 이미지관리

  • 사용자 프로필 이미지 관리를 위한 활용

MongoDB : 채팅 메시지 관리

  • 채팅 메시지 관리를 위한 nosql 도입
  • 채팅방은 MySQL, 메시지 내역만 관리

3. 역할 분담

🍊 박유진

  • 기능
    • 사용자 회원가입, 로그인, 로그아웃 구현
    • Spring WebSocket + STOMP 활용한 채팅 기능 구현
    • 사용자 신고 기능 구현
    • 모각코 좋아요, 좋아요 취소 구현
    • 사용자 프로필 이미지 관리 Redis 도입
    • 채팅 메시지 관리 MongoDB 도입

👻 조인수

  • 기능
    • 블라블라

4. 개발 기간 및 작업 관리

개발 기간

  • 전체 개발 기간 : 2024-02 ~ 2024-06
  • 기획 및 디자인 : 2024-02
  • 기능 구현 : 2022-02-17 ~ 2024-06

작업 관리

  • GitHub Projects와 Issues를 사용하여 진행 상황을 공유했습니다.
  • Slack Github 봇을 활용하여 슬랙으로 소통하였습니다.
  • 주간회의를 진행하며 작업 순서와 방향성에 대한 고민을 나누고 Notion에 회의 내용을 기록했습니다.

5. 신경 쓴 부분


6. 트러블 슈팅


locomoco_be's People

Contributors

eugene225 avatar zzambas avatar

Stargazers

 avatar Baek Min Hong avatar SUH SAECHAN avatar

locomoco_be's Issues

모각코 참여 로직 검증

  • 작성자는 참여 관련 로직 수행 불가
  • deadline 이후로는 참여 신청 불가
  • 참여 인원이 다 차면 신청 불가
  • endTime 이후로는 참여 관련 로직 수행 불가
  • 참여한 유저가 모종의 사유로 탈퇴(삭제) 처리되면 참여 중인 모각코들에서 자동으로 빠져야 함
  • 중복 참여 신청 불가

Mogakko를 생성할 수 있다

Mogakko 정보를 FE로부터 받아와서 생성할 수 있다.

해야 할 일

  • FE와 통신 포맷을 상의
  • DTO의 추가
  • 모각코 개체를 추가하는 로직 구현
  • 태그-모각코 연결 개체를 추가하는 로직 구현

통합 검색 구현

통합 검색은 작성자 이름, 내용, 제목, 장소를 모두 통합하여 검색한다.

찜 하기, 찜 취소 기능 구현

마이페이지에서 찜한 모각코를 볼 수 있어야 한다.
취소도 되야한다.

동시에 찜 하기, 찜 취소하는 상황 주의

Mogakko를 자세하게 읽어올 수 있다

현재 모각코의 내용을 읽어올 수 있다. 디테일 페이지에서 보여질 내용을 가져오며, 생성자 간략 정보(헤더 표시용), 내용, 참여자 간략 정보, 문의 정보들이다.

문의 내역 가져오는 것은 문의 구현 시에 다시 구현하자.

  • 전체적 개요

읽기는 리스트에서 보이는 간략한 내용이 아닌, 디테일 페이지의 정보를 읽어온다.

수정은 기존 값(읽은 값)들을 모임 생성 페이지에 그대로 전달하는 것으로 한다.

삭제는 소프트 딜리트로 구현한다.

회원가입 초기 정보 입력

  • 처음 로그인한 사용자의 초기 정보를 입력받는다
  • 닉네임은 중복될 수 없다
  • 깃허브, 카카오 같은 이메일을 사용하는 경우 provider로 구분되어야 한다

문의, 리스트 목록 관련 목 컨트롤러 API 생성

일단 클라이언트와의 통신을 위한 임시 API만 생성

  • 모각코 리스트 R: (필터링 장소, 필터링 태그[]) - (글 제목, 장소, 조회 수, 찜 수, 최대 참여 인원, 현재 참여 인원, 태그 일부[] )[] (페이징)
  • 문의
    • C: (작성자 id, 모각코 id, 내용) - 응답 바디 없음
    • R: (작성자 id, 모각코 id) - ( 작성자 프사, 닉네임, 올린 시간, 업데이트 시간, 내용, 관련 replies[] ) [] (페이징)
    • U: (작성자 id, 문의 id, 내용) - (문의 id)
    • D: (작성자 id, 문의 id) - 응답 바디 없음

모각코 참여, 참여 취소 구현

살아 있는 모각코에 한해 참여와 참여 취소가 되어야 한다.

고려할 점 -> 검증으로 이슈 분리

  • 작성자는 참여 관련 로직 수행 불가
  • deadline 이후로는 참여 신청 불가
  • 참여 인원이 다 차면 신청 불가
  • endTime 이후로는 참여 관련 로직 수행 불가
  • 참여한 유저가 모종의 사유로 탈퇴(삭제) 처리되면 참여 중인 모각코들에서 자동으로 빠져야 함
  • 참여 중인 모각코 조회는 endTime이 지난 모각코나 삭제된 모각코는 보이면 안됨

채팅 수정사항 반영

  • 채팅방 목록 조회 시, 마지막으로 전송된 채팅 메시지 함께 전달
  • 채팅 메시지 조회 정렬 방식 반대로
  • 채팅방 입장 / 채팅방 생성 로직 구분

Mogakko CRUD 검증 로직 추가

잘못된 입력에 대한 예외를 뱉도록 구현.

  • 생성
    • 삭제된(정지된) 회원이 글을 작성할 수 없다.
    • 데드라인이 끝나는 시간보다 뒤에 있을 수 없다.
    • 시작 시간이 끝나는 시간보다 뒤에 있거나 같을 수 없다. (최소 30분의 텀을 둘까?)
    • '상관 없음' 태그는 같은 카테고리 내 다른 태그와 함께 있을 수 없다. ('상관 없음' 카테고리가 있다면)
    • 내용은 500자를 초과할 수 없다.
    • 제목은 255자를 초과할 수 없다.
    • 제목은 2자 이상이어야 한다.
    • 최대 참여자 수는 2명 이상, 10명 이하여야 한다.
    • 잘못된 장소에 대해 예외를 일으켜야 한다.
  • 수정
    • 생성과 비슷함
    • 수정하는 유저가 작성자와 같아야 한다.
  • 읽기
    • 삭제된(모종의 사유로 볼 수 없는) 글을 보려할 때 예외를 일으켜야 한다.
    • 삭제된 회원의 글을 읽을 때, 해당 회원 정보는 (알 수 없음)으로 처리되어 나오도록 한다.
    • 한 번도 읽지 않았던 유저가 글을 읽으면 해당 모각코 조회수가 1 증가해야 한다. 중복 증가를 막자.
  • 삭제
    • 한 번 삭제되면 사용자 스스로가 복구할 수는 없다.

Mogakko 리스트에 보일 정보들 필터링

홈 화면에서 목록으로 보일 모각코 리스트 정보들을 가져와야 한다.

전부 표시되면 안된다.

추후에는 위치 기반 주변 20개 정도만 보여질 수 있도록 해야 한다. 이를 위해 지도 API를 찾아볼 것

보여질 정보는 작성자 id, 작성자 닉네임, 최대 참여 인원, 현재 참여자 수, 태그들(대표 3개만?), 조회 수, 위치 일부, 생성 일자

user 상세정보 조회

  • 진행중인 모각코 조회
  • 종료된 모각코 조회
  • 받은 평가 조회
  • 보낸 평가 조회

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.