Skip to content

dvlprkoji/Algostudy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

프로젝트 설명

알고리즘 스터디를 운영하며, 체계적인 관리의 필요성을 느껴 프로젝트를 진행했습니다

상세

1. 로그인

이메일 계정과 Google 계정, 카카오 계정으로 로그인할 수 있습니다

2. 스터디 등록

로그인 후 미션을 직접 설정하여 스터디를 생성할 수 있습니다

3. 팀원 초대/수락

초대장을 보내 스터디에 초대할 수 있습니다

☝️ 팀원 검색 및 초대

☝️ 초대 메시지

☝️ 초대 거절 및 수락 페이지

4. 대시보드

소속된 팀과 미션 달성률, 각오 및 디데이를 확인합니다

☝️ 대시보드

5. 미션 체크 & 등수 확인

팀원들의 미션 수행 여부를 확인하고 나의 전체 등수를 확인합니다

Project Structure

사용한 기술 스택은 다음과 같습니다

  • Spring Boot (API Server)
  • Spring Security (Security)
  • Spring Batch (Batch)
  • PostgreSQL (RDB)
  • Spring Data JPA & QueryDSL (ORM)
  • OAuth2.0 (Login)
  • AWS EC2, S3 (Public Cloud)
  • Nginx (Reverse Proxy Server)
  • Javascript, Thymeleaf, jQuery (Client)
  • Redis (Cache)
  • Apache Kafka (Message Broker) - 미적용
  • Jenkins (CI/CD) - 미적용

ERD & API는 다음과 같이 정리했습니다

Spring Boot

Spring MVC 패턴으로 작성하였습니다

프로젝트 구조는 다음과 같습니다

../com.example.algostudy/
├── batch                       - Spring Batch
   ├── chunk                   - 청크 기반 CustomItemProcessor
   ├── job                     - Job
   ├── listener                - Listener
   └── tasklet                 - Tasklet
├── common                      
   └── CommonTools             - 공통 기능 메소드 정의
├── config                      
   ├── AmazonS3Config          - Amazon S3 설정파일
   ├── BatchConfig             - Spring Batch 설정파일
   └── SecurityConfig          - Spring Security 설정파일
├── security         
   ├── authentication          - 인증(Authentication) 설정파일
   └── authorization           - 인가(Authorization) 설정파일
├── domain         
   ├── entity                  - JPA Entity
   └── dto                     - Data Transfer Object
├── controller                      
   └── ...                     - Controller
├── listener                    - ApplicationListener 메소드 정의
├── mapper                      
   └── ...                     - MapStruct Mapper 메소드 정의
├── repository                    
   └── ...                     - Repository
└── service                    
    └── ...                     - Service

Spring Security (Security)

Security 설정을 통해 인가된 사용자만 허용 URL에 접근할 수 있도록 제한한다.

다음과 같이 설정하였습니다

  • Form Login (Auth)
  • Remember Me (Auth)
  • Session : maximumSessions(1)
  • Session : SessionCreationPolicy.If_Required
  • Authorization : URL-based (UrlResourcesMapFactoryBean)

Spring Batch (Batch)

매일 0시에 일별 미션을 체크하여 미션 캘린더에 저장하고 종료일자가 지난 미션을 삭제한다

구조는 다음과 같습니다

Spring Data JPA & QueryDSL (ORM)

Spring Data JPA, QueryDSL을 통해 각각 객체 중심의 domain 설계, JPQL build를 하였습니다.

OAuth 2.0 (Login)

이메일 로그인과 소셜 로그인을 제공하여 번거로운 회원가입 과정을 생략할 수 있습니다

구조는 다음과 같습니다

Redis (Cache)

Sorted Set 자료구조를 사용하여 랭킹 보드를 구현하였습니다

구조는 다음과 같습니다

Github

https://github.com/dvlprkoji/Algostudy

About

Online Algorithm Study Platform

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors