엔트리(playentry.org) 프로필 URL을 붙여넣으면 그 유저의 작품 통계를 보여주고, 검색된 유저들을 모아 부문별 랭킹까지 제공하는 Next.js 15 웹앱입니다. 원작 gnlow/Ent2ml을 참고해 Next.js로 다시 짰고, 여기에 통계 시각화와 Firestore 기반 랭킹을 더했습니다.

엔트리 공식 서비스가 아니며, 공개된 프로필 정보만 조회하는 비영리 · 개인 열람용입니다.

유저 통계

차트는 Recharts로 그립니다 — 파이(분류 분포) · 막대(연도별) · 상위 작품 등.

랭킹 (8개 부문)

총 조회수 / 좋아요 / 댓글 / 사본 / 사용 블록 / 총 활동 기간 / 총 인기 작품 수 / 스태프 선정 작품 수.

검색된 유저가 자동으로 랭킹에 쌓이는 구조여서, 따로 수집기를 돌리지 않아도 사용자가 곧 데이터 소스가 됩니다.

[사용자가 /u/{id} 검색]

  통계 집계 → 페이지 응답 먼저 전송

  after(() => recordRanking(stats))   ← 응답 후 백그라운드 Firestore 쓰기
                                        (같은 유저 1시간 이내 재기록 skip)

주요 경로

내부 구조

무료 티어 안에서 운영

Firestore Spark(무료) 한도 안에 들어오도록 설계했습니다. after() 백그라운드 쓰기, 1시간 dedupe, 60초 ISR로 read/write를 줄였습니다.

지표무료 한도예상 사용(검색 100/일 + 랭킹뷰 50/일)
Reads/일50,000~1,500 (3%)
Writes/일20,000~100 (0.5%)
Storage1 GiB5만 유저 ≈ 12 MB (1%)

트래픽이 30배 늘어도 무료 한도 안에서 버틸 만한 여유입니다.

제한 사항 (의도된 트레이드오프)

프라이버시

기술 스택

Next.js 15 (App Router · SSR · ISR · after()) · React 19 · TypeScript · Tailwind CSS · Recharts · Firebase Admin SDK (Firestore)