WallpaperMachine
The wallpapers you love. A new home on your Mac.
밀떡·쌀떡, 소스, 매운맛 단계, 순대까지 — 떡볶이 맛집을 지도에서 자세하게 찾아보세요
Translation pending
LifestyleTypeScript · CSSGitHub @IRONDESKOnlineOwner 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
오늘의 떡볶이 - 오떠끼
Translation pending
Loading the full README. The saved excerpt is shown below.
떡볶이 맛집을 지도에서 찾고, 등록하고, 리뷰를 남기는 떡볶이 특화 맛집 서비스 배포: https://oh-topokki.vercel.app (iOS는 Capacitor 래핑, 심사 준비 중) 일반 맛집 앱은 "떡볶이집"이라는 것까지만 알려줍니다. 오떠끼는 떡볶이를 좋아하는 사람이 실제로 궁금해하는 것 — 밀떡/쌀떡, 소스 종류, 매운맛 단계와 조절 가능 여부, 사리·사이드 구성, 순대 내장 종류 — 를 구조화된 데이터로 쌓는 것을 목표로 합니다. Feature-Sliced Design을 참고한 레이어 구조입니다. 1. 데이터 유실 사고에서 시작한 백엔드 재구축 초기 버전은 Supabase 무료 플랜이었는데, 미사용으로 일시정지된 뒤 복원 기한(90일)이 지나 서비스 데이터를 전부 잃었습니다. 백업 파일을 받아봤지만 public 스키마 자체가 누락돼 복구 불가였습니다.Read the full README ↗
떡볶이 맛집을 지도에서 찾고, 등록하고, 리뷰를 남기는 떡볶이 특화 맛집 서비스
배포: https://tteokbokki.cc (iOS는 Capacitor 래핑, 심사 준비 중)
일반 맛집 앱은 "떡볶이집"이라는 것까지만 알려줍니다. 오떠끼는 떡볶이를 좋아하는 사람이 실제로 궁금해하는 것 — 밀떡/쌀떡, 소스 종류, 매운맛 단계와 조절 가능 여부, 사리·사이드 구성, 순대 내장 종류 — 를 구조화된 데이터로 쌓는 것을 목표로 합니다.
| 영역 | 선택 | 이유 |
|---|---|---|
| 프레임워크 | Next.js (App Router) + React 19 | 프론트와 API를 하나의 모놀리스로 운영 |
| API | Route Handler (app/api/**) REST | Server Actions 대신 REST 유지 — 모바일 클라이언트가 같은 API를 재사용 |
| DB / ORM | Neon (Postgres) + Prisma | 풀링/다이렉트 URL 분리, 스키마 자산 재활용 |
| 인증 | Better Auth | TS 네이티브, Prisma 어댑터로 세션·계정 테이블을 같은 DB에서 관리 |
| 상태 관리 | TanStack Query + Jotai | 서버 상태와 클라이언트 상태(지도 위치 등) 분리 |
| UI | Tailwind CSS 4, Base UI, overlay-kit, sonner | |
| 지도 | Naver Maps SDK + 네이버 지역검색 API | |
| 모바일 | Capacitor (iOS) | 웹뷰 원격 URL 모드로 웹 배포 = 앱 업데이트 |
Feature-Sliced Design을 참고한 레이어 구조입니다.
app/ # 라우팅 + API Route Handler
widgets/ # 지도, 플로팅 메뉴 등 조합 단위
features/ # auth · restaurant · review · favorite · search
shared/ # api, hooks, store, ui, types 등 공용 계층
lib/ # Better Auth 서버/클라이언트 인스턴스
prisma/ # 스키마 (User + 도메인 모델 통합)
초기 버전은 Supabase 무료 플랜이었는데, 미사용으로 일시정지된 뒤 복원 기한(90일)이 지나 서비스 데이터를 전부 잃었습니다. 백업 파일을 받아봤지만 public 스키마 자체가 누락돼 복구 불가였습니다.
pg_dump 자동 백업(.github/workflows/backup.yml)을 가장 먼저 세팅했습니다.schema.prisma로 테이블은 재생성하고, 데이터 0건인 시점을 기회 삼아 미뤄뒀던 스키마 정리(enum 도입, 필드명 일관화, FK 인덱스 추가)를 일괄 진행했습니다.name을 DB 컬럼 nickname에 매핑하고, 앱 전역에서는 AuthContext가 nickname으로 정규화해 도메인 용어를 통일했습니다.데이터 성격에 따라 삭제 정책을 다르게 가져갔습니다.
authorId를 nullable로 두고 onDelete: SetNull로 보존onDelete: SetNull로 내용·별점은 보존하고 "탈퇴한 사용자"로 표시 (별점 집계도 그대로 유지)onDelete: Cascade로 함께 삭제topokkiType, sundaeType)은 enum으로 강제하고, 다중 선택(소스·사리 등)은 확장이 쉬운 String[]로 유지했습니다.unrank 플래그로 구분해 서비스 초기에도 랭킹이 비어 보이지 않게 했습니다.es-hangul로 조사(을/를 등)를 자동 처리해 동적 문구가 자연스럽게 읽히도록 했습니다.build 단계에서 prisma generate 포함pg_dump → artifact 90일 보관scripts/import-restaurants.mjs로 JSON 일괄 등록 (재실행 시 skipDuplicates로 멱등)pnpm install
# .env: DATABASE_URL, DIRECT_URL, BETTER_AUTH_SECRET, BETTER_AUTH_URL,
# NAVER_CLIENT_ID, NAVER_CLIENT_SECRET
pnpm db:push
pnpm dev