Skip to content

GY102912/realtime-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Realtime

개요

Realtime은 사람들과 온라인으로 자유롭게 실시간으로 소통하고 싶은 사용자를 위한 커뮤니티 서비스입니다.

게시글 작성, 댓글 작성을 통해 내 이야기를 나누고 다른 사용자의 이야기에 공감해보세요.

기능

  • WebSocket 기반 실시간 댓글 조회 및 댓글 작성 기능
  • 로컬 캐시 Caffeine을 활용하여 빠른 최신 게시글 목록, 게시글 상세 조회 및 게시글 작성 기능
  • Spring Security & JWT & Redis 기반의 안전하고 확장성 높은 사용자 인증 절차
  • Rate Limiting으로 과도한 요청 혹은 공격으로부터 시스템 보호
  • 서버 로컬 디스크에 업로드된 파일을 링크 기반으로 조회 및 출력

디렉토리 구조

application
├── exception
├── mapper
├── service
└── util
domain
├── converter
├── dto
├── event
├── exception
├── model
└── repository
global
├── config
├── exception
├── filter
├── provider
└── util
infrastructure
├── config
├── disk
├── exception
├── persistence
└── redis
presentation
├── controller
├── dto
├── util
└── validation

로컬 실행 방법

  1. 저장소 클론

    git clone https://github.com/GY102912/realtime-backend.git
    cd mywiki-backend
  2. 프로젝트 루트에 .env 파일 작성

    # MySQL
    MYSQL_URL=jdbc:mysql://localhost:3306/your_schema?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
    MYSQL_USER_NAME=your_user_name
    MYSQL_PASSWORD=your_password
    
    # Redis
    REDIS_HOST=localhost
    REDIS_PORT=6379
    
    # JWT
    JWT_SECRET=openssl rand -base64 32 명령어 결과값
    
  3. MySQL & Redis 실행

  4. CommunityApplication 실행

    ./gradlew bootRun

의존성

  • Spring Boot 3.x
  • Spring Security, JWT(JJWT)
  • WebSocket (STOMP, SockJS)
  • Spring Data JPA, QueryDSL
  • Redis, Caffeine
  • Bucket4j (Rate Limiting)
  • MySQL 8.0
  • SpringDoc OpenAPI (Swagger UI)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages