다크 디시 랩: 저주받은 레시피 생성기
Source: Dev.to
내가 만든 것
Dark Dish Lab은 저주받은 음식이나 음료 레시피를 생성하는 작고, 즐겁게도 쓸모 없는 웹 앱입니다.
당신은 다음을 선택합니다:
- 싫어하는 재료
- 맛의 혼돈 (짠 / 달콤 / 매운 / 신)
그럼 짧은 “레시피”와 공포 점수, 몇 단계, 그리고 경고 문구를 생성합니다. 실제 문제를 해결하진 않지만, 후회를 만들어냅니다.
프론트엔드
- 프레임워크: React (Vite)
- UI: 재료 + 맛 선택 인터페이스
- 동작: 백엔드 API를 호출하고 생성된 결과를 렌더링
백엔드
- 프레임워크: Spring Boot (Java 17)
API 엔드포인트
POST /api/generate
Content-Type: application/json
{
"ingredients": ["…"],
"flavors": ["salty", "sweet"]
}
- 생성된 레시피 텍스트를 포함한 JSON 페이로드를 반환합니다.
선택적 AI: Google Gemini API
- AI가 활성화되고 키가 제공되면 서비스는 Gemini에 매우 짧은 레시피 형식을 요청합니다.
- AI가 비활성화되었거나 실패하면 비‑AI 생성기로 대체됩니다.
AI 통합
Gemini (Gemini API를 통해) 가 Dark Dish Lab의 “저주받은 레시피” 출력을 담당합니다. 일반 챗봇으로 AI를 사용하는 것이 아니라 포맷팅 엔진으로 작동합니다:
- 입력: 선택된 재료 + 맛 축 (짠/달콤/매운/신)
- 출력: 짧고 구조화된 레시피 (이름, 3단계, 1경고)
안정성을 위한 가드레일
- 서버‑사이드 API 키만 사용 (
backend/.env.local에 저장, 커밋되지 않음) - 엄격한 프롬프트 제약 (이모지 금지, 짧은 길이, 고정 포맷)
- Gemini 사용 불가 시 대체 생성기
- 예상치 못한 긴 응답을 방지하기 위한 출력 트리밍
참고 사항
- 이미지 자산 대신 유니코드 이모지만 사용합니다.
- API 키는 로컬 환경 파일에 보관되며 절대 커밋되지 않습니다.
- Gemini API가 저주받은 레시피 뒤에 있는 텍스트 생성기입니다.
커뮤니티 인기 요소: 가능한 가장 저주받은 조합을 만들어 보세요. 재료 + 맛 선택과 받은 공포 점수를 댓글로 남기세요. 친구들이 읽기를 거부한다면 보너스 포인트!