Skip to content

제 5회 숭실대학교 IT 프로젝트 공모전 수상작 A:SSU의 백엔드 레포지토리 입니다.

Notifications You must be signed in to change notification settings

leesumin0526/ASSU_BE

 
 

Repository files navigation

A:SSU Backend Server

숭실대학교 학생들을 위한 종합 서비스 플랫폼 ASSU의 백엔드 서버입니다.

image

🏆 제5회 숭실대학교 IT 프로젝트 공모전 수상작 🏆

"제휴의 시작부터 끝까지, A:SSU에서 한 번에!"

📱 Google Play Store | 💻 GitHub

📋 목차

🎯 프로젝트 개요

대학교 주변 제휴 혜택은 정보가 분산되어 있어 학생은 이용이 번거롭고, 학생회는 매 학기 제휴 관리 부담이 컸으며, 제휴업체는 인증 과정의 비효율과 홍보 효과 측정의 한계를 겪고 있었습니다.

A:SSU는 제휴 계약부터 이용까지의 흐름을 하나의 시스템으로 통합해, 위치 기반 검색과 모바일 인증으로 이용 절차를 단순화하고 제휴 이용 현황을 데이터로 관리할 수 있도록 설계된 플랫폼입니다.

주요 특징

  • 🔐 다중 인증 시스템: 일반 회원가입, SSU 포털 연동, 토큰 기반 인증
  • 💬 실시간 채팅: WebSocket 기반 실시간 메시징
  • 📍 위치 기반 서비스: 공간 데이터를 활용한 지도 서비스
  • 🔔 푸시 알림: Firebase FCM을 통한 실시간 알림
  • 📊 관리자 시스템: 종합적인 백오피스 관리 기능

✨ 주요 기능

※ 전체 기능 중 직접 담당한 기능은 볼드로 표시했습니다.

기능 설명
👤 회원 관리 학생/파트너 회원가입 및 프로필 관리
🔔 푸시 알림 FCM 기반 실시간 알림 (Outbox 패턴 적용)
📱 디바이스 관리 FCM 토큰 관리, 멀티 디바이스 지원
🏦 매장 관리 파트너 매장 등록·수정, 위치 기반 매장 검색
🔐 인증/인가 JWT 기반 인증, 학생·파트너·관리자 역할 관리
🤝 제휴 관리 제휴 제안·수락 및 제휴 현황 관리
💬 실시간 채팅 WebSocket 기반 1:1 채팅 시스템
📍 위치 기반 서비스 공간 데이터 기반 주변 매장 탐색
⭐ 리뷰 시스템 매장 리뷰 작성 및 관리
📊 관리자 기능 사용자·매장·제휴 관리 및 통계 제공
🛡️ 신고 시스템 부적절한 콘텐츠 신고 및 처리
📖 API 문서화 Swagger UI를 통한 API 문서 제공

🛠 기술 스택

항목 사용 기술 / 라이브러리
백엔드 프레임워크 Spring Boot 3.5.3
언어 Java 17, Kotlin
데이터베이스 MariaDB
ORM Spring Data JPA (Hibernate)
보안 Spring Security + JWT
캐시 Redis
메시지 큐 RabbitMQ
푸시 알림 Firebase Cloud Messaging (FCM)
파일 저장소 AWS S3
실시간 통신 WebSocket, STOMP
공간 데이터 Hibernate Spatial, JTS
API 문서화 SpringDoc OpenAPI (Swagger)
빌드 도구 Gradle

🏗 시스템 아키텍처

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   Mobile App    │    │   Web Client    │    │  Admin Panel    │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         └───────────────────────┼───────────────────────┘
                                 │
                    ┌─────────────────┐
                    │  Load Balancer  │
                    └─────────────────┘
                                 │
         ┌───────────────────────┼───────────────────────┐
         │                       │                       │
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   App Server    │    │   App Server    │    │   App Server    │
│   (Blue/Green)  │    │   (Blue/Green)  │    │   (Blue/Green)  │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         └───────────────────────┼───────────────────────┘
                                 │
    ┌─────────────────────────────────────────────────────────┐
    │                    Data Layer                           │
    │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐      │
    │  │   MariaDB   │  │    Redis    │  │  RabbitMQ   │      │
    │  └─────────────┘  └─────────────┘  └─────────────┘      │
    └─────────────────────────────────────────────────────────┘
                                 │
    ┌─────────────────────────────────────────────────────────┐
    │                External Services                        │
    │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐      │
    │  │   AWS S3    │  │ Firebase FCM│  │  Kakao API  │      │
    │  └─────────────┘  └─────────────┘  └─────────────┘      │
    └─────────────────────────────────────────────────────────┘

📁 프로젝트 구조

src/main/java/com/assu/server/
├── domain/                     # 도메인별 비즈니스 로직
│   ├── admin/                  # 관리자 관리
│   ├── auth/                   # 인증 및 권한
│   ├── certification/          # 인증서 관리
│   ├── chat/                   # 실시간 채팅
│   ├── common/                 # 공통 엔티티
│   ├── deviceToken/            # 디바이스 토큰 관리
│   ├── inquiry/                # 문의 관리
│   ├── map/                    # 지도 서비스
│   ├── mapping/                # 학생-관리자 매핑
│   ├── member/                 # 회원 관리
│   ├── notification/           # 알림 시스템
│   ├── partner/                # 파트너 관리
│   ├── partnership/            # 파트너십 관리
│   ├── report/                 # 신고 처리
│   ├── review/                 # 리뷰 시스템
│   ├── store/                  # 매장 관리
│   ├── suggestion/             # 건의사항
│   ├── term/                   # 약관 관리
│   └── user/                   # 사용자 관리
├── global/                     # 전역 설정 및 유틸리티
│   ├── apiPayload/             # API 응답 형식
│   ├── config/                 # 설정 클래스
│   ├── exception/              # 예외 처리
│   └── util/                   # 유틸리티 클래스
├── infra/                      # 외부 서비스 연동
│   ├── aligo/                  # SMS 서비스
│   ├── firebase/               # FCM 푸시 알림
│   └── s3/                     # AWS S3 연동
└── ServerApplication.java      # 메인 애플리케이션

도메인별 구조

각 도메인은 다음과 같은 계층 구조를 따릅니다:

domain/example/
├── controller/                 # REST API 컨트롤러
├── service/                    # 비즈니스 로직
├── repository/                 # 데이터 액세스
├── entity/                     # JPA 엔티티
├── dto/                        # 데이터 전송 객체
├── converter/                  # DTO-Entity 변환
└── exception/                  # 도메인별 예외

🚢 배포

CI/CD 파이프라인

프로젝트는 GitHub Actions를 사용한 자동화된 CI/CD 파이프라인을 구축하고 있습니다.

CI (Continuous Integration)

  • 트리거: develop 브랜치에 Push 또는 PR
  • 과정: 코드 빌드 → 테스트 실행 → 정적 분석

CD (Continuous Deployment)

  • 트리거: main 브랜치에 Push
  • 과정: Docker 이미지 빌드 → DockerHub 푸시 → EC2 배포

Blue-Green 배포

무중단 배포를 위해 Blue-Green 배포 전략을 사용합니다.


📞 문의

프로젝트에 대한 문의사항이 있으시면 다음을 통해 연락해 주세요:


A:SSU © 2026

About

제 5회 숭실대학교 IT 프로젝트 공모전 수상작 A:SSU의 백엔드 레포지토리 입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 97.3%
  • HTML 2.0%
  • Other 0.7%