Skip to content

Repository files navigation

CareCode Interface (맘편한)

부모를 위한 통합 육아 지원 플랫폼

오픈소스 개발자 경진대회 프로젝트

Spring BootJavaMariaDBRedisLicense


목차

  1. 프로젝트 소개
  2. 프로젝트 배경 및 목적
  3. 핵심 기능
  4. 기술 스택
  5. 시스템 아키텍처
  6. 도메인 구조
  7. 빠른 시작
  8. API 문서
  9. 배포 가이드
  10. 개발 로드맵
  11. 기여하기
  12. 라이선스

프로젝트 소개

**CareCode Interface (맘편한)**는 육아를 하는 부모들을 위한 통합 육아 지원 플랫폼입니다.

대한민국의 부모들은 육아 과정에서 다음과 같은 어려움을 겪고 있습니다:

  • 정부/지자체 육아 정책 정보가 흩어져 있어 찾기 어려움
  • 돌봄 시설(어린이집, 유치원) 정보 비교가 불편함
  • 자녀 건강 기록을 체계적으로 관리하기 어려움
  • 육아 고민을 나눌 커뮤니티 부족
  • 24시간 육아 상담 서비스의 부재

CareCode Interface는 이러한 문제를 해결하기 위해 7가지 핵심 도메인을 통합하여 부모들에게 원스톱 육아 지원 서비스를 제공합니다.


프로젝트 배경 및 목적

배경

대한민국의 합계출산율은 2023년 기준 0.72명으로 OECD 국가 중 최하위를 기록하고 있습니다. 저출산의 주요 원인 중 하나는 육아 부담입니다. 정부는 매년 수백 가지의 육아 지원 정책을 발표하지만, 정보 접근성이 낮아 실제로 혜택을 받는 부모는 제한적입니다.

또한, 육아 관련 정보가 여러 플랫폼에 분산되어 있어 부모들은:

  • 정책 정보는 정부24 또는 각 지자체 홈페이지
  • 돌봄 시설 정보는 아이사랑보육포털
  • 건강 정보는 질병관리청 또는 병원 앱
  • 커뮤니티는 맘카페

각각 다른 서비스를 이용해야 하는 불편함을 겪고 있습니다.

목적

CareCode Interface는 다음을 목표로 합니다:

  1. 정보 통합: 육아 관련 모든 정보를 한 곳에서 제공
  2. 접근성 향상: 직관적인 UI/UX로 누구나 쉽게 사용 가능
  3. 개인화: 자녀 정보를 기반으로 맞춤형 정보 제공
  4. 커뮤니티: 부모들 간의 정보 공유 및 상호 지원
  5. AI 지원: 24시간 챗봇을 통한 즉각적인 육아 상담
  6. 데이터 관리: 자녀 건강 기록, 성장 곡선 등 체계적 관리
  7. 공공 데이터 활용: 공공 API를 통한 신뢰성 있는 정보 제공

기대 효과

  • 육아 정보 탐색 시간 60% 단축
  • 육아 정책 활용도 40% 증가
  • 부모들의 육아 스트레스 30% 감소
  • 커뮤니티를 통한 사회적 지지 네트워크 형성

핵심 기능

1. 사용자 관리 (User Domain)

  • 회원가입/로그인: 이메일 인증 기반 일반 회원가입
  • 소셜 로그인: 카카오, 구글 OAuth2 지원
  • JWT 토큰 인증: 안전한 인증 및 세션 관리
  • 자녀 정보 관리: 다수의 자녀 정보 등록 및 관리
  • 알림 설정: 개인화된 알림 채널 및 시간대 설정

2. 돌봄 시설 관리 (CareFacility Domain)

  • 시설 검색: 유형별(어린이집, 유치원, 놀이방), 지역별, 연령대별 필터링
  • 위치 기반 검색: 내 주변 돌봄 시설 찾기
  • 시설 상세 정보: 운영 시간, 정원, 프로그램, 요금 등
  • 시설 예약: 온라인 방문 예약 및 관리
  • 리뷰 시스템: 시설 이용 후기 작성 및 조회

3. 커뮤니티 (Community Domain)

  • 게시글 관리: 카테고리별(일반, 질문, 후기, 뉴스 등) 게시글 작성
  • 댓글/대댓글: 무한 댓글 기능으로 활발한 소통
  • 태그 시스템: 해시태그를 통한 게시글 분류 및 검색
  • 좋아요/북마크: 유용한 게시글 저장 및 공유
  • 익명 게시: 민감한 고민도 안전하게 공유

4. 건강 관리 (Health Domain)

  • 건강 기록: 예방접종, 진료, 검진, 성장 기록 관리
  • 성장 추적: 신장, 체중 기록 및 성장 곡선 분석
  • 진료 기록 첨부: 진단서, 검진표 등 문서 보관
  • 병원 정보: 소아과, 소아치과 등 병원 검색 및 리뷰
  • 건강 통계: 자녀의 건강 데이터 시각화

5. 정책 정보 (Policy Domain)

  • 정책 검색: 육아휴직, 보육료 지원, 양육비 지원 등
  • 카테고리별 분류: 정책 유형에 따른 체계적 분류
  • 공공 데이터 연동: 서울시 등 공공 API 실시간 연동
  • 정책 북마크: 관심 정책 저장 및 알림 설정
  • 맞춤형 정책: 자녀 나이, 지역 기반 추천

6. 알림 시스템 (Notification Domain)

  • 실시간 알림: 예약, 댓글, 정책 업데이트 즉시 알림
  • 다중 채널: 이메일, 푸시, SMS 중 선택
  • 알림 템플릿: 일관된 형식의 알림 메시지
  • 야간 모드: 방해 금지 시간대 설정
  • 알림 이력: 놓친 알림 확인

7. AI 챗봇 (Chatbot Domain)

  • 24/7 육아 상담: 언제든지 육아 고민 상담
  • 다중 세션 관리: 여러 주제의 대화 동시 진행
  • 대화 히스토리: 이전 상담 내용 저장 및 조회
  • 피드백 수집: 챗봇 응답의 유용성 평가
  • 맥락 이해: 이전 대화 내용을 기반으로 한 상담

8. 관리자 기능 (Admin Domain)

  • 사용자 관리: 회원 정보 조회 및 관리
  • 콘텐츠 관리: 시설, 병원, 정책 데이터 등록/수정
  • 커뮤니티 모니터링: 부적절한 게시글/댓글 관리
  • 대시보드: 서비스 통계 및 모니터링
  • 권한 관리: 역할 기반 접근 제어 (RBAC)

기술 스택

Backend

분류기술버전설명
언어Java17 (LTS)안정적이고 성능이 우수한 LTS 버전
프레임워크Spring Boot3.3.3최신 Spring Boot 기반
데이터베이스MariaDB10.x오픈소스 관계형 데이터베이스
캐시Redis7.x고성능 인메모리 캐시
인증JWT-토큰 기반 인증
ORMSpring Data JPA-객체-관계 매핑
보안Spring Security-인증 및 권한 관리
API 문서SpringDoc OpenAPI2.3.0Swagger UI 자동 생성

Infrastructure

분류기술설명
컨테이너Docker애플리케이션 컨테이너화
오케스트레이션Docker Compose멀티 컨테이너 관리
리버스 프록시NginxHTTP/HTTPS 라우팅
빌드 도구Gradle8.14.2
CI/CDGitHub Actions, CodeQL빌드·테스트·Trivy·Java 정적 분석(codeql.yml)

Monitoring & Logging

분류기술설명
모니터링Spring Actuator애플리케이션 헬스 체크
메트릭Prometheus시계열 메트릭 수집
로깅Logback + LogstashJSON 형식 구조화 로깅

External APIs

  • 카카오 OAuth2: 소셜 로그인
  • 구글 OAuth2: 소셜 로그인
  • 서울시 공공 데이터 API: 돌봄 시설, 정책 정보
  • 이메일 서비스: 이메일 인증 및 알림

시스템 아키텍처

계층형 아키텍처 (Layered Architecture)

┌─────────────────────────────────────────────┐
│ Presentation Layer │
│ (Controllers, REST API, Exception Handler) │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ Application Layer │
│ (Facades, Service Orchestration) │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ Business Layer │
│ (Services, Domain Logic, Validators) │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ Persistence Layer │
│ (Repositories, JPA Entities) │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ Database Layer │
│ (MariaDB, Redis) │
└─────────────────────────────────────────────┘

컴포넌트 다이어그램

┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Client │─────→│ Nginx │─────→│ Spring Boot │
│ (Web/Mobile) │ │ (Port 80/443)│ │ (8080) │
└──────────────┘ └──────────────┘ └──────────────┘
│
┌─────────────────┼─────────────────┐
│ │ │
┌─────▼─────┐ ┌─────▼─────┐ ┌─────▼─────┐
│ MariaDB │ │ Redis │ │ External │
│ (3307) │ │ (6380) │ │ APIs │
└───────────┘ └───────────┘ └───────────┘

도메인 주도 설계 (DDD)

프로젝트는 7개의 독립적인 도메인으로 구성되어 있으며, 각 도메인은 자체 엔티티, 서비스, 리포지토리를 포함합니다:

com.carecode.domain/
├── user/ # 사용자 및 인증
├── careFacility/ # 돌봄 시설
├── community/ # 커뮤니티
├── health/ # 건강 관리
├── policy/ # 정책 정보
├── notification/ # 알림
├── chatbot/ # AI 챗봇
└── admin/ # 관리자

도메인 구조

1. User Domain (사용자)

엔티티:

  • User: 사용자 기본 정보, 로그인, 이메일 인증
  • Child: 자녀 정보 (이름, 생년월일, 성별)
  • EmailVerificationToken: 이메일 인증 토큰
  • NotificationSettings: 사용자별 알림 설정

주요 API:

POST /auth/login - 일반 로그인 (응답: TokenDto JSON)
POST /auth/register - 회원가입 (응답: TokenDto JSON)
POST /auth/refresh - 액세스·리프레시 토큰 갱신
POST /auth/kakao/login - 카카오 code 교환 (응답: TokenDto JSON, isNewUser 포함)
GET /auth/kakao/login-url - 카카오 인가 URL (설정: KAKAO_CLIENT_ID, kakao.redirect-uri)
POST /auth/kakao/complete-registration - 카카오 가입 완료 (Bearer JWT)
POST /auth/logout - 로그아웃 (Bearer 필요, Redis 저장 시 해당 사용자 리프레시 토큰 전부 폐기)

리프레시 토큰을 Redis에서 관리하려면 jwt.refresh-token.store=redis(또는 환경 변수 JWT_REFRESH_TOKEN_STORE=redis)와 동작 중인 Redis를 설정합니다. 기본값 none이면 JWT 서명 검증만 수행합니다.

2. CareFacility Domain (돌봄 시설)

엔티티:

  • CareFacility: 시설 정보 (위치, 운영 시간, 정원, 프로그램)
  • CareFacilityBooking: 예약 정보
  • Review: 시설 리뷰
  • FacilityType: KINDERGARTEN, DAYCARE, PLAYGROUP, NURSERY

주요 API:

GET /facilities - 시설 목록
GET /facilities/{id} - 시설 상세
GET /facilities/type/{facilityType} - 유형별 조회
GET /facilities/location/{location} - 지역별 조회
POST /facilities/{id}/bookings - 예약 생성
PUT /facilities/{id}/bookings/{bid} - 예약 수정
DELETE /facilities/{id}/bookings/{bid} - 예약 취소

3. Community Domain (커뮤니티)

엔티티:

  • Post: 게시글
  • Comment: 댓글 (대댓글 지원)
  • Tag: 해시태그
  • PostLike: 좋아요
  • Bookmark: 북마크
  • PostCategory: GENERAL, QUESTION, SHARE, REVIEW, NEWS, EVENT, NOTICE

주요 API:

GET /community/posts - 게시글 목록 (페이징)
POST /community/posts - 게시글 작성
GET /community/posts/{postId} - 게시글 상세
PUT /community/posts/{postId} - 게시글 수정
DELETE /community/posts/{postId} - 게시글 삭제
POST /community/posts/{postId}/like - 좋아요
POST /community/posts/{postId}/bookmark - 북마크

4. Health Domain (건강 관리)

엔티티:

  • HealthRecord: 건강 기록 (CHECKUP, VACCINATION, ILLNESS, GROWTH)
  • HealthRecordAttachment: 첨부파일 (진단서, 검진표)
  • Hospital: 병원 정보
  • HospitalReview: 병원 리뷰
  • HospitalLike: 병원 좋아요

주요 API:

POST /health/records - 건강 기록 등록
GET /health/records/{recordId} - 건강 기록 조회
GET /health/records/user/{userId} - 사용자 건강 기록
GET /health/hospitals - 병원 목록
GET /health/statistics - 건강 통계

5. Policy Domain (정책)

엔티티:

  • Policy: 정책 정보
  • PolicyCategory: 정책 카테고리
  • PolicyDocument: 정책 관련 문서

주요 API:

GET /policies - 정책 목록
GET /policies/{policyId} - 정책 상세
POST /policies/search - 정책 검색
GET /policies/category/{category} - 카테고리별 정책

6. Notification Domain (알림)

엔티티:

  • Notification: 알림 메시지
  • NotificationTemplate: 알림 템플릿
  • NotificationPreference: 알림 채널 선호도
  • NotificationSettings: 전역 알림 설정

알림 타입:

  • BOOKING: 예약 관련
  • REVIEW: 리뷰 관련
  • COMMENT: 댓글
  • POLICY: 정책 업데이트
  • SYSTEM: 시스템 알림

7. Chatbot Domain (챗봇)

엔티티:

  • ChatSession: 대화 세션
  • ChatMessage: 메시지 (사용자/봇)

주요 API:

POST /chatbot/chat - 메시지 전송
GET /chatbot/sessions - 세션 목록
GET /chatbot/history - 대화 기록

8. Admin Domain (관리자)

주요 기능:

  • 사용자 관리 (조회, 정지, 삭제)
  • 시설/병원 데이터 관리
  • 커뮤니티 모니터링
  • 정책 데이터 관리
  • 대시보드 및 통계

빠른 시작

필수 요구사항

  • Java: 17 이상
  • Docker: 20.x 이상
  • Docker Compose: 2.x 이상
  • Gradle: 8.x 이상 (또는 포함된 Gradle Wrapper 사용)

로컬 개발 환경 설정

1. 프로젝트 클론

git clone https://github.com/your-organization/carecode-interface.git
cd carecode-interface

2. 환경 변수 설정

.env 파일을 생성하고 다음 정보를 입력하세요:

# DatabaseDB_USERNAME=carecode_userDB_PASSWORD=your_secure_passwordDB_NAME=carecode_db# JWTJWT_SECRET=your_jwt_secret_key_here# RedisREDIS_HOST=localhostREDIS_PORT=6380# OAuth2KAKAO_CLIENT_ID=your_kakao_client_idKAKAO_CLIENT_SECRET=your_kakao_client_secretGOOGLE_CLIENT_ID=your_google_client_idGOOGLE_CLIENT_SECRET=your_google_client_secret# EmailMAIL_USERNAME=your_email@gmail.comMAIL_PASSWORD=your_email_app_password# Public Data APIPUBLIC_DATA_API_KEY=your_public_data_api_key

3. 프로젝트 빌드

./gradlew clean build

4. Docker로 실행

docker-compose up -d

5. 애플리케이션 접속

로컬 개발 (IDE)

데이터베이스와 Redis만 Docker로 실행하고, Spring Boot 애플리케이션은 IDE에서 실행:

# 데이터베이스/레디스만 실행
docker-compose up carecode-mariadb carecode-redis -d
# 애플리케이션 실행
./gradlew bootRun

API 문서

설계 문서

기능별 상세 문서와 아키텍처는 docs/ 에 있습니다. 무엇을 만들었는지보다 왜 그렇게 만들었는지를 남기는 것을 목표로 합니다.

문서내용
시스템 개요계층 구조, 요청·배치 흐름
데이터 흐름공공데이터 수집 → 알림까지의 파이프라인
공공데이터 연동4개 정부 API, 공급자 추상화
지원금 지능화추천·비교·놓친 지원금·금액 신뢰도
시설 지능화정원 시계열·입소 예측·빈자리 알림
알림과 리텐션알림 3종과 중복 방지
기동 안정화실기동에서 드러난 차단 8건
회귀 방지왜 CI 가 못 잡았는지

Swagger UI

프로젝트는 SpringDoc OpenAPI 3를 사용하여 자동으로 API 문서를 생성합니다. 운영(prod) 프로파일에서는 차단됩니다.

접속 URL: http://localhost/swagger-ui.html

주요 API 엔드포인트

도메인엔드포인트설명
인증/auth/*로그인, 회원가입, 토큰 갱신
사용자/users/*사용자 정보 관리
시설/facilities/*돌봄 시설 조회, 예약
커뮤니티/community/*게시글, 댓글 관리
건강/health/*건강 기록, 병원 정보
정책/policies/*정책 조회, 검색
알림/notifications/*알림 조회, 설정
챗봇/chatbot/*챗봇 대화
관리자/api/admin/*관리자 기능 (JWT + ROLE_ADMIN 필요)

인증

대부분의 API는 JWT 토큰 인증이 필요합니다. 토큰은 응답 JSON 본문(TokenDto: accessToken, refreshToken, expiresIn 등)으로 내려가며, 카카오 로그인도 동일합니다. 컨트롤러 단위 @CrossOrigin은 사용하지 않으며, 허용 오리진은 app.security.cors.allowed-origins(쉼표 구분)와 SecurityConfig의 CORS 설정만 따릅니다. jwt.refresh-token.store=redis이면 로그인·갱신 시 발급한 리프레시 토큰이 Redis에 등록되고, /auth/refresh는 등록된 토큰만 갱신하며 POST /auth/logout으로 해당 사용자의 리프레시 세션을 일괄 폐기할 수 있습니다(액세스 토큰 블랙리스트는 포함하지 않음).

헤더 예시:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

로그인 API:

curl -X POST http://localhost/auth/login \
-H "Content-Type: application/json" \
-d '{ "email": "admin@carecode.com", "password": "admin123" }'

응답(요약 — 실제 필드는 TokenDtouser 객체 포함):

{
"success": true,
"message": "로그인 성공!",
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"tokenType": "Bearer",
"expiresIn": 3600000,
"refreshExpiresIn": 2592000000
}

배포 가이드

Docker Compose를 이용한 배포

1. 프로덕션 빌드

./gradlew clean build -Pprofile=prod

2. Docker 이미지 빌드

docker build -t carecode-interface:latest .

3. Docker Compose 실행

docker-compose up -d

4. 로그 확인

# 전체 로그
docker-compose logs -f
# API 로그만
docker-compose logs -f carecode-api
# 특정 줄 수만
docker-compose logs -f --tail=100 carecode-api

5. 컨테이너 상태 확인

docker-compose ps

환경별 프로파일

  • dev: 개발 환경 (application-dev.yml)
  • prod: 프로덕션 환경 (application-prod.yml)
  • docker: Docker 환경 (application-docker.yml)

프로파일 변경:

SPRING_PROFILES_ACTIVE=prod docker-compose up -d

데이터베이스 마이그레이션

초기 데이터베이스 스키마는 JPA의 ddl-auto 설정으로 자동 생성됩니다.

프로덕션 환경에서는 ddl-auto: validate로 설정하고, 별도의 마이그레이션 도구(Flyway, Liquibase 등)를 사용할 것을 권장합니다.


데이터베이스 구조

ERD (Entity Relationship Diagram)

25개 테이블로 구성되어 있습니다.

자세한 ERD는 ERD 문서를 참고하세요.

주요 테이블

테이블명설명주요 컬럼
TBL_USER사용자user_id, email, password, username
TBL_CHILD자녀 정보child_id, user_id, name, birth_date
TBL_CARE_FACILITY돌봄 시설facility_id, name, type, location
TBL_POST게시글post_id, user_id, title, content, category
TBL_HEALTH_RECORD건강 기록record_id, child_id, record_type, date
TBL_POLICY정책policy_id, title, category, target_age
TBL_NOTIFICATION알림notification_id, user_id, type, message
TBL_CHAT_SESSION챗봇 세션session_id, user_id, created_at

개발 로드맵

Phase 1: 긴급 개선 (완료)

  • 예외 처리 일관성 개선
  • 설정 파일 환경별 분리
  • 기본 테스트 코드 작성
  • 챗봇 응답 DTO 추가

Phase 2: 중요 개선 (진행 중)

  • JSON 형식 로깅 (Logstash)
  • 캐싱 전략 확장 (Redis)
  • 트랜잭션 관리 개선
  • 통합 테스트 확대
  • API 응답 시간 최적화

Phase 3: 장기 개선 (예정)

  • N+1 쿼리 최적화
  • 모니터링 대시보드 구축
  • API 버전 관리 (v2)
  • WebSocket 기반 실시간 알림
  • 챗봇 AI 모델 고도화
  • 모바일 앱 개발 (React Native)

향후 계획

  • 2025 Q2: 공공 데이터 API 확대 (전국 17개 시도)
  • 2025 Q3: 챗봇 GPT-4 모델 적용
  • 2025 Q4: 모바일 앱 출시

프로젝트 구조

CareCode_Interface/
├── src/
│ ├── main/
│ │ ├── java/com/carecode/
│ │ │ ├── domain/ # 도메인별 패키지
│ │ │ │ ├── user/ # 사용자 도메인
│ │ │ │ │ ├── controller/
│ │ │ │ │ ├── service/
│ │ │ │ │ ├── repository/
│ │ │ │ │ ├── entity/
│ │ │ │ │ └── dto/
│ │ │ │ ├── careFacility/ # 돌봄 시설 도메인
│ │ │ │ ├── community/ # 커뮤니티 도메인
│ │ │ │ ├── health/ # 건강 도메인
│ │ │ │ ├── policy/ # 정책 도메인
│ │ │ │ ├── notification/ # 알림 도메인
│ │ │ │ ├── chatbot/ # 챗봇 도메인
│ │ │ │ └── admin/ # 관리자 도메인
│ │ │ ├── core/ # 공통 컴포넌트
│ │ │ │ ├── security/ # 보안 (JWT, OAuth2)
│ │ │ │ ├── exception/ # 예외 처리
│ │ │ │ ├── config/ # 설정
│ │ │ │ ├── aop/ # AOP 기능
│ │ │ │ └── util/ # 유틸리티
│ │ │ └── CareCodeApplication.java # 메인 클래스
│ │ └── resources/
│ │ ├── application.yml # 기본 설정
│ │ ├── application-dev.yml # 개발 환경 설정
│ │ ├── application-prod.yml # 프로덕션 설정
│ │ ├── application-docker.yml # Docker 설정
│ │ ├── templates/ # Thymeleaf 템플릿
│ │ ├── static/ # 정적 리소스
│ │ └── documents/ # 문서
│ │ └── ERD.md # ERD 문서
│ └── test/ # 테스트 코드
│ ├── java/com/carecode/
│ │ ├── domain/ # 도메인별 테스트
│ │ └── core/ # 공통 기능 테스트
│ └── resources/
│ └── application-test.yml # 테스트 설정
├── scripts/ # 배포 스크립트
│ └── deploy.sh
├── .github/ # GitHub 설정
│ ├── workflows/ # CI/CD 워크플로우
│ ├── ISSUE_TEMPLATE/ # 이슈 템플릿
│ └── pull_request_template.md # PR 템플릿
├── docker-compose.yml # Docker Compose 설정
├── Dockerfile # Docker 이미지 빌드
├── build.gradle # Gradle 빌드 설정
├── settings.gradle # Gradle 프로젝트 설정
├── .env # 환경 변수 (Git 제외)
├── .gitignore # Git 제외 파일
├── README.md # 프로젝트 소개 (본 문서)
├── ARCHITECTURE_IMPROVEMENTS.md # 아키텍처 개선 문서
└── IMPROVEMENTS_SUMMARY.md # 개선 사항 요약

주요 개선 사항

1. 예외 처리 개선

  • ErrorCode Enum: 도메인별 에러 코드 체계화
  • CareServiceException: 공통 예외 클래스
  • GlobalExceptionHandler: 일관된 에러 응답 형식

2. 로깅 개선

  • Logback + Logstash: JSON 형식 구조화 로깅
  • LogExecutionTime AOP: 메서드 실행 시간 자동 로깅
  • 요청/응답 로깅: 모든 HTTP 요청/응답 로깅

3. 캐싱 전략

  • Redis 캐싱: 자주 조회되는 데이터 캐싱
  • TTL 설정: 데이터 유형별 차별화된 TTL
    • 건강 기록: 5분
    • 정책: 30분
    • 돌봄 시설: 15분
    • 사용자 정보: 10분

4. AOP 기반 공통 기능

  • @LogExecutionTime: 실행 시간 로깅
  • @RateLimit: Rate Limiting (로그인 시도 제한)
  • @RequireAuthentication: 인증 필수(일부 컨트롤러는 SecurityConfig + @PreAuthorize("isAuthenticated()")로 대체)
  • @RequireAdminRole: 관리자 권한 필수
  • @ValidateLocation: 지역 검증
  • @ValidateChildAge: 연령대 검증

5. 성능 최적화

  • N+1 쿼리 해결: JOIN FETCH 활용
  • 페이징 처리: 대용량 데이터 효율적 조회
  • 인덱스 최적화: 50개 이상의 인덱스 설정

기여하기

CareCode Interface는 오픈소스 프로젝트입니다. 기여를 환영합니다!

기여 방법

  1. 이슈 등록: 버그 발견 또는 기능 제안
  2. Fork: 저장소를 Fork합니다
  3. 브랜치 생성: git checkout -b feature/amazing-feature
  4. 커밋: git commit -m 'feat: Add some amazing feature'
  5. 푸시: git push origin feature/amazing-feature
  6. Pull Request: PR을 생성하고 리뷰 요청

커밋 메시지 규칙

feat: 새로운 기능 추가
fix: 버그 수정
refactor: 코드 리팩토링
docs: 문서 수정
test: 테스트 코드 추가/수정
chore: 빌드, 설정 파일 수정
style: 코드 포맷팅 (기능 변경 없음)

코드 스타일

  • Java: Google Java Style Guide
  • 들여쓰기: 스페이스 4칸
  • 줄 길이: 최대 120자

라이선스

이 프로젝트는 MIT 라이선스를 따릅니다. 자세한 내용은 LICENSE 파일을 참고하세요.


팀 정보

프로젝트명: CareCode Interface (맘편한) 개발 기간: 2024.10 ~ 현재 참여 인원: 5명 GitHub: https://github.com/your-organization/carecode-interface


연락처

프로젝트에 대한 문의사항이 있으시면 아래로 연락 주세요: 정보제공 책임자 - 오태훈


감사의 글

이 프로젝트는 오픈소스 개발자 경진대회를 위해 개발되었습니다.

육아를 하는 모든 부모님들의 행복한 육아를 응원합니다.

CareCode Interface - 부모를 위한 통합 육아 지원 플랫폼

About

✨2025 오픈 소스 개발자 경진대회 "맘편한" 프로젝트 인터페이스

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages