팀. 도라

권채린 김선종 김준회 유순선 최성원

모두의 스터디

이젠 학습도 팀 플레이다!

모두의스터디.메인.한국

같이 스터디하고

지식을 관리하려면?

만든 이유

  1. 로컬에서 쓰는 옵시디언

2. 스터디 모집에 한정된 홀라

3. 시작하기 쉽지 않던 SSG

4. 구조화, 팀작업이 어려운

스터디 멤버를 관리하자


파편화를 막고 구조화 하자


작성글을 보여주자

그래서

만들었습니다

스터디를 홍보하고

스터디를

관리하고

배운 내용을

함께 작성하고

작성한 내용을공유하자!

모바일도

됩니다!

모바일도

됩니다!

소개

스터디, 위키 - 무한스크롤링

Spring Pageable, js

스터디 검색

위키 검색

회원

OAuth2.0을 적용한 로그인

회원

OAuth2.0 인증 후 회원가입

소개

회원 정보 수정하기

NCP Object Storage, SweetAlert2

소개

회원 탈퇴

modal

소개

회원 글/댓글 목록

Spring Pageable

소개

스터디 모집글 작성하기

Toast UI Editor, NCP Object Storage, DateRangePicker, SweetAlert2

Edit Text Icon

모집글 편집

Right Direction Arrow

소개

스터디 참여하기

modal: js, css, Libs: SweetAlert2

소개

스터디 관리하기

스터디원 관리하기

스터디 관리

기능: 상단고정(즐겨찾기), 신청 수락/거절, 가입 스터디 탈퇴

위키 뷰어, 에디터

Libs: TOAST UI editor, jsTree, table of contents

Techs: ajax, 인접트리 자료구조, NCP Object storage

위키 뷰어, 에디터

Libs: TOAST UI editor, jsTree, table of contents

Techs: ajax, 인접트리 자료구조, NCP Object storage

작성한 개별 위키 발행

Pageable 기반의 무한 스크롤링

소개

댓글로 소통하기

실시간 알림받기

스터디, 위키 댓글 기능

Techs: Async Request, RESTful API, Redis, Spring Event, SSE

실시간 댓글 알림

관리자 페이지

Libs: adminlte

공통코드 관리

사이트 소개

구현 상세

Aesthetic Element y2k

이미지 업로드

라이브러리 기본 설정:

이미지 업로드 시, Base64로 인코딩됨.

에디터에서 많은 영역을 차지하여 활용성이 저하됨.


Aesthetic Element y2k

변경 후 :

이벤트 리스너를 통해 NCP Object Storage에 업로드 하도록 변경,

파일이 중복되지 않도록 UUID 생성하여 사용함.


이미지 업로드

Aesthetic Element y2k

이미지 업로드

업로드 이벤트 발생 시 요청

생성된 url이 삽입 된 글 저장

storage/file/upload

People Glyph Icon

이미지 업로드

저장 된 이미지 url 응답

https://kr.object.ncloudstorage.com/~

이미지 이름 UUID로 변환


NCP Object Storage에 이미지 저장

좋아요

Right Direction Arrow

좋아요 반정규화 적용

반정규화의 필요성

멤버-좋아요 테이블로 정규화 시

매번 COUNT 필요한 문제


반정규화 적용

좋아요 갯수만 따로 테이블에

저장하여 조인없이 가져오게 적용

인접리스트

Hierarchical Structure Lineal Icon Set

id

parent_id

id

parent_id

클라이언트 사이드 정렬

Hierarchical Structure Lineal Icon Set
User
javascript  icon

단순 조회 쿼리로 DB 부하 감소

1 요청

JSON File Document Icon in Trendy Style Isolated Background

5 정렬된 결과 제공

4 깊이우선탐색

3 JSON

인접 리스트

Rest API

2

단순

조회

Database

custom serializer

라이브러리에서 정의된

키 이름에 맞추기 위해

Custom Serializer 적용

설계/아키텍처

위키 에디터 상세

hand drawn red arrow mark.

승인된 스터디원에게만 보이며,

승인된 스터디원만

정상적인 응답을 받습니다.

위키 에디터 상세

hand drawn red arrow mark.

위키 생성, 제목 변경, 삭제, 이동은

모두 비동기로 실시간 반영됩니다.

위키 에디터 상세

내용은 자동저장!

hand drawn red arrow mark.

단 내용이 변경된 경우에 한정하여..


사용자의 입력이 있거나 (30초마다)

다른 위키로 이동하거나,

창을 닫는 경우에 한정

에디터 네트워크 사용

사이트맵

회원정보입력

소셜로그인

(GitHub, Kakao, Google, Naver)

User icon

비회원

위키 보기

스터디 정보

USER

모두의 위키

사이트맵

User icon

회원

USER

좋아요

댓글 편집/삭제

댓글 등록

메인페이지

스터디정보

대댓글

좋아요

댓글 편집/삭제

위키 보기

댓글 등록

대댓글

댓글 편집/삭제

모집글쓰기

위키 작성

댓글 등록

대댓글

대시보드

자기소개

즐겨찾기

My 스터디

My 스터디 목록

스터디 신청/거절

스터디장

마이페이지

스터디 탈퇴

스터디원

수정

회원정보수정

탈퇴

My 위키 글

스터디 My 댓글

My 위키글/댓글보기

위키 My 댓글

Web Development, Developers Optimizations of Sites

추후 개선할 점

Redis cache를 적용해

조회 성능 개선

테스트 코드를 작성해

코드에 대한 신뢰도 확보

리액트 적용

무중단 배포를 구축해

배포 시 down-time이

없도록 개선

백엔드 프론트엔드

분리

레디스를 통한

DB 동시성제어

스프링 시큐리티를

이용한 권한 관리

예외 처리

기술스택,

툴 소개

기술 스택

프론트엔드

백엔드

VCS

인프라

사용 툴

Minimal Modern Contour Buildable Circles

협업도구

Github Project

협업도구

Github Discussion

협업도구

Github Discussion

협업도구

Github

Pull Request ➡️ Review ➡️ Merge

Trello

for Brainstorming

TASK

for Scheduling

Figma

for Prototyping

Figma

for Prototyping

Canvas

Screen Flow Diagram

Canvas

Screen Layout Design

erd

DATABASE 구조 설계

Black Dotted Circle Recolorable Outline

NCLOUD DB SERVER

사용

팀원 소개, 소감

Team 도라

Y2K Aesthetic Elements


MAIN Role

Responsibilities

김준회

(팀장)

위키, 댓글, 에디터

팀 회의, 팀 스터디 주관, 일정관리

Screen Flow Layout, Layout Design 작성

위키, 댓글 REST API 및 FE 개발,

트리 구조를 갖춘 마크다운 뷰어 적용 및 편집 기능 개발

(jstree, Toatst UI Editor)

권채린

회원, 스터디

카드 ui 무한 스크롤 적용, 즐겨찾기, 좋아요, 스터디 신청기능, 마이페이지, ncp object storage 적용, 이미지 업로드 처리

김선종

스터디, 알림

스터디 작성, OAuth2, 알림, 페이징처리, 예외처리,

스터디 관리, ncp storage 이미지 업로드 처리

유순선

위키, 검색

모두의 위키 CRUD, MY위키 글/댓글보기, 검색 기능,

페이징처리

최성원

메인화면, CI/CD,

Infra

OAuth2 연동,CI/CD 구축, 실시간 알림 구현,

DB 이중화, admin 페이지, 메인페이지

Minimal Modern Contour Buildable Circle
Stick Figure Cheering with a Megaphone Illustration

프로젝트 소감

김준회

R&R을 완전히 분리하기보단 서로 가르쳐주면서 진행했기에,

생각보다 많은 기능을 구현하지는 못했던 것 같습니다.

대신 그만큼 같이 성장하는 게 느껴져서 즐거웠습니다.

시간이 참 빨리 지나갔네요.


프로토타이핑, 개발, 데이터 입력, 발표자료 만들기까지 팀워크가

참 중요하다고 느꼈습니다. 혼자서는 절대 못했을거에요~


도시락과 라면으로 야간작업한 우리 도라 팀 다들 수고 많으셨습니다! 코드리뷰를 많이 못해본 게 아쉽네요. 계속 연락해요~

@joonhoekim

Minimal Modern Contour Buildable Circle
Stick Figure Cheering with a Megaphone Illustration

프로젝트 소감

최성원

실시간 알림과 DB 이중화를 구현해 보면서 스프링 라이프사이클에 대해 좀 더 이해할 수 있었습니다.

테스트 코드를 많이 도입해 보지 못해서 아쉬웠습니다. 여기서 끝내지 않고 계속 다듬어서 개선해 나갔으면 좋겠습니다.


짧은 기간동안 모두 열심히 참여해 결과물을 만들어낸 팀원들 모두 고생하셨습니다.



@zhtmr

Minimal Modern Contour Buildable Circle
Stick Figure Cheering with a Megaphone Illustration

프로젝트 소감

김선종

다양한 요구사항들을 구현하면서 스프링 프레임워크에 대해

공부할 수 있어 좋은 시간이었습니다.

테스트 코드를 기반으로 프로그래밍 하지 못해 아쉬웠습니다.

@sunjong0214

Minimal Modern Contour Buildable Circle
Stick Figure Cheering with a Megaphone Illustration

프로젝트 소감

권채린

처음에는 많이 부족했지만 수업 시간에 강사님이 가르쳐주신 내용을 활용하고 응용해야할 부분은 서로 찾아보고 가르쳐주면서

함께 성장할 수 있었습니다.

함께 협업하여 뜻깊은 결과물을 만든 좋은 경험이었습니다.


주말에도 만나서 팀플하느라 다들 너무 고생하셨어요.

고생한 만큼 모두 좋은 결과있었으면 좋겠습니다.

@chaexrin

Minimal Modern Contour Buildable Circle
Stick Figure Cheering with a Megaphone Illustration

프로젝트 소감

유순선

6개월이라는 짧은 시간 동안 배운 교육 내용을 바탕으로 웹 페이지를 개발할 수 있어서 많은 것을 배울 수 있었습니다. 팀 프로젝트를 통해 협업의 중요성을 깨닫고, 함께 프로젝트를 진행하는 새로운 경험을 쌓을 수 있었습니다. 비록 더 많은 기능을 구현하지 못한 점이 아쉽지만, 이 과정에서 많은 경험을 하였습니다.

팀원들 모두 정말 수고 많으셨습니다!

@yusoonsun

THANK YOU

Y2K Aesthetic Elements

감사합니다.

Y2K Aesthetic Elements

TEAM. DORA