ROIMSG는 멀티테넌시 단일 DB와 기능 단위 MSA 아키텍처를 기반으로 하는 간단한 메시징 시스템입니다. Google 계정 연동을 통한 간편한 회원가입 및 로그인을 제공하며, PC 및 모바일 웹 환경에 최적화된 반응형 UI를 지원합니다.
- Google OAuth 2.0 기반 간편 로그인
- 멀티테넌시 지원
- 사용자 프로필 관리
- 권한 기반 접근 제어
- KISA 보안 가이드라인 준수
- 실시간 1:1 채팅
- 그룹 채팅 (1:N)
- 쪽지 시스템
- 파일 첨부 지원
- 실시간 알림
- 게시글 작성/수정/삭제
- 댓글 및 답글 시스템
- 파일 첨부
- 태그 시스템
- 검색 및 필터링
- 파일 업로드/다운로드
- 썸네일 미리보기
- PDF 미리보기
- 대용량 파일 지원
- 일괄 다운로드
- 사용자 정의 위젯
- 실시간 데이터 표시
- 드래그 앤 드롭 레이아웃
- 한국어/영어 기본 지원
- 런타임 언어 전환
- JSON 언어팩 기반 동적 로딩
- 지역화 지원 (날짜, 시간, 숫자 형식)
- KWCAG 2.2 AA 레벨 준수
- 키보드 접근성
- 스크린 리더 지원
- 색상 대비 최적화
- 반응형 디자인
- Vue.js 3 - 프론트엔드 프레임워크
- Vite - 빌드 도구
- TypeScript - 타입 안전성
- Pinia - 상태 관리
- Vue Router - 라우팅
- Vuetify - UI 컴포넌트 라이브러리
- Vue I18n - 다국어 지원
- Vue A11y - 접근성 지원
- Spring Boot 3 - 백엔드 프레임워크
- Java 21 - 프로그래밍 언어
- Spring Security - 보안
- Spring Data JPA - 데이터 접근
- Spring Cloud Gateway - API Gateway
- WebSocket - 실시간 통신
- JWT - 토큰 기반 인증
- OAuth 2.0 - Google 계정 연동
- AES-256 - 데이터 암호화
- OWASP ZAP - 보안 스캐닝
- SonarQube - 정적 보안 분석
- PostgreSQL - 메인 데이터베이스
- Redis - 캐시 및 세션 저장소
- Docker - 컨테이너화
- Kubernetes - 오케스트레이션
- Nginx - 리버스 프록시
- Prometheus - 모니터링
- Grafana - 대시보드
ROIMSG/
├── backend/ # 백엔드 서비스들
│ ├── api-gateway/ # API Gateway
│ ├── auth-service/ # 인증 서비스
│ ├── user-service/ # 사용자 관리 서비스
│ ├── message-service/ # 메시징 서비스
│ ├── board-service/ # 게시판 서비스
│ ├── file-service/ # 파일 관리 서비스
│ └── dashboard-service/ # 대시보드 서비스
├── frontend/ # 프론트엔드 애플리케이션들
│ ├── web-app/ # 웹 애플리케이션
│ └── mobile-app/ # 모바일 웹 애플리케이션
├── shared/ # 공통 라이브러리
│ ├── types/ # 타입 정의
│ ├── utils/ # 유틸리티 함수
│ └── config/ # 공통 설정
├── docs/ # 문서
│ ├── PRD-v1.1.md # 제품 요구사항 정의서
│ └── Implementation-Checklist.md # 구현 체크리스트
├── scripts/ # 유틸리티 스크립트
├── infrastructure/ # 인프라 설정
│ ├── docker/ # Docker 설정
│ ├── kubernetes/ # K8s 매니페스트
│ └── terraform/ # 인프라 코드
└── package.json # 루트 패키지 설정
💡 신규 개발자? 상세한 설치 가이드는 **개발환경 구축 가이드**를 참고하세요!
- Node.js 18.0.0 이상
- Java 21 이상
- Maven 3.9.0 이상
- Redis 7.0 이상 (권장)
- PostgreSQL 15 이상 (선택사항, 개발 시 H2 사용 가능)
- Git
-
저장소 클론
git clone https://github.com/roimsg/roimsg.git cd roimsg
-
환경 변수 설정
# Google OAuth (개발용 계정) $env:GOOGLE_CLIENT_ID = "386472545089-nms9v0b856h10q9dp380gn4t9oukbtfg.apps.googleusercontent.com" $env:GOOGLE_CLIENT_SECRET = "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" $env:GOOGLE_REDIRECT_URI = "http://localhost:3000/auth/callback" # 프론트엔드 $env:VITE_API_BASE_URL = "http://localhost:8080" $env:VITE_GOOGLE_CLIENT_ID = "386472545089-nms9v0b856h10q9dp380gn4t9oukbtfg.apps.googleusercontent.com" $env:VITE_GOOGLE_REDIRECT_URI = "http://localhost:3000/auth/callback"
-
백엔드 서비스 실행
# Common Starter 빌드 (최초 1회) cd backend\common-starter mvn clean install -DskipTests cd ..\.. # 모든 백엔드 서비스 실행 .\start-backend-services.ps1
-
프론트엔드 실행
# 새 PowerShell 창에서 cd frontend\web-app npm install npm run dev
-
애플리케이션 접속
- 웹 애플리케이션: http://localhost:3000
- API Gateway: http://localhost:8080
- Auth API 문서: http://localhost:8081/swagger-ui.html
- H2 Console (개발 DB): http://localhost:8081/h2-console
- 📖 개발환경 구축 가이드 - 처음부터 끝까지 상세한 설치 가이드
- 🔧 빌드 및 실행 - 각 모듈별 빌드 및 실행 방법
- ⚙️ 환경설정 - 로컬/테스트/운영 환경설정
-
PostgreSQL 설정
-- 관리자 계정으로 로그인 CREATE USER roit WITH PASSWORD 'fhdlxpzm1*'; CREATE DATABASE ROIMSG OWNER roit; GRANT ALL PRIVILEGES ON DATABASE ROIMSG TO roit;
-
Google OAuth 설정
- Google Developers Console에서 프로젝트 생성
- OAuth 2.0 클라이언트 ID 발급
- 리다이렉트 URI 설정:
http://localhost:3000/auth/callback
-
환경 변수 설정
# Database DB_HOST=localhost DB_PORT=5432 DB_NAME=ROIMSG DB_USER=roit DB_PASSWORD=fhdlxpzm1* # Google OAuth GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret # JWT JWT_SECRET=your_jwt_secret_key JWT_EXPIRATION=86400 # Redis REDIS_HOST=localhost REDIS_PORT=6379
- 개발환경 구축 가이드 ⭐ 신규 개발자 필독!
- 빌드 및 실행
- Swagger UI (로컬 실행 시)
# 모든 테스트 실행 npm test # 백엔드 테스트만 npm run test:backend # 프론트엔드 테스트만 npm run test:frontend # E2E 테스트 npm run test:e2e
# Docker 이미지 빌드 docker-compose build # 서비스 실행 docker-compose up -d # 로그 확인 docker-compose logs -f
# 네임스페이스 생성 kubectl create namespace roimsg # 매니페스트 적용 kubectl apply -f infrastructure/kubernetes/ # 서비스 상태 확인 kubectl get pods -n roimsg
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
- 이슈 리포트: GitHub Issues
- 문서: Wiki
- 이메일: support@roimsg.com
- 멀티테넌시 지원 - 단일 DB에서 테넌트별 데이터 분리
- Google OAuth 연동 - 간편한 로그인 및 사용자 관리
- 실시간 메시징 - WebSocket 기반 실시간 통신
- MSA 아키텍처 - 확장 가능한 마이크로서비스 구조
- 반응형 UI - PC/모바일 최적화된 사용자 인터페이스
- 보안 강화 - KISA 보안 가이드라인 및 제로트러스트 준수
- 웹 접근성 - KWCAG 2.2 AA 레벨 준수
- 다국어 지원 - 한국어/영어 런타임 전환 지원
- v1.0 - 기본 메시징 기능
- v1.1 - 게시판 및 자료실
- v1.2 - 대시보드 및 위젯
- v1.3 - 보안 강화 및 접근성 개선
- v2.0 - 모바일 앱 지원
- v2.1 - 고급 검색 기능
- v3.0 - AI 기반 기능
ROIMSG Development Team
멀티테넌시 메시징 시스템을 통한 효율적인 커뮤니케이션