Linkit은 사이드 프로젝트 진행이나 협업 경험을 쌓기 위한 대학생, 사업을 영위하기 위한 예비·초기 창업가들이 겪는 가장 큰 어려움인 팀빌딩 문제를 해결하기 위해 시작한 프로젝트입니다. 현재 실서비스로 운영 중이며, 다양한 직군의 사람들이 자신의 역량을 소개하고 프로젝트에 적합한 팀원을 찾을 수 있도록 지원하고 있습니다.
- 효율적인 팀 매칭: 기술 스택과 관심 분야를 기반으로 한 스마트 매칭
- 실시간 소통: WebSocket 기반 실시간 채팅으로 즉각적인 커뮤니케이션
- 신뢰할 수 있는 프로필: 포트폴리오, 경력, 수상 이력 등 검증 가능한 정보 제공
- 상세 프로필: 기술 스택, 포트폴리오, 경력사항, 학력, 자격증, 대외활동 등 체계적인 이력 관리
- 미니 프로필: 핵심 정보만을 담은 간략한 프로필 제공
- 프로필 로그: 프로젝트 진행 상황이나 성과를 기록하는 블로그 형태의 기능
- 방문자 추적: 프로필 조회 이력 및 방문자 통계
- 팀 생성 및 관리: 팀 정보, 히스토리, 멤버 관리
- 팀 멤버 모집: 모집 공고 작성, 지원자 관리, 팀원 초대 시스템
- 팀 프로덕트: 팀에서 진행한 프로젝트 성과물 관리
- 팀 로그: 팀 활동 및 프로젝트 진행 상황 기록
- STOMP 프로토콜: Spring WebSocket과 STOMP를 활용한 실시간 메시징
- 채팅방 관리: 팀원 간 실시간 소통을 위한 채팅방
- 메시지 히스토리: MongoDB를 활용한 채팅 메시지 영구 저장
- 읽지 않은 메시지 알림: Spring Batch를 활용한 배치 처리
- 동적 검색: QueryDSL을 활용한 복잡한 검색 조건 처리
- 커서 기반 페이지네이션: 대용량 데이터에 최적화된 페이징 처리
- 통합 검색: 프로필, 팀, 공고, 로그 전체를 아우르는 검색 기능
- 스크랩 기능: 관심 프로필, 팀, 공고 저장
- 이메일 발송: 비동기 처리를 통한 팀 초대, 지원 알림 등
- 실시간 알림: 채팅 메시지, 댓글, 스크랩 등의 실시간 알림
- 방문 알림: 프로필 방문자 알림
- Framework: Spring Boot 3.2.4
- Language: Java 17
- Build Tool: Gradle 8.7
- RDB: MySQL 8.0 (메인 데이터베이스)
- NoSQL: MongoDB (채팅 메시지 저장)
- Cache: Redis (세션 관리 및 캐싱), Caffeine (로컬 캐싱)
- ORM: Spring Data JPA, Hibernate
- Query: QueryDSL 5.0.0 (동적 쿼리)
- Migration: Flyway (DB 스키마 버전 관리)
- WebSocket: Spring WebSocket + STOMP 프로토콜
- Message Broker: SimpleBroker (In-memory)
- Batch: Spring Batch (읽지 않은 메시지 알림)
- Cloud: AWS (EC2, RDS, S3)
- CI/CD: GitHub Actions
- Container: Docker
- Monitoring: Spring Actuator, p6spy (쿼리 로깅)
- Testing: JUnit 5, Mockito, Testcontainers, REST Assured
- Documentation: Spring REST Docs, SpringDoc OpenAPI
- Code Quality: Spotless (코드 포맷팅), JaCoCo (테스트 커버리지)
- Performance: datasource-decorator (쿼리 성능 모니터링)
src/main/java/liaison/linkit/
├── auth/ # 인증/인가 (커스텀 어노테이션 기반)
├── chat/ # 실시간 채팅
│ ├── config/ # WebSocket 설정
│ ├── presentation/ # 채팅 컨트롤러
│ ├── service/ # 채팅 비즈니스 로직
│ └── scheduler/ # 배치 스케줄러
├── common/ # 공통 유틸리티
├── file/ # 파일 업로드 (S3 연동)
├── global/ # 전역 설정
│ ├── config/ # Spring 설정 (STOMP, S3, Async 등)
│ ├── exception/ # 전역 예외 처리
│ ├── response/ # 공통 응답 형식
│ └── util/ # 유틸리티 클래스
├── image/ # 이미지 처리
├── login/ # 로그인/로그아웃
├── mail/ # 이메일 발송 (비동기)
├── matching/ # 팀-개인 매칭
├── member/ # 회원 관리
├── notification/ # 알림 서비스
├── profile/ # 프로필 관리
│ ├── presentation/ # 프로필 관련 컨트롤러들
│ ├── business/ # 비즈니스 로직
│ ├── domain/ # 도메인 엔티티
│ └── infrastructure/ # 레포지토리
├── report/ # 신고 기능
├── scrap/ # 스크랩 기능
├── search/ # 통합 검색
├── team/ # 팀 관리
└── visit/ # 방문 기록