헤이영 캠퍼스의 커뮤니티 활성화를 위해 지도 기반 커뮤니티 기능과 게시판을 연동하여 온·오프라인 소통 강화
- 서비스명: CAMPUNG!
- 프로젝트 기간: 2025.08.13 ~ 2025.08.30 (신한 해커톤 with SSAFY)
- 핵심 가치: 위치 중심의 즉각 소통(지도) × 축적 가능한 정보(게시판)
- 포지셔닝: 학교 커뮤니티의 현장성을 지도에서, 지속성을 게시판에서
- 문제: 텍스트 게시판 중심의 학교 커뮤니티는 즉시성·현장감에 한계가 있음
- 해결: 지도 위에서 지금, 여기의 정보를 빠르게 주고받고, 중요한 내용은 게시판에 구조화해 남깁니다
- 핵심 시나리오
- 분실물/행사/랜선플리 마감/맛집 등 현장 이슈를 지도에서 즉시 공유
- 게시판과 연동되어 검색·보관·회고가 용이
- 친구 위치 공유 및 랜드마크로 교내 활동성 강화
-
지도 렌더링 최적화 – QuadTree × 마커 풀링
- 전수 비교 대신 공간 분할(QuadTree) 로 근접 노드만 탐색 → 연산량 대폭 절감
- 마커 풀 재사용으로 객체 생성/GC 비용 감소, 프레임 드랍 완화
- 코루틴 점진 렌더링으로 대량 마커도 끊김 없이 표시
-
지오해시 기반 근접 탐지 & 푸시
- 사용자 위치를 지오해시 셀로 관리, 셀 진입/이탈 시 관심 콘텐츠 구독 변경
- 불필요한 네트워크/연산을 억제하고 실시간성 유지
-
지도↔게시판 유기적 연동
- 지도에서 발생한 컨텍스트(위치·시간·사진·녹음)를 게시글 메타데이터로 자동 연결
- 게시판 정렬/검색/필터에 위치 요소 결합 → 현장성 + 축적성 동시에 달성
-
안드로이드 UX 요소
- 커스텀 툴팁(글래스모피즘) + 스케일 인/아웃 애니메이션
- 커스텀 바텀시트·데이트피커, Lottie 캐릭터
-
백엔드 안정화 & 알림
- JWT 기반 보안, FCM 알림, 친구·랜드마크·게시글 도메인 분리
- 배포 자동화(CI/CD), 헬스체크/모니터링 구성
| 분류 | 기술 스택 |
|---|---|
| 모바일(Android) |
|
| 백엔드 |
|
| 네트워크·API |
|
| 데이터베이스 |
|
| 미디어·UI |
|
| 인프라·DevOps |
|
| 푸시알림·실시간 |
|
| 협업도구 |
|
com.shinhan.campung
├── app # Application, MainActivity, 네비 그래프 엔트리 등
│ ├── CampungApplication.kt
│ └── MainActivity.kt
├── core # 공통 유틸/설계 (모든 feature 에서 사용)
│ ├── common # Result, Dispatcher, ErrorHandler, extension
│ ├── design # Theme, Typography, 재사용 Compose UI
│ ├── location # 위치 트래커/권한 헬퍼
│ └── notification # 공용 알림 채널/헬퍼
├── data # 외부/로컬 데이터 접근 구현부
│ ├── local # Room, DataStore
│ ├── remote # Retrofit, Interceptor, api/dto/mapper
│ ├── repository # Repository 구현
│ └── service # FCM, ForegroundService 등
├── domain # 비즈니스 규칙(플랫폼 독립)
│ ├── model # 순수 모델
│ ├── repository # 인터페이스(포트)
│ └── usecase # 유스케이스(Interactor)
├── di # Hilt 모듈들(NetworkModule, DatabaseModule…)
├── feature # 기능 단위 UI + VM (screen 묶음)
│ ├── auth
│ ├── home
│ ├── map
│ ├── content # list/detail
│ ├── recording
│ ├── profile
│ └── settings
├── navigation # 앱 전역 NavHost, route 정의
└── util # (가능하면 core/common 으로 흡수)
com.shinhan.campung
├── app # 부팅/전역 설정
│ ├── config # WebMvc, Jackson, CORS, Swagger, QueryDSL, i18n
│ ├── security # JWT, SecurityFilterChain, AuthProvider
│ ├── exception # GlobalExceptionHandler, ErrorCode
│ └── util # Clock, IdGenerator 등
├── common # 공용 DTO/이벤트/매퍼
├── core # 인프라 어댑터(외부 연동 공용)
│ ├── persistence # BaseEntity, Auditing, SoftDelete
│ ├── cache # RedisConfig, CacheManager
│ └── external # 외부 API 클라이언트(WebClient/Feign)
├── feature # 기능 모듈(api/application/domain/infrastructure)
│ ├── auth
│ ├── user
│ ├── content # 게시글/댓글/좋아요
│ ├── recording # 감정 기록, 음성/텍스트 요약
│ ├── location # 위치, 지오해시, 캠퍼스 존
│ ├── notification # 알림 구독, 토큰, 푸시 발송
│ └── admin # 관리자/통계/모니터링
└── support # 배치/스케줄/헬스체크/테스트 픽스처
├── batch # Spring Batch
├── scheduler # 집계·청소 작업
└── monitor # Actuator 확장, HealthIndicator
- 포팅 매뉴얼:
exec/폴더 참고 - 기능 명세서: (링크 추가)
- 와이어프레임: (링크 추가)
- API 명세서: (링크 추가)
- ERD: (링크 추가)
- 시퀀스 다이어그램: (링크 추가)
- 간트 차트: (링크 추가)


















