| 이은서(29) |
|---|
![]() |
| FE, BE, PM |
| GitHub |
_ _ _ ___ ____
| \ | | / \ / _ \/ ___|
| \| | / _ \| | | \___ \
| |\ |/ ___ \ |_| |___) |
|_| \_/_/ \_\___/|____/
:: NAOS - AI Recipe Platform ::| 항목 | 값 |
|---|---|
| 🖱️ | https://wearenaos.com/ |
| ID | seed@naos.com |
| PW | seed1234! |
| 단계 | 설명 |
|---|---|
| 1단계 | 회원가입 탭 선택 후 이메일 주소 입력 |
| 2단계 | 이메일로 발송된 6자리 인증코드 입력 (5분간 유효) |
| 3단계 | 서비스에서 사용할 사용자명 설정 |
| 4단계 | 비밀번호(8~20자) 입력 후 가입 완료 |
레시피 업로드 기능을 테스트할 수 있도록 샘플 영상을 제공합니다.
| 단계 | 설명 |
|---|---|
| 1 | 위 링크에서 영상을 다운로드 |
| 2 | NAOS 로그인 후 하단 '업로드' 탭 선택 |
| 3 | 다운로드한 영상 파일 선택 |
| 4 | Whisper AI가 음성 분석하여 클립 자동 분할 (1~3분 소요) |
| 5 | 분할된 클립 확인/수정 후 썸네일 선택 |
| 6 | 레시피 정보 입력 후 '분석하기' 클릭 → AI 가성비 점수 확인 |
| 7 | '공유하기' 버튼으로 업로드 완료 |
git clone https://github.com/monimoni12/naos.git
cd naoscp .env.example .env
nano .env # 실제 값 입력docker compose up --build -d- Frontend: http://localhost:3000
- Backend: http://localhost:8090
- Java 17+
- Node.js 18+
- Python 3.9+
- Docker & Docker Compose
- MySQL 8.0+
cd be
./gradlew build
./gradlew bootRuncd fe
npm install
npm run devcd ai
pip install -r requirements.txt
python main.pydocker compose up --build -dNAOS는 요리와 영상의 병행이 어려운 문제를 해결하는
건강 맞춤 AI 레시피 추천 플랫폼입니다.
Whisper 기반 영상 자동분할 기술을 최초로 적용하여,
레시피 영상을 단계별로 자동 분리하고 각 단계를 자동 반복재생합니다.
- 🎬 Whisper 기반 영상 자동분할: 레시피 영상을 조리 단계별로 자동 분리
- 💰 AI 가성비 점수: GPT가 가격·영양·시간을 분석해 0~100점 산출
- 🥗 건강 맞춤 필터: 저탄수화물, 고단백 등 카테고리별 검색
- 👥 SNS형 커뮤니티: 팔로우, 좋아요, 댓글, 스크랩 기능
20~34세 MZ세대의 '헬시 플레저' 라이프스타일을 위한
새로운 요리 경험을 제공합니다.
왜 NAOS인가? 기존 요리 경험의 4대 문제점
- MZ 중심 헬시 플레저 소비 증가
- 요리 영상 소비 증가(TikTok·Instagram Reels 트렌드)
- “집밥 재발견” 트렌드
- 홈트 + 홈쿡 동시 성장
- YouTube/Instagram은 ‘보기 좋은 콘텐츠’는 많지만 ‘따라하기 쉬운 콘텐츠’는 부족
- 화면 꺼짐
- 영상 진행 속도와 조리 속도 불일치
- 손이 젖어 있어 조작 불편
- 뒤로 가기 시 다른 영상으로 넘어가는 UX 문제
- 건강 기준이 사람마다 다름
- 명확한 ‘맞춤형 건강 레시피’가 존재하지 않음
- “이 요리 만드는 데 얼마 들지?” 감이 없음
- 초보자일수록 장벽이 큼
- 유튜브·블로그에 ‘나에게 맞지 않는 정보’가 너무 많음
- 체계적 큐레이션 없음
- 레시피 영상 업로드 시 OpenAI Whisper가 음성을 분석
- 문장별 타임스탬프를 추출하여 조리 단계별 자동 분리
- 각 단계는 사용자가 넘길 때까지 자동 반복재생
- 요리 중 손이 젖어도, 영상이 빨리 지나가도 걱정 없음
- GPT가 레시피의 재료 가격, 영양 구성, 조리 시간을 종합 분석
- 0~100점의 가성비 점수 산출
- 가격 효율성 35%
- 시간 효율성 25%
- 영양 균형 25%
- 재료 접근성 15%
- 레시피 카드에 배지 형태로 표시
- 가성비순 정렬 필터 제공
- 카테고리: 저탄수화물, 고단백, 반찬, 간식
- 난이도: 쉬움, 보통, 어려움
- 최대 가격: 0원 ~ 50,000원
- 최대 조리 시간: 0분 ~ 120분
- 팔로우: 다른 사용자 팔로우 및 팔로잉 피드
- 좋아요: 실시간 좋아요 수 반영
- 댓글/대댓글: WebSocket 기반 실시간 댓글
- 책갈피: 레시피 스크랩 및 프로필에서 확인
- 요리 시작하기 버튼으로 단계별 체크
- 진행 상황 서버 자동 저장
- 중단 후 이어서 진행 가능
- 프로필의 '요리중' 탭에서 확인
NAOS는 다음과 같은 기대효과를 제공합니다.
커뮤니티 구조가 사용자 간 동기부여를 만들고, 가성비 중심 정보가 축적되며 선순환을 일으킵니다.
- 팔로우/좋아요/댓글을 통한 상호 격려
- 다른 사용자의 성공 레시피 참고 가능
레시피가 단계별로 구조화되고 클립 반복 기능이 있어, 요리 병행에 최적화되어 있습니다.
- Whisper 자동분할로 영상이 1단계·2단계·3단계로 분리
- 각 단계 자동 반복재생 → 요리 중 영상 조작 불필요
- 유튜브처럼 뒤로 돌려보는 불편함 해소
가격·영양·시간을 한눈에 비교할 수 있어, 사용자가 즉시 더 나은 선택을 하도록 돕습니다.
- AI 가성비 점수로 효율적인 레시피 즉시 파악
- 필터로 예산/시간/건강 목표에 맞는 레시피 검색
- "이 요리 만드는 데 얼마 들지?" 고민 해결
| 분류 | 기술 스택 |
|---|---|
| Frontend | |
| Backend | |
| DevOps / Infra | |
| AI | |
| Documentation/Test |
be/ (Backend - Spring Boot)
└── src/
├── main/
│ ├── java/com/naos/
│ │ ├── domain/
│ │ │ ├── auth/ # 인증/인가 (JWT, 이메일 인증)
│ │ │ │ ├── controller/
│ │ │ │ ├── service/
│ │ │ │ ├── dto/
│ │ │ │ └── entity/
│ │ │ ├── user/ # 사용자 관리
│ │ │ ├── recipe/ # 레시피 CRUD
│ │ │ ├── feed/ # 홈 피드 & 필터
│ │ │ ├── comment/ # 댓글/대댓글
│ │ │ ├── like/ # 좋아요
│ │ │ ├── bookmark/ # 책갈피(스크랩)
│ │ │ ├── follow/ # 팔로우/팔로잉
│ │ │ └── cooking/ # 요리 진행 추적
│ │ │
│ │ └── global/
│ │ ├── config/ # Spring 설정 (Security, WebSocket, Redis)
│ │ ├── exception/ # 전역 예외 처리
│ │ ├── init/ # 시드 데이터 초기화
│ │ ├── aws/ # S3 Presigned URL
│ │ └── websocket/ # WebSocket + Redis Pub/Sub
│ │
│ └── resources/
│ ├── application.yml
│ ├── application-dev.yml
│ └── application-prod.yml
│
└── Dockerfile
fe/ (Frontend - Next.js)
└── src/
├── app/ # Next.js App Router
│ ├── layout.tsx
│ ├── page.tsx # 홈 피드
│ ├── (auth)/ # 인증 (로그인/회원가입)
│ ├── (main)/ # 메인 레이아웃
│ │ ├── feed/ # 피드 페이지
│ │ ├── recipe/[id]/ # 레시피 상세
│ │ ├── upload/ # 레시피 업로드
│ │ ├── profile/ # 프로필
│ │ └── following/ # 팔로잉 피드
│ │
├── features/ # 도메인별 로직
│ ├── auth/ # 인증 관련
│ ├── recipe/ # 레시피 관련
│ ├── feed/ # 피드 관련
│ ├── comment/ # 댓글 관련
│ └── upload/ # 업로드 관련 (Whisper 연동)
│
├── components/ # 공통 컴포넌트
├── hooks/ # 커스텀 훅
├── lib/ # 유틸리티 (axios, etc)
└── constants/ # 상수 정의
ai/ (AI Server - Flask)
└── app/
├── main.py # Flask 앱 엔트리포인트
├── routes/
│ ├── whisper.py # Whisper STT API
│ └── analysis.py # GPT 가성비 분석 API
├── services/
│ ├── whisper_service.py # Whisper 음성→텍스트 변환
│ └── gpt_service.py # GPT 가성비 점수 산출
└── Dockerfile
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Client │────▶│ Nginx │────▶│ Next.js │
│ (Browser) │ │ (Reverse │ │ (Frontend) │
└─────────────┘ │ Proxy) │ └─────────────┘
└──────┬──────┘
│
┌─────────────────┼─────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Spring Boot │ │ Flask │ │ Redis │
│ (Backend) │◀───▶│ (AI Server) │ │ (Pub/Sub) │
└──────┬──────┘ └─────────────┘ └─────────────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ MySQL │ │ OpenAI API │
│ (Database) │ │ (Whisper, │
└─────────────┘ │ GPT) │
└─────────────┘
│
▼
┌─────────────┐
│ Amazon S3 │
│ (Storage) │
└─────────────┘



