Frolic: 오픈 소스 AI로 구현한 작고 재미있는 야외 사이드 퀘스트 앱
요약
Frolic은 사용자가 스마트폰을 내려놓고 주변 세상을 관찰하도록 유도하는 야외 사이드 퀘스트 앱입니다. 기분, 시간, 난이도를 기반으로 흥미로운 돌 찾기나 구름 발견 같은 활동을 생성하며, 그룹 캠프 기능과 진행 상황 추적 기능을 제공합니다.
핵심 포인트
- AI를 활용하여 실생활에서 할 수 있는 재미있는 야외 퀘스트를 제안합니다.
- 사용자 참여 유도를 위해 XP, 배지, 연속 기록 등의 게이미피케이션 요소를 도입했습니다.
- Node.js와 Express 기반에 오픈 가중치 모델(Qwen2.5-7B-Instruct)을 활용하여 AI 기능을 구현했습니다.
이 글은 Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass에 제출하는 내용입니다.
제가 만든 것 (What I Built)
Frolic은 사람들이 스크롤링하는 시간을 줄이고 주변 세상을 더 많이 알아차리도록 돕는 재미있는 야외 사이드 퀘스트 앱입니다.
사용자는 자신의 기분, 사용 가능한 시간, 선호하는 혼란(chaos) 수준을 선택합니다. Frolic은 그에 따라 다음과 같은 작고 안전한 야외 활동을 생성합니다:
- 의심스러울 정도로 흥미로운 돌 찾기
- 이야기가 있는 구름 발견하기
- 작은 생태계 관찰하기
- 예상치 못한 색상 팔레트 찾기
- 근처 나무에 터무니없이 격식 있는 제목 붙여주기
목표는 사람들이 AI 대화 안에 머물게 하는 것이 아닙니다. 목표는 그들에게 휴대폰을 내려놓고 밖에 나갈 하나의 이유를 주는 것입니다.
Frolic은 또한 다음 기능을 지원합니다:
- 개별 퀘스트 진행 상황 추적
- 경험치(XP), 연속 기록(streaks) 및 달성 배지
- 사진 및 비디오 증거 제출 기능
- 개인 야외 캠핑 기록
- 초대 링크와 공유 가능한 그룹 코드를 갖춘 그룹 캠프
- MongoDB 기반의 퀘스트 및 그룹 데이터 저장소
- AI 서비스가 이용 불가능할 때를 위한 대체 퀘스트 덱
- 로그인/회원가입 필요 없음 (코드/링크 기반 초대)
- 더 나은 경험을 위해 스마트폰 사용 권장
데모 (Demo)
코드 (Code)
제작 과정 (How I Built It)
Frolic은 Node.js 및 Express 애플리케이션이며 브라우저 기반 프론트엔드를 사용합니다.
AI 생성 흐름은 오픈 가중치 모델인 다음을 사용하는 Hugging Face Inference Router를 이용합니다:
Qwen/Qwen2.5-7B-Instruct
서버는 사용자가 선택한 기분, 시간 제한, 난이도를 모델에 전송하고 다음과 같은 구조화된 JSON 응답을 요청합니다:
{
1. 캠프 생성하기
2. 공유 야외 퀘스트 선택하기
3. 만남 장소 추가하기
4. 초대 링크 생성하기
5. 짧은 캠프 코드 공유하기
6. 참여 승인 및 대기 중인 참가자 추적 MongoDB 컬렉션에는 다음이 포함됩니다:
`groupCamps groupCampInvites individualCamps questSubmissions`
**_Render 배포_**
Frolic은 다음을 포함하는 render.yaml 구성을 갖추고 있습니다:
Build command: npm ci
Start command: npm start
Health check: /health
Hugging Face 토큰과 MongoDB 연결 문자열은 리포지토리에 커밋되는 대신 배포 비밀(deployment secrets)로 구성됩니다.
애플리케이션은 모델 응답을 표시하기 전에 유효성 검사하고 제한합니다.
나머지 스택은 다음과 같습니다:
- 애플리케이션 서버용 Node.js 및 Express
- 오픈 가중치(open-weight) AI 생성을 위한 Hugging Face Inference Router
- 캠프, 초대, 프로필 및 퀘스트 제출을 위한 MongoDB Atlas
- 업로드된 퀘스트 증거를 위한 MongoDB GridFS
- 배포를 위한 Render
- 프런트엔드를 위한 바닐라 HTML, CSS 및 JavaScript
- XP나 배지 같은 가벼운 개인 진행 상황을 위한 로컬 스토리지
## 오픈 혁신(Open Innovation)이 중요한 이유?
Frolic은 AI가 사람들이 화면에서 벗어나도록 돕는 데 사용되어야 하며, 그 자체가 머무르는 또 다른 이유가 되어서는 안 된다는 아이디어를 기반으로 구축되었습니다.
오픈 가중치 모델을 사용하면 동작을 더 검사하고 대체할 수 있게 합니다. 저는 모델을 변경하거나, 시스템 프롬프트(system prompt)를 조정하거나, 안전 제약 조건(safety constraints)을 추가하거나, 애플리케이션을 재설계하지 않고도 다른 호환 가능한 추론 제공업체(inference provider)를 통해 동일한 경험을 실행할 수 있습니다.
오픈 혁신이 여기서 중요한 이유는 다음과 같습니다:
- 프로젝트를 한 제공업체에 고정하는 대신 모델을 교체할 수 있습니다.
- 프롬프트와 안전 규칙은 리포지토리에서 볼 수 있습니다.
- 추론(inference)이 불가능할 때 애플리케이션이 로컬 폴백(local fallback)을 사용할 수 있습니다.
- 경험을 비공개 또는 자체 호스팅 추론으로 발전시킬 수 있습니다.
## 수상 부문
저는 다음 파트너 부문에 참가합니다:
- MongoDB Atlas의 최적 사용 사례 (Best Use of MongoDB Atlas)
- Render의 최적 사용 사례 (Best Use of Render)
- GitHub Copilot의 최적 사용 사례 (Best Use of GitHub Copilot)
# 콘텐츠 업데이트 중입니다...
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기