Search
Duplicate

[안티그래비티]Saas개발 전체 과정 (랜딩페이지~배포·DB·결제)with AI

목차(클릭하세요)
처음 목표로 했던 앱: 사진 자동 선별 + 보정 + AI 글쓰기 + PDF 생성"을 한번에 해주는 통합 앱
개발전 질문: 그럼 내가 클로드나 Gemini의 API키를 활용해 나만의 서비스를 만들어 학생들에게 서비스를 제공한다면 Saas에 해당되는 걸까?
Claude API나 Gemini API를 활용해 서비스를 만드는 과정을 구분해야
Claude/Gemini API를 사용하는 것 = MaaS 소비자 역할
만든 서비스를 다른 사람에게 제공하면 = SaaS 제공자 역할

1. 개발전 핵심 기초 지식

1-1. Saas가 뭔데?

클라우드 서비스 모델 비교 (사스, 파스, 마스)
구분
SaaS
PaaS
MaaS
정식 명칭
Software as a Service
Platform as a Service
Model as a Service
제공 항목
완성된 소프트웨어
개발 플랫폼 + 인프라
AI 모델 API
사용자
일반 사용자, 기업 직원
개발자, 개발팀
AI 개발자, 데이터 과학자
관리 범위
데이터만 관리
애플리케이션 코드 관리
API 호출 및 통합 관리
기술 지식
불필요
프로그래밍 필요
API 사용법 필요
커스터마이징
제한적
높음
중간 (프롬프트/파라미터)
구체적 예시
줌, 노션, 캔바등
MS Azure, Vercel
Claude, Gemini API
특징
설치없이 브라우저에서 바로 사용
서버 관리 없이 코드만 작성하여 배포
API 호출로 AI 기능을 자신의 서비스에 통합

피자 배달 비유

서비스
비유
설명
SaaS
배달 피자 주문
완성된 피자를 받아서 바로 먹기만 하면 됨
PaaS
피자 키트 배달
재료와 도구는 제공, 직접 조리해서 먹음
MaaS
피자 레시피 구독
전문 셰프의 레시피를 받아 자신의 재료로 활용
SaaS(Software as a Service) 란?
인프라부터 소프트웨어까지 모든 레이어를 서비스 제공자가 관리하며, 사용자는 인터넷을 통해 필요한 기능만 이용하는 구독형 모델
Saas를 사용하는 목적
즉각적인 도입 및 낮은 초기 비용
서버 구축이나 소프트웨어 설치 없이 가입 즉시 사용 가능함.
초기 인프라 투자 비용 대신 사용한 만큼 지불하는(Pay-as-you-go) 구독 모델을 따름.
자동 업데이트 및 유지보수
최신 패치와 보안 업데이트가 서버 측에서 자동 적용됨.
사용자가 직접 버전을 관리하거나 수동으로 업그레이드할 필요가 없음.
접근성 및 협업 최적화
장소와 기기에 구애받지 않고 브라우저만 있으면 접속이 가능함.
데이터가 클라우드에 중앙 집중되어 실시간 공동 작업이 용이함.

1-2.트렌젝션, 그리고 동기 vs 비동기

트랜잭션(Transaction)이란?

은행 ATM에서 돈을 이체하는 과정: "내 계좌에서 돈 빼기 → 상대 계좌에 돈 넣기" 이 두 작업은 반드시 함께 성공하거나 함께 실패해야 한다. 중간에 오류가 나서 내 돈만 빠지고 상대방은 못 받으면 큰 일이 남!
트랜잭션: 여러 작업을 하나의 단위로 묶어서 처리하는 것

동기 트랜잭션 (Synchronous Transaction)

핵심 개념

"한 줄로 서서 차례대로 처리"
작업 1 시작 → 완료될 때까지 대기 → 작업 2 시작 → 완료될 때까지 대기 → 작업 3 시작

특징

요청을 보내면 결과가 올 때까지 기다림
순서가 보장됨
결과를 즉시 확인 가능
간단하고 예측 가능

코드 장단점

실생활 비유: 은행 창구 - 한 명씩 차례대로 업무 처리 - 앞 사람이 끝나야 내 차례 - 확실하지만 느릴 수 있음

동기 트랜젝션의 장단점

장점
단점
코드가 직관적이고 디버깅 쉬움
느린 작업이 있으면 전체가 느려짐
순서 보장으로 예측 가능
병렬 처리 불가능

비동기 트랜잭션 (Asynchronous Transaction) 핵심 개념

"여러 창구에서 동시에 처리"
작업 1 시작 ─┐ 작업 2 시작 ─┼→ 동시 진행 작업 3 시작 ─┘ ↓ 각자 완료되면 결과 반환
Plain Text
복사

특징

요청을 보내고 기다리지 않고 다음 작업 진행
완료되면 콜백이나 이벤트로 알림 받음
병렬 처리로 효율성 향상
복잡하지만 성능이 좋음

비동기 트랜젝션의 장단점

장점
단점
여러 작업을 동시에 처리해 빠름
코드가 복잡함
리소스 효율적 사용
순서 보장이 어려움
사용자 경험 향상
디버깅이 어려울 수 있음

실생활 비유: 패스트푸드점 주문

주문하면 번호표 받고 자리에서 대기
여러 주문이 동시에 조리됨
완성되면 번호 불러서 받아감
빠르지만 순서가 바뀔 수 있음

비교표

구분
동기 트랜잭션
비동기 트랜잭션
처리 방식
순차적 (하나씩)
병렬적 (동시 다발)
대기 시간
각 작업마다 대기
대기 없이 진행
코드 복잡도
단순함
복잡함
성능
상대적으로 느림
빠름
순서 보장
보장됨
보장 안 됨
사용 예
간단한 CRUD 작업
웹 API, 대용량 데이터 처리

설문조사를 동기vs비동기 트랜젝션으로 비교해보기

동기 방식 사용 시:
설문 응답을 하나씩 처리하며 화면에 진행상황 표시
각 응답의 처리 결과를 즉시 확인
비동기 방식 사용 시:
여러 학생의 응답을 동시에 받아 데이터베이스에 저장
전체 처리 시간 단축

2. 실습 목차

[프로젝트 개요] 서비스명: 스냅투스토리 (SnapStory) 개발 도구: Antigravity (안티그래비티) 총 과정: 9단계 35차시 목표: 사진 자동 선별 + AI 보정 + 글쓰기 + PDF 생성 웹앱 주요 기술 스택 확인: Frontend: React + Next.js 인증: Supabase Auth (구글/카카오 OAuth) 스토리지: Cloudflare R2 결제: 토스페이먼츠 배포: Vercel (CI/CD) 보안: Upstash Redis (Rate Limit)
Plain Text
복사
AI로 웹서비스를 개발하는 전체 과정 (랜딩페이지부터 배포·DB·결제까지)
이번 영상에서는 바이브코딩으로 AI 이미지 생성 서비스 ‘딸깍 스튜디오’를 만드는 전체 과정을 공개합니다. 영상을 보고 나만의 서비스를 직접 구현해보고 싶은 마음이 생겼다면 딸깍스튜디오 실전 패키지를 구경해 보세요! 👉 https://gpts.kr/5dzyFp ⏰ 타임스탬프 00:00 프로젝트 개요 00:36 Next.js 프로젝트 생성 & 초기 세팅 02:20 랜딩 페이지 제작 04:46 랜딩페이지 이미지 반영 12:08 이미지 생성 기능 구현 (Ideogram API 연동) 20:15 오류 해결 및 디버깅 노하우 21:26 프로젝트 Vercel로 배포 22:07 도메인 구매 (Hosting KR) 24:21 Cloudflare DNS 설정 26:47 Vercel 도메인 연동 29:39 로그인 창 UI 구현 33:37 Supabase 연동하기 41:38 Supabase MCP 연결 43:28 구글 로그인 구현 50:33 로그인 후 사용자 프로필 UI 구현 52:03 내 갤러리 페이지 구현 56:40 Cloudflare R2 스토리지 연동 (이미지 영구 보관) 01:05:19 이미지 삭제 기능 구현 (DB/스토리지 동기화) 01:06:40 크레딧 시스템 구축 (DB 스키마 설계) 01:15:40 토스 페이먼츠 결제 시스템 연동 01:19:20 관리자(Admin) 페이지 제작 01:26:40 환불 프로세스 테스트 01:28:54 요금제 및 할인율 관리 기능 추가 01:34:05 회원 탈퇴 및 Soft Delete 구현 01:36:50 로그 시스템 구축 및 자동 삭제(Cron) 설정 01:41:54 개인정보 암호화 (보안 강화) 01:48:05 보안 및 성능 점검 (RLS 등) 01:49:22 모바일 레이아웃 및 최종 점검 01:50:07 아웃트로
단계
번호
주요 학습 항목
I. 기초 및 환경 구축 (Antigravity 최적화)
1
안티그래비티 설치 및 설정
2
깃허브 연동을 통한 깃관리, 롤백개념
3
스냅투스토리 서비스 프로세스
4
React와 Next.js 프레임워크 핵심 개념
II. 프론트엔드 및 핵심 기능 구현
5
MCP(Model Context Protocol) 설정 및 연동
6
랜딩 페이지 생성 및 개발 서버 실행
7
랜딩페이지 이미지 반영 및 최적화
8
AI 이미지 생성 기능(Prompt Engineering) 구현
9
발생한 오류(Troubleshooting) 해결 방법론
III. 배포 및 인프라 설정
10
프로젝트 Vercel 배포 및 CI/CD 구축
11
도메인 구매 및 DNS(CNAME/A Record) 설정
12
Vercel 커스텀 도메인 등록 및 SSL 연동
IV. 인증 및 사용자 관리 시스템
13
로그인/회원가입 UI 및 UX 설계
14
Supabase Auth 연동 및 설정
15
구글 소셜 로그인(OAuth) 구현
16
카카오 소셜 로그인(OAuth) 구현
17
사용자별 '내 갤러리' 페이지 구현
V. 스토리지 및 결제 아키텍처
18
Cloudflare R2를 활용한 이미지 보관 시스템 구축
19
크레딧 기반 유료 시스템 로직 설계
20
Supabase DB Schema 설계 및 핵심 구성 요소
21
토스페이먼츠(Toss Payments) API 연동
VI. 어드민 기능 및 데이터 거버넌스
22
관리자 전용 대시보드 및 페이지 구현
23
환불 프로세스 로직 검증 및 예외 처리
24
관리자 페이지 고도화 (통계 및 유저 관리)
25
데이터 안전 삭제를 위한 Soft Delete 구현
VII. 보안 및 시스템 안정화
26
중앙 집중형 로그 시스템 구축
27
사용자 개인정보 암호화 전략
28
이용약관 및 개인정보처리방침 가이드라인
29
Upstash Redis를 활용한 Rate Limit 적용
VIII. 마케팅 및 성능 최적화
30
Google Search Console 및 Analytics 연동
31
검색 엔진 최적화(SEO) 및 메타태그 작업
32
Supabase 보안 정책(RLS) 및 쿼리 성능 향상
33
모바일 반응형 레이아웃 최종 점검
IX. 런칭 및 마무리
34
서비스 런칭 전 최종 체크리스트(QA)
35
마치며: 서비스 운영 및 확장 전략

2-1. 기초 및 환경 구축 (Antigravity 최적화)

1. 안티그래비티(Antigravity) 설치 및 설정

안티그래비티는 AI 기반의 코드 생성 및 편집을 지원하는 차세대 개발 환경으로, 프로젝트의 생산성을 극대화하기 위해 최우선으로 설정
1.
설치 과정
Antigravity 검색 후 로컬 컴퓨터에 설치함.
설치 완료 후 시스템 재시작 또는 에디터 리로드(Reload)를 수행함.

2. 깃허브(GitHub) 연동을 통한 깃관리

왜 해야 하는가?
바이브 코딩의 치명적 문제 중 하나가 잘되다가 갑자기 밑도끝도 없이 망했을 때 걷잡을 수 없음
안티그래비티의 경우, 클로드 모델의 코드성능이 좋긴 하나 한도에 금방 다달라서 모델을 어쩔 수 없이 변경해야 하는 경우가 있는데, 이경우, 갑자기 코드가 뒤엉키는 경우가 있음
"커밋만 꼼꼼히 해두면, 내 컴퓨터가 폭발해도 GitHub에서 다시 '클론(Clone)'이나 '풀(Pull)'을 받아 모든 걸 되살릴 수 있다!"
Plain Text
복사
코드의 안정적인 이력 관리와 협업을 위해 깃허브 저장소와의 연동을 해놓으면 좋음
프로젝트 시작하기 전에 깃허브 저장소 셋팅후 연결부터 해놓을까? 프로젝트 저장소명은 https://github.com/roughkyo/snaptostory 야
Plain Text
복사
[알아두기]
깃관리를 위한 간단한 지식들
깃관리를 위해 알아야할 핵심사항과 내용, 명령어 정리해봐. 특히 중간에 내가 소스코드를특정시점으로 롤백하기 위해 알아야 하는 사항도 함께.
Plain Text
복사

한 눈에 이해하는 GitHub 핵심 개념 (초보자용)

개념
쉬운 비유
설명
왜 중요한가요?
레포지토리 (Repository)
프로젝트 폴더 (가방)
내 소스코드와 모든 기록이 담기는 '저장소'예요. 줄여서 '레포'라고도 불러요.
프로젝트의 집과 같아요. 온라인(GitHub)에 있으면 어디서든 꺼내볼 수 있죠!
커밋 (Commit)
게임 스테이지 저장 (Save)
"지금까지 한 내용을 기록할래!" 하는 동작이에요. 저장할 때마다 간단한 메모를 남겨요.
나중에 문제가 생겼을 때, 내가 저장했던 '그 시점'으로 돌아갈 수 있게 해줘요.
브랜치 (Branch)
평행 세계 (가지)
원본 코드(Main)는 그대로 두고, 새로운 실험(기능 추가)을 해볼 수 있는 복사본이에요.
원본을 망칠까 봐 걱정할 필요 없이 마음껏 새로운 시도를 해볼 수 있어요!
롤백 (Rollback)
타임머신 (되돌리기)
코드가 꼬이거나 망가졌을 때, 이전에 커밋(저장)했던 정상적인 상태로 되돌리는 거예요.
코딩하다 실수해도 괜찮아요! 언제든 과거의 안전한 시점으로 부활할 수 있거든요.
푸시 (Push)
클라우드 업로드
내 컴퓨터에서 작업한 '커밋'들을 온라인 저장소(GitHub)로 전송하는 거예요.
내 컴퓨터가 고장 나도 GitHub에 코드가 안전하게 보관돼요.
풀 (Pull)
최신 상태로 업데이트
온라인 저장소(GitHub)에 있는 최신 코드를 내 컴퓨터로 가져오는 거예요.
친구가 수정했거나 내가 다른 컴에서 올린 최신 내용을 이어받을 수 있어요.
[롤백은 이케요?]
커밋(Commit)**은 내 컴퓨터 안의 '타임캡슐'이고, **푸시(Push)**는 그 캡슐을 안전한 '금고(GitHub)'에 보관하는 것과 같음
현재 코드가 완전히 망가졌을 때 온라인 저장소(Repository)에 있는 코드를 다시 로컬로 가져오는 작업이 가능

원상복구(롤백)의 전체 흐름

만약 오늘 코딩을 하다가 다 망쳤는데, 어제 저장해서 푸시해둔 상태로 로컬 컴퓨터의 소스코드까지 원상복구 하고 싶다면 아래 단계를 거침
1.
커밋 ID 확인: GitHub 사이트나 git log를 통해 돌아가고 싶은 어제의 커밋 ID를 확인
2.
로컬 롤백 (Reset): 내 컴퓨터에서 git reset --hard <커밋ID>를 칩니다.
그러면 신기하게도 내 폴더 안의 파일들이 어제 그 시점의 상태로 순식간에 싹 바뀝니다. (원상복구 완료!)
3.
동기화: 만약 GitHub(온라인) 자체도 그 과거 상태로 되돌리고 싶다면, 롤백된 상태에서 강제로 푸시(git push -f)를 하거나 새로운 롤백 커밋을 만들어 푸

3. 스냅투스토리 서비스 프로세스

단계
주요 작업 (Task)
활용 기술 및 모델
1. 업로드
사진 10장 업로드 및 키워드 입력
Next.js API, S3/R2 Storage
2. 사진 선별
AI가 구도, 선명도 등을 분석해 베스트 1~2장 선정
gemini-3-flash-preview (Vision)
3. 사진 보정
선택된 보정 강도(상/중/하)에 따른 이미지 인핸싱
Cloudinary / Remini API
4. 서사 생성
보정된 사진 분석 + 키워드 조합 (에세이, 기사, SNS)
Claude 3.5 Sonnet /gemini-3-flash-preview
5. PDF 변환
생성된 텍스트와 사진을 레이아웃에 맞춰 PDF화
React-pdf / ReportLab (Python)
6. 배포
최종 결과물 다운로드 링크 제공 및 저장
Cloudflare R2, Supabase DB

4. React와 Next.js 프레임워크 핵심 개념

기본 용어 사전

용어
쉬운 비유
URL
웹 주소
집 주소 (서울시 강남구...)
라우터 (Router)
길 안내자
택배 기사 (주소 보고 찾아감)
렌더링 (Rendering)
화면 그리기
그림 그리기
컴포넌트 (Component)
부품
레고 블록
캐싱 (Caching)
저장해두기
냉장고에 음식 보관
페칭 (Fetching)
데이터 가져오기
마트에서 장보기
클라이언트 (Client)
사용자 컴퓨터
내 스마트폰
서버 (Server)
데이터 보관 컴퓨터
네이버 본사 컴퓨터
SEO
검색 최적화
구글에서 잘 검색되게 만들기
현대적인 웹 개발을 위해 React의 선언적 UI와 Next.js의 서버 사이드 렌더링(SSR) 장점을 결합하여 활용
1.
React 핵심
컴포넌트 기반 설계: 레고 블록으로 집 짓기 레고로 집을 만든다고 생각해보세요. 문짝, 창문, 지붕을 각각 따로 만든 다음, 이것들을 조립해서 완성된 집을 만들죠. React도 똑같습니다!
🏠 전체 웹사이트 ├── 🎯 헤더 (로고 + 메뉴) ├── 📸 사진 업로드 버튼 ├── ⚙️ 보정 강도 선택 └── 📄 결과 화면
Plain Text
복사
왜 이렇게 할까?
한 번 만든 버튼을 여러 페이지에서 재사용 가능
문제가 생기면 해당 부품만 고치면 됨
여러 명이 동시에 다른 부품 작업 가능
2.
Next.js는 회전률 빠른 레스토랑

Next.js 핵심 3가지

번호
핵심 개념
한줄 요약
비유
주요 장점
1
App Router
폴더 구조가 그대로 URL
도서관 책장 시스템
• 설정 코드 불필요• 폴더만 만들면 자동으로 페이지 생성• 직관적이라 협업 쉬움
2
Server Components
서버에서 완성품 보냄
레스토랑 주방에서 완성된 요리 배달
• 초기 로딩 속도 빠름 (0.5초)• SEO 최적화 (구글 검색 잘됨)• 보안 강화 (API 키 노출 안됨)
3
Data Fetching
똑똑한 캐싱으로 효율적
마트 장보기 전략
• 성능 향상 (4배 빠름)• 서버 부하 감소• 비용 절약

2-2.프론트엔드 및 핵심 기능 구현

5. MCP(Model Context Protocol) 설정 및 연동

MCP는 AI 모델(Gemini, Claude 등)이 외부 도구(Cloudinary, DB, File System)와 직접 통신할 수 있도록 돕는 오픈 표준 규격
안티그래비티 에이전트의 지능적 추론과 데이터 컨텍스트 관리를 위해 다음 두 가지 핵심 MCP 서버를 연동
서버 식별자
제공처
주요 역할
실행 방식
context7
Upstash
장기 기억 및 벡터 컨텍스트 관리
npx (@upstash/context7-mcp)
sequential-thinking
MCP Official
단계적 논리 추론 및 문제 해결
npx (server-sequential-thinking)
{ "mcpServers": { "context7": { "command": "npx", "args": [ "-y", "@upstash/context7-mcp", "--api-key", "YOUR_UPSTASH_API_KEY" // API키 입력 ] }, "sequential-thinking": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-sequential-thinking" ] } } }
Plain Text
복사

6. 랜딩 페이지 생성 및 개발 서버 실행

Role: 너는 Next.js 16 (App Router), TypeScript, Tailwind CSS v4에 정통한 시니어 풀스택 엔지니어이자 UI/UX 디자이너야. 아래 기획안을 바탕으로 **'스냅투스토리(SnapToStory)'**의 랜딩 페이지와 핵심 인터페이스를 구현해줘. 1. 기술 스택 및 공통 디자인 시스템 -Framework: Next.js 16 (App Router), TypeScript -Styling: Tailwind CSS v4 -Icons: Lucide-react -Theme: 전체적으로 밝은 흰색 배경(bg-white-50), 글라스 모피즘을 강하게 적용 -Primary Color: 퍼플 (text-#601EF9), 그라디에이션 적용 2. 컴포넌트별 상세 요구사항 섹션별 세부구현 가이드라인 -Header,"* 왼쪽: '스냅투스토리' 텍스트 로고* 가운데: AI 스토리 생성, 내 갤러리, 요금제, 사용내역 메뉴* 오른쪽: [시작하기] 버튼 (에메랄드색)" -Hero,"* 제목: ""스냅투스토리"" (우측 상단에 30도 기울어진 에메랄드색 ""AI"" 배지 포함)* 부제: ""10장의 사진 중 최고의 순간을 선별하여 이야기를 입히다""" -AI Interface,"* 흰색 카드 레이아웃 (bg-white, shadow-2xl) 적용* 입력창: 키워드 및 스토리 배경 입력이 가능한 와이드 텍스트 필드. 우측 하단에 [사진 10장 업로드] 아이콘 배치* 옵션: 보정 강도(하/중/상) 드롭다운, 문서 스타일(에세이/뉴스/SNS) 선택 버튼* 버튼: 하단에 너비 100%의 검정색 [스토리 및 보정본 생성하기] 버튼" -Sample Gallery,"* 카테고리: 에세이, 뉴스기사, SNS 업로드용 탭 구성* 원본 섹션: ""AI 선별 원본"" 배지가 붙은 큰 이미지 박스* 결과 섹션: 아래에 3x3 그리드로 ""AI 보정 및 스토리 결과물"" 배치* 기능: 샘플 이미지 클릭 시 해당 스타일의 프롬프트가 입력창에 자동 반영되는 로직 포함" -CTA & Footer,"* ""지금 바로 시작해보세요"" 문구와 [바로 시작하기 →] 에메랄드 버튼* 푸터: 좌측에 스냅투스토리 회사 정보, 우측에 이용약관 및 개인정보처리방침 링크* Copyright: © 2026 스냅투스토리. All rights reserved." 3. 개발 지침 (Implementation Logic) -src/components 내부에 각 섹션(Header, Hero, Generator, Gallery, Footer)을 모듈화하여 작성할 것. -Tailwind v4의 신기능을 활용해 버튼 호버 및 카드 등장 애니메이션을 부드럽게 처리할 것. -state 관리를 통해 사용자가 보정 강도를 선택하거나 이미지를 업로드하는 인터랙션을 시각적으로 피드백할 것. -모바일 환경에서도 3x3 그리드가 1열 또는 2열로 자연스럽게 변하는 반응형 디자인을 적용할 것. 자, 이제 스냅투스토리의 전체 소스 코드를 폴더 구조에 맞춰서 작성해줘.
Plain Text
복사
코드 완성 후 터미널을 열고 npm run dev 명령어로 로컬컴퓨터에서 개발서버 테스트 진행
초기 페이지
오류를 한번에 수정하지 말고, 구현하면서 오류를 수정해도 되니 정상적으로 렌딩페이지가 열리는지 확인

7. 랜딩페이지 이미지 반영 및 최적화

Next.js의 public 폴더는 이미지, 폰트 등 정적 파일을 보관하는 곳으로, 프로젝트 규모가 커질수록 체계적인 디렉터리 구조 설계가 필수적 Next.js Public 폴더 이미지 관리 가이드
public 폴더 아래에 바로 이미지 파일들을 던져두지 말고, 용도별로 하위 폴더를 만들어 관리하는 것이 '시니어 개발자'의 방식
public/ ├── images/ # 일반 이미지 (배경, 인물 등) │ ├── hero/ # 히어로 섹션 전용 이미지 │ └── common/ # 공통 사용 이미지 ├── logos/ # 서비스 로고 (svg 권장) ├── icons/ # 커스텀 아이콘 └── samples/ # 갤러리 등에 들어갈 샘플용 자산
Plain Text
복사
결론: 웹페이지에 사용될 이미지는 public폴더안에서 체계적으로 관리하자!
PNG파일과 Webp파일
비교 항목
WebP (Web Picture)
PNG (Portable Network Graphics)
개발사
Google
ISO/IEC 표준 (오픈 소스)
압축 방식
손실(Lossy) 및 무손실(Lossless) 모두 지원
무손실(Lossless) 압축만 지원
용량
매우 작음 (PNG 대비 약 26%~34% 감소)
상대적으로 큼 (고화질 유지 목적)
투명도(Alpha)
지원함
지원함
애니메이션
지원함 (GIF 대체 가능)
지원하지 않음 (APNG 제외)
호환성
최신 브라우저 대부분 지원 (구형 제외)
모든 브라우저 및 OS 완벽 지원
WebP: 웹 최적화의 제왕
높은 압축률: 동일한 화질에서 PNG보다 훨씬 작은 용량을 가짐으로써 초기 로딩 속도(LCP)를 획기적으로 개선함.
다양한 압축 모드: 이미지의 성격에 따라 손실 압축을 선택하여 용량을 극단적으로 줄일 수 있음.
활용: 랜딩 페이지의 Hero 이미지, 샘플 갤러리 이미지 등 대용량 자산에 적합
파일 변환을 위한 사이트
하루 10개까지 무료 변환 가능
랜딩페이지의 첫화면을 실제 public폴더안의 이미지로 교체하기
public/samples 폴더에 webp파일 4개 넣었어. 메인페이지에 반영해
Plain Text
복사

8. 이미지를 기반으로 AI활용 에세이 생성 기능(Prompt Engineering) 구현

총3단계 구현
단계별
사용 모델
AI가 구도, 선명도 등을 분석해 베스트 1~2장 선정
gemini-3-flash-preview (Vision)
선택된 보정 강도(상/중/하)에 따른 이미지 인핸싱
Cloudinary API
보정된 사진 분석 후 키워드 조합 (에세이, 기사, SNS)하여 텍스트 작성
gemini-3-flash-preview
API키를 발급받고 연동시킬 때, 해당 서비스의 API연동 공식 문서를 레퍼런스로 제공하자.
현재 우리의 서비스는 크게 3단계 로직이야 1.AI가 구도, 선명도 등을 분석해 베스트 1~2장 선정: gemini-3-flash-preview (Vision) 2. 선택된 보정 강도(상/중/하)에 따른 이미지 인핸싱: Cloudinary API 3. 보정된 사진 분석 후 키워드 조합 (에세이, 기사, SNS)하여 텍스트 작성: gemini-3-flash-preview #그럼 API키가 총 2개 필요하겠지? - gemini-3-flash-preview API 키: ~~~~~ - cloudinary API키: 9~~~ # API키 설정에 대한 참조주소는 다음과 같아 -https://ai.google.dev/gemini-api/docs/models?hl=ko - https://console.cloudinary.com/app/c-bb4c67500f8e9d27b884121e161920/image/getting-started 3단계 기능이 제대로 구현될 수 있도록 MCP잘 활용해. 사용자가 이미지 5장~10장 한번에 업도르 하는 기능부터 단계별로 구현해봐
Plain Text
복사
1. 현재 드래드&드랍 기능이 구현이 안되었어. 사용자가 사진을 브라우저로 드래그 했을 때 이를 인식하여 업로드 기능이 활성화 될 수 있도록 수정해. 2. AI가 업로드된 여러장의 사진중, 왜 그사진을 뽑았는지 그 이유를 간단히 사용자에게 안내해주는 기능 추가해 3. 사진 보정 기능이 작동하고 있는것 같지 않아. - 사진 보정후에도 원본 사진과 크기는 동일해야해. 너 마음대로 사진 사이즈를 변경하지는 마 - 사진 보정기능을 위한 기능은 AI Image Enhancer야, 다시 확인해 - 사용예시: import { enhance } from "@cloudinary/url-gen/actions/effect"; new CloudinaryImage("me/underexposed-1.jpg").effect(enhance());
Plain Text
복사
AI가 사진을 선별하는 알고리즘을 보다 구체화하기
당신은 사람들의 소중한 순간을 기록하는 따뜻한 시선을 가진 전문 사진작가이자 큐레이터입니다. 제공된 여러 장의 사진들 중 다음 3가지 핵심 기준을 우선순위로 고려하여 가장 가치 있는 사진 1장을 골라주세요: 1. 특별한 관심이 가거나 독특한 순간을 담은 사진 2. 혼자보다는 많은 사람이 함께 어우러진 북적북적한 사진 3. 웃음꽃이 피었거나, 재미있는 표정, 행복함이 가득 느껴지는 생생한 사진
Plain Text
복사
저장기능 구현하기
좋아. 이미지 저장기능을 구현하자. '이미지 저장하기'를 누르면 로컬 컴퓨터에 저장될 수 있도록 코드 반영해
Plain Text
복사

9. 발생한 오류(Troubleshooting) 해결 방법론

2-3.배포 및 인프라 설정

2-4.인증 및 사용자 관리 시스템

2-5.스토리지 및 결제 아키텍처

2-6.어드민 기능 및 데이터 거버넌스

2-7.보안 및 시스템 안정화

2-8.마케팅 및 성능 최적화

2-9.런칭 및 마무리

2-10.기타

3. 구현 과정

보다 구체적인 개발목표
사진을 10장정도 올리면 [1단계] AI가 자동으로 잘 나온 사진을 1~2장 선별해서, 보정함- 보정의 강도를 상/중/하로 선택할 수 있음 [2단계] 보정된 사진과 사용자가 입력한 키워드를 바탕으로 다음 3가지 형태의 문서를 작성-에세이, 뉴스기사, SNS업로드용 [3단계] 사용자에게 pdf형태로 다운로드 제공
Plain Text
복사

3-1. 전체 흐름도

사용자 ↓ [웹앱 인터페이스] ↓ (사진 10장 + 키워드 입력) ↓ [백엔드 서버] ↓ ┌─────────────────────────────────┐ │ 1. 사진 분석 AI (MaaS) │ │ - Google Vision API │ │ - 점수 매겨서 베스트 1-2장 │ └─────────────┬───────────────────┘ ↓ ┌─────────────────────────────────┐ │ 2. 사진 보정 (MaaS) │ │ - Cloudinary / Remini API │ │ - 상/중/하 강도 선택 │ └─────────────┬───────────────────┘ ↓ ┌─────────────────────────────────┐ │ 3. AI 글쓰기 (MaaS) │ │ - Claude/gemini API │ │ - 프롬프트: "사진 + 키워드 │ │ 바탕으로 에세이/기사/SNS" │ └─────────────┬───────────────────┘ ↓ ┌─────────────────────────────────┐ │ 4. PDF 생성 │ │ - jsPDF 라이브러리 │ │ - 사진 + 글 레이아웃 │ └─────────────┬───────────────────┘ ↓ [다운로드]
Plain Text
복사

3-2.UI/UX설계

화면 구성 (5단계) ┌─────────────────────────────────┐ │ Step 1: 사진 업로드 │ │ [+] 사진 10장까지 드래그 │ └─────────────────────────────────┘ ↓ ┌─────────────────────────────────┐ │ Step 2: 키워드 입력 │ │ [____] 여행, 추억, 제주도 │ └─────────────────────────────────┘ ↓ ┌─────────────────────────────────┐ │ Step 3: 보정 강도 선택 │ │ ( ) 상 (●) 중 ( ) 하 │ └─────────────────────────────────┘ ↓ ┌─────────────────────────────────┐ │ Step 4: AI 처리 중... │ │ ▓▓▓▓▓▓▓▓░░░░ 75% │ └─────────────────────────────────┘ ↓ ┌─────────────────────────────────┐ │ Step 5: 결과 미리보기 │ │ [사진] [에세이] [기사] [SNS] │ │ [PDF 다운로드 🔽] │ └─────────────────────────────────┘
Plain Text
복사