banana-slides 🍌
코드를 흥얼거리듯 PPT를 흥얼거리세요.
Google Gemini (nano banana pro) 기반의 네이티브 AI 기반 PPT 생성 애플리케이션으로, 진정한 "Vibe PPT" 경험을 목표로 합니다. 누구나 아름답고 전문적인 프레젠테이션을 만드는 데 드는 장벽을 낮춥니다.
GitHub: https://github.com/Anionex/banana-slides
라이선스: MIT | 별: 480+ | 포크: 72+
🧩 프로젝트 배경
기존 AI PPT 생성기는 속도와 품질의 균형을 맞추는 데 어려움을 겪습니다. 일반적인 문제는 다음과 같습니다.
- 사전 설정된 템플릿만 사용 가능 — 유연한 스타일 제어 불가
- 여러 라운드에 걸친 반복적인 편집의 자유도 낮음
- 모두 똑같이 보이는 동질적인 결과물
- 저품질의 일반적인 자료
- 디자인 감각이 부족한 텍스트-이미지 레이아웃
**Google Gemini (nano banana pro)**의 등장은 상황을 바꾸었습니다. 이미지 생성 기능은 요청된 모든 텍스트 콘텐츠를 정확하게 렌더링하면서 참조 이미지 스타일을 충실히 따를 수 있어, 네이티브 "Vibe PPT" 애플리케이션의 핵심 엔진으로 이상적입니다.
✨ 주요 기능
1. 세 가지 생성 경로
- 아이디어부터: 한 문장 또는 대략적인 개념 입력 → 전체 개요 + 슬라이드 설명 + 최종 슬라이드 자동 생성
- 개요부터: 기존 개요 붙여넣기 → AI가 페이지별 상세 설명으로 확장
- 설명부터: 페이지별 설명 직접 제공 → 슬라이드 이미지 즉시 생성
2. 자연어 편집
- 개별 슬라이드 또는 슬라이드 내 선택 영역에 대한 수정을 음성으로 지시
- 개요 카드 드래그 앤 드롭 재정렬
- 개요 및 페이지 설명에 대한 Vibe 스타일 구두 편집
3. 스마트 자료 및 템플릿 지원
- 스타일/콘텐츠 참조로 모든 참조 이미지, 스크린샷 또는 이전 PPT 슬라이드 업로드
- 문서 업로드 (PDF, DOCX, MD, TXT) — 백엔드에서 MinerU + 멀티모달 LLM을 사용하여 텍스트 및 이미지 자동 파싱
- Markdown 텍스트에 포함된 이미지 링크 자동 추출
4. 고품질 슬라이드 생성
- Gemini 이미지 생성 기반: 고화질, 스타일 일관적인 슬라이드 디자인
- 다중 페이지 생성을 위한 병렬 처리
5. 내보내기 옵션
- PPTX: 표준 PowerPoint 형식
- PDF: 빠른 공유 및 발표용
- 기본 16:9 종횡비, 모든 주요 디스플레이에서 작동
🛠️ 기술 스택
프론트엔드
| 기술 | 목적 |
|---|---|
| React 18 + TypeScript | UI 프레임워크 |
| Vite 5 | 빌드 도구 |
| Zustand | 상태 관리 |
| React Router v6 | 라우팅 |
| Tailwind CSS | 스타일링 |
| @dnd-kit | 드래그 앤 드롭 |
| Axios | HTTP 클라이언트 |
백엔드
| 기술 | 목적 |
|---|---|
| Python 3.10+ / Flask 3.0 | API 서버 |
| Google Gemini API | AI 이미지 및 텍스트 생성 |
| SQLite + Flask-SQLAlchemy | 데이터 지속성 |
| python-pptx | PPTX 내보내기 |
| Pillow | 이미지 처리 |
| ThreadPoolExecutor | 동시 슬라이드 생성 |
| uv | Python 패키지 관리 |
🏗️ 아키텍처 개요
banana-slides/
├── frontend/ # React + TypeScript SPA
│ ├── pages/ # 홈, 개요 편집기, 상세 편집기, 슬라이드 미리보기, 기록
│ ├── components/ # 공유 UI 컴포넌트, 개요/미리보기 위젯
│ ├── store/ # Zustand 상태 관리
│ └── api/ # Axios 클라이언트 + 엔드포인트 정의
│
├── backend/ # Flask REST API
│ ├── models/ # 프로젝트, 페이지, 작업, 자료, 템플릿, 참조 파일
│ ├── services/ # AI 서비스 (Gemini), 파일 파서, 내보내기, 작업 관리자
│ ├── controllers/ # 모든 리소스에 대한 라우트 핸들러
│ └── utils/ # 응답 도우미, 검증기, 경로 유틸리티
│
├── docker-compose.yml # 원클릭 배포
└── pyproject.toml # Python 프로젝트 설정 (uv 관리)
🚀 빠른 시작
Docker Compose (권장)
git clone https://github.com/Anionex/banana-slides
cd banana-slides
cp .env.example .env
# .env 파일을 편집하고 GOOGLE_API_KEY를 추가하세요.
docker compose up -d
- 프론트엔드: http://localhost:3000
- 백엔드 API: http://localhost:5000
소스에서 빌드
백엔드:
uv sync
cp .env.example .env # GOOGLE_API_KEY 설정
cd backend && uv run python app.py
프론트엔드:
cd frontend
npm install
npm run dev
🎯 사용 사례
- 비디자이너: 디자인 경험 없이 제로 장벽으로 아름다운 PPT 제작
- PPT 전문가: AI 생성 디자인에서 빠른 레이아웃 영감 얻기
- 교육자: 교육 콘텐츠를 그림이 있는 수업 슬라이드로 변환
- 학생: 프레젠테이션 과제를 빠르게 완료하고 형식보다는 내용에 집중
- 비즈니스 전문가: 제안서 및 제품 발표의 빠른 시각화
📄 라이선스
MIT 라이선스 — 개인 및 상업적 용도로 무료 사용 가능.