MyGo 云音乐
用 Go 与 MyGo 写成的第三方网易云音乐桌面客户端。原生界面,没有 WebView;边下边播,无损与 Hi-Res,逐字歌词与「律动」,刘海播放器。
Translation pending
일기를 쓰면 감정을 분석해 볼 만한 영화를 추천하는 서비스
Translation pending
MediaJavaScript · PythonGitHub @jgjoeOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
일기를 쓰면 감정을 분석해 지금 볼 만한 영화를 골라주는 서비스 — 상시 서버 비용 없이 운영합니다 -4285F4?logo=googlecloud&logoColor=white) 오늘 쓴 일기를 Gemini가 읽어 감정을 파악하고, 그 감정에 맞는 영화를 TMDB에서 찾아 추천합니다. 추천으로 끝내지 않고 일기와 추천 기록이 남아 지난 감정을 다시 볼 수 있습니다. 기획·프론트·백엔드·배포를 혼자 만들었고, 프론트는 GitHub Pages, 백엔드는 Cloud Run에 올려 상시 서버 비용 없이 운영합니다. 외부 API를 두 곳 호출한다 → async를 기본 지원하는 프레임워크를 골랐다 감정 분석(Gemini)과 영화 조회(TMDB)가 둘 다 네트워크 대기입니다. 한 요청이 두 번의 외부 대기를 순차로 물기 때문에, 대기 구간에서 다른 요청을 처리할 수 있는 구조가 필요했습니다. 그래서 async를 기본 지원하는 FastAPI를 골랐고, Gemini 감정 분석 호출은 generate_content_async로 비동기 처리합니다.Read the full README ↗
일기를 쓰면 감정을 분석해 지금 볼 만한 영화를 골라주는 서비스 — 상시 서버 비용 없이 운영합니다
오늘 쓴 일기를 Gemini가 읽어 감정을 파악하고, 그 감정에 맞는 영화를 TMDB에서 찾아 추천합니다. 추천으로 끝내지 않고 일기와 추천 기록이 남아 지난 감정을 다시 볼 수 있습니다.
기획·프론트·백엔드·배포를 혼자 만들었고, 프론트는 GitHub Pages, 백엔드는 Cloud Run에 올려 상시 서버 비용 없이 운영합니다.
| 기능 | 내용 |
|---|---|
| 감정 분석 | 일기에서 핵심 감정을 읽고 그에 맞는 메시지를 함께 제시 |
| 맞춤 영화 추천 | 감정에 맞는 작품을 TMDB에서 선별 |
| OTT 필터 | 구독 중인 OTT(넷플릭스·왓챠 등)에 있는 작품만 보기 |
| 다시 추천 | 마음에 들지 않으면 새 추천 세트를 다시 요청 |
| 내 일기장 | 작성한 일기와 추천 기록을 로컬에 보관해 다시 열람 |
| 상세 정보 | 줄거리·평점·캐스팅과 지금 볼 수 있는 OTT 링크 |
감정 분석(Gemini)과 영화 조회(TMDB)가 둘 다 네트워크 대기입니다. FastAPI를 사용하고 Gemini 호출은 비동기로 처리했습니다. TMDB 조회는 동기 requests로 구현돼 해당 호출 중 이벤트 루프를 차단하며, 전체 외부 호출의 비동기화나 동시 처리 성능은 검증하지 않았습니다.
개인 서비스에 24시간 인스턴스를 띄우면 트래픽이 없어도 비용이 계속 나갑니다. 요청이 있을 때만 실행되는 Cloud Run에 백엔드를 올려 상시 비용을 없앴습니다. 대신 첫 요청은 인스턴스를 올리는 시간이 붙습니다 — 개인 프로젝트에서 비용과 지연 중 비용을 택한 결과입니다.
Gemini·TMDB 키는 서버 환경변수로만 보관하고 브라우저 번들에 넣지 않았습니다. 프론트는 백엔드를 통해서만 외부 API에 닿습니다.
LLM 모델 이름은 계속 바뀌고 특정 모델이 계정·리전에서 안 열릴 수 있습니다. 사용 가능한 모델을 우선순위대로 자동 선택하도록 해서 모델 하나가 막혀도 서비스가 멈추지 않게 했습니다.
TMDB 응답에는 포스터·줄거리·OTT 정보가 빠진 항목이 섞여 있습니다. 누락 필드와 응답 형식 차이를 걸러 추천 결과가 깨진 카드로 나오지 않도록 처리했습니다.
| 영역 | 기술 |
|---|---|
| 프론트 | React 19, Vite, Tailwind CSS, Framer Motion, Lucide React |
| 백엔드 | Python, FastAPI (async) |
| AI | Google Gemini (사용 가능 모델 자동 선택) |
| 데이터 | TMDB API |
| 배포 | 백엔드 Google Cloud Run · 프론트 GitHub Pages |
| 자동화 | GitHub Actions (PR·main 푸시마다 프론트 lint·build와 백엔드 pytest, 프론트 자동 배포) |
.env에 API 키가 필요합니다.
# 백엔드
cd backend && pip install -r requirements.txt && uvicorn main:app --reload
# 프론트
cd frontend && npm install && npm run dev
# 검증 (API 키 없이 실행)
cd backend && pytest -q
백엔드 테스트 6건은 Gemini·TMDB 호출을 대체해 추천·검색·상세 조회의 정상 응답과 빈 일기·빈 검색어·없는 영화의 처리를 확인합니다.
PR과 main 푸시마다 GitHub Actions가 이 테스트와 프론트 lint·build를 실행합니다.
필요한 키: GEMINI_API_KEY(Google AI Studio), TMDB_API_KEY(TMDB)
Jigwan Joe — Backend · Frontend