Nano Bana, React, Hono를 사용한 스타일 인식 AI 이미지 생성기 구축
Source: Dev.to

개요
새로운 Google Gemini 모델의 한계를 시험해보고자 하는 순수한 호기심에서, 나는 Amaris라는 풀스택 SaaS 애플리케이션을 만들었습니다. 이 애플리케이션은 간단한 채팅 인터페이스를 통해 특정 예술적 스타일의 이미지를 생성할 수 있게 해줍니다. 복잡한 워크플로우 없이, 레퍼런스 이미지를 업로드하고 프롬프트를 입력하면 AI가 나머지 작업을 수행합니다!
- 스택: “Better‑T‑Stack” (Bun, Hono, React 19)
- AI: Vercel AI Gateway를 통한 Google Gemini 2.5 Flash Image 모델
현대적인 AI 앱을 구축하고 싶거나, 모노레포에 대해 배우고 싶거나, Hono가 AI 스트림을 어떻게 처리하는지 보고 싶다면, 이 프로젝트는 훌륭한 샌드박스가 될 것입니다.
데모 영상:
https://x.com/devguy_007/status/1997485877325394061?s=20
레포지토리:
🔗
✨ 기능
- 💬 채팅 기반 인터페이스 – 대화형 흐름으로 이미지를 생성합니다.
- 🎨 스타일 전송 – 레퍼런스 이미지(스케치, 그림 등)를 업로드하면 AI가 해당 스타일을 모방합니다.
- ⚡ 초고속 백엔드 – Hono로 구동되며 Bun에서 실행됩니다.
- 🧠 스마트 비전 – Gemini를 사용해 생성 전에 스타일 레퍼런스를 “볼” 수 있습니다.
- 🔐 전체 인증 시스템 – Better‑Auth를 통한 안전한 로그인.
- 💳 크레딧 시스템 – 사용자 크레딧 및 사용 제한을 관리하는 내장 로직.
- 🌑 모던 UI – 다크 모드, Tailwind CSS 4, shadcn/ui 컴포넌트.
🧰 전체 기술 스택
코어 및 런타임
| Tech | Description |
|---|---|
| Bun | 초고속 JavaScript 런타임 및 패키지 매니저 |
| TypeScript | 전체 모노레포에 걸친 타입 안전성 |
프론트엔드 (apps/web)
| Tech | Description |
|---|---|
| React 19 | 라이브러리 최신 버전 |
| React Router 7 | 선언형 파일 기반 라우팅 |
| Tailwind CSS 4 | 유틸리티 우선 CSS 엔진 |
| shadcn/ui | 접근성 높은 UI 컴포넌트 |
| TanStack Query | 비동기 상태 관리 및 캐싱 |
| TanStack Form | 복잡한 폼 처리 |
| Lucide React | 일관된 아이콘 세트 |
| Sonner | 토스트 알림 |
백엔드 (apps/server)
| Tech | Description |
|---|---|
| Hono | 경량의 표준 기반 웹 프레임워크 |
| Zod | API 요청을 위한 스키마 검증 |
| Hono/Zod‑Validator | 수신 데이터 검증 미들웨어 |
데이터 및 인증
| Tech | Description |
|---|---|
| PostgreSQL | 관계형 데이터베이스 |
| Drizzle ORM | 타입 안전 SQL을 위한 TypeScript 우선 ORM |
| Better‑Auth | 포괄적인 인증 (이메일/비밀번호, 세션) |
AI 및 서비스
| Tech | Description |
|---|---|
| Google Gemini | 2.5 Flash 이미지(생성) 및 2.5 Flash(비전) |
| Vercel AI SDK | 캐시, 속도 제한, 분석을 위한 AI 게이트웨이 |
| Cloudinary | 생성된 이미지 저장 및 최적화 |
| Polar.sh | 구독 및 결제 |
🚀 로컬에서 시작하기
1️⃣ 저장소 복제
git clone https://github.com/oyeolamilekan/amaris-app
cd amaris
2️⃣ 의존성 설치
우리는 Bun을 사용해 속도를 높입니다:
bun install
3️⃣ 환경 변수 설정
다음 .env 파일들을 생성하고, 자리표시자 값을 자신의 값으로 교체하세요.
apps/server/.env
DATABASE_URL=postgresql://user:pass@localhost:5432/amaris
GOOGLE_GENERATIVE_AI_API_KEY=your_gemini_key
CORS_ORIGIN=http://localhost:5173
CLOUDINARY_CLOUD_NAME=your_cloud_name
POLAR_ACCESS_TOKEN=your_polar_token
4️⃣ 데이터베이스 스키마 푸시
bun run db:push
5️⃣ 개발 서버 시작
bun run dev
브라우저에서 열어 바로 생성 작업을 시작하세요!
🧪 작동 방식
- 스타일 업로드 – 이미지를 채팅에 끌어다 놓습니다(예: 픽셀‑아트 캐릭터).
- 비전 분석 – 백엔드가 Gemini의 비전 기능을 사용해 이미지의 “분위기”를 파악합니다.
- 프롬프트 – “미래 도시”와 같은 문장을 입력합니다.
- 생성 – 앱이 프롬프트와 스타일 레퍼런스를 결합해 Vercel AI Gateway를 통해 Google Gemini에 전달합니다.
- 결과 – 몇 초 후 선택한 스타일로 렌더링된 미래 도시를 받게 됩니다.
💭 Why I Built This
I wanted to move beyond simple “text‑to‑image” scripts and build a production‑ready architecture. The goals were:
- Explore how Hono pairs with React 19 in a monorepo.
- Integrate payment flows (Polar.sh) alongside complex AI logic.
- Leverage the speed and low cost of Gemini 2.5 for style‑transfer experiments.
🧑💻 사용해보고, 포크하고, 부숴보세요!
이 프로젝트는 오픈‑소스이며 해킹을 위해 만들어졌습니다. 자유롭게:
- 레포지토리를 클론하세요.
- 데이터베이스나 AI 모델을 교체하세요.
- 만화 생성기, 밈 생성기 등으로 바꿔보세요.
GitHub:
Amaris App
🙌 연결해요
시도해보거나 스택에 대해 질문이 있으면 댓글을 남기거나 저를 태그해주세요!
행복한 해킹! 👨🏽💻✨
