AI 기반 커리어 아카이브 서비스
가볍게 흘려보낸 오늘의 기록이, 내일의 커리어 자산이 됩니다.
SPROUT는 사용자의 경험을 기록하고 AI를 활용해 커리어 자산으로 발전시키는 AI 기반 커리어 아카이브 서비스입니다.
프로젝트, 스터디, 세미나 등 다양한 경험을 기록하면 AI가 이를 분석하여 자기소개서 작성과 모의 면접까지 이어질 수 있도록 지원합니다.
| Item | Details |
|---|---|
| Development | 2026.07.01 ~ 2026.08.08 (6 Weeks) |
| Type | Club Project |
| Language | Java 17 |
| Framework | Spring Boot |
| Database | PostgreSQL, Redis |
| Feature | Description |
|---|---|
| Experience Archive | 자유 기록, 템플릿 기록, 태그 및 카테고리 관리, 파일 첨부 |
| AI Career Assistant | AI 자기소개서 생성, AI 모의 면접, SSE 스트리밍 |
| Social | 게시글 공유, 팔로우, 댓글 |
| Statistics | 활동 통계, 기록 추이, 카테고리 분석 |
flowchart TB
User[User]
Frontend[React Frontend - Vercel]
Backend[Spring Boot Backend - AWS EC2]
Security[Authentication - Kakao OAuth2 JWT]
Redis[(Redis)]
PostgreSQL[(PostgreSQL)]
S3[AWS S3]
OpenAI[OpenAI API]
User --> Frontend
Frontend --> Backend
Backend --> Security
Security --> Redis
Backend --> PostgreSQL
Backend -->|Generate Presigned URL| S3
Frontend -->|Direct Upload| S3
Backend -->|WebClient| OpenAI
OpenAI --> Backend
Backend -->|SSE Streaming| Frontend
| Component | Responsibility |
|---|---|
| Redis | Refresh Token 저장, JWT 블랙리스트 관리, SSE 세션 관리 및 캐시 |
| S3 | Presigned URL 기반 파일 업로드 |
| OpenAI | AI 자기소개서 및 모의면접 생성 |
| JWT / OAuth2 | 사용자 인증 및 인가 처리 |
Domain-Driven Structure를 적용하여 도메인별 패키지를 분리하고, 공통 모듈은 global 패키지에서 관리합니다.
├── domain
│ ├── auth
│ ├── member
│ ├── post
│ ├── comment
│ ├── follow
│ ├── resume
│ ├── interview
│ └── motivation
│
└── global
├── ai
├── config
├── common
└── error
| Name | GitHub | Contribution |
|---|---|---|
| 전채연 | @RockScissors | 프로젝트 초기 설정, AI Interview/Follow/Template/Category 도메인 개발, Statistics API 구현 |
| 김남우 | @namwoooo | Resume/Comment 도메인 개발, AWS S3 Presigned URL 기반 파일 업로드, 배포 환경 구성 |
| 박서영 | @sum-young | Spring Security 인증/인가, Member/Profile/Post 도메인 개발 |
- Java 17
- Docker
- PostgreSQL 17
- Redis 7
git clone https://github.com/EFUB-SWS-MANDO/Backend.git
cd Backend애플리케이션 실행을 위해 아래 환경 변수를 설정해야 합니다.
| Variable | Description |
|---|---|
SPRING_DATASOURCE_URL |
PostgreSQL connection URL |
SPRING_DATASOURCE_USERNAME |
Database username |
SPRING_DATASOURCE_PASSWORD |
Database password |
REDIS_HOST |
Redis host |
REDIS_PORT |
Redis port |
JWT_SECRET |
JWT signing key |
OPENAI_API_KEY |
OpenAI API key |
AWS_ACCESS_KEY_ID |
AWS access key |
AWS_SECRET_ACCESS_KEY |
AWS secret key |
S3_BUCKET_NAME |
S3 bucket name |
Docker Compose로 의존성 서비스를 실행한 뒤 애플리케이션을 실행합니다.
docker compose up -d
./gradlew bootRunGitHub Actions를 통해 main 브랜치 push 시 자동 빌드 및 배포가 수행됩니다.
flowchart LR
A[GitHub Push]
B[GitHub Actions]
C[Gradle Build]
D[Docker Image Build]
E[Docker Hub]
F[AWS EC2]
A --> B
B --> C
C --> D
D --> E
E --> F
