playtranslate
Android 실시간 화면 번역 앱, 언어 학습자와 캐주얼 게이머용
다음 구절을 복습하고 외운 내용을 지키며 신뢰할 수 있는 꾸란 가이드와 두아, 개인 묵상을 하루 일과에 담는다
Return to your next ayah, protect what you memorized, and keep trusted Qur'an guidance, duas, and private reflection in one daily routine.
교육TypeScript · CSSGitHub @akmalmuhammed온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Hifzer is a Qur'an-centered web app with one signed-in home and multiple connected lanes: Qur'an reading, hifz review, memorization support, dua, private journaling, practice drills, fluency work, milestones, reminders, and support tools.
The product is no longer a narrow hifz tracker. The current app is better described as a Qur'an companion with hifz at the center and reading continuity around it.
Live user-facing surfaces:
Dashboard
Post-auth home with quick actions, streaks, review health, recent practice, and Qur'an continuity.Qur'an
Hub, reader, progress, bookmarks, glossary, official enrichment, official audio/reciters, and grounded AI explanation.Hifz
Session engine, SRS review, quality gates, weak-transition repair, and progress.Practice
Rescue sessions, mushabihat radar, seam trainer, and meaning-linked support.Fluency
Listening-led loops, hesitation cleanup, transition smoothing, and retest flow.Dua
Guided dua modules, user-managed custom duas, and deck ordering.Journal
Private notes with ayah/dua links, account sync, and safe degraded fallback.Milestones, Notifications, Settings, Billing, Support
The rest of the operating surface around the core app.Public routes:
//compare/changelog/motivation/pay/quran-preview/welcome/legal/legal/privacy/legal/terms/legal/refund-policy/legal/sources/unsubscribeAuth routes:
/login/signup/forgot-passwordOnboarding routes:
/onboarding/welcome/onboarding/start-point/onboarding/assessment/onboarding/fluency-check/onboarding/plan-preview/onboarding/permissions/onboarding/completeMain app routes:
/dashboard/hifz/hifz/progress/session -> redirect alias to /hifz/quran/quran/read/quran/bookmarks/quran/glossary/quran/progress/quran/surah/[id]/quran/juz/[id]/dua/dua/[moduleId]/dua/[moduleId]/deck/journal/practice/fluency/fluency/lesson/[id]/fluency/retest/milestones/notifications/ramadan/roadmap/settings/settings/account/settings/display/settings/language/settings/plan/settings/quran-foundation/settings/reciter/settings/reminders/support/billing/upgrade/billing/manage/billing/success/billing/thank-youLegacy namespace retained for compatibility:
/legacy/*/app and /app/* redirect into /legacy/*/sign-in redirects to /legacy/sign-inImportant:
/today page./dashboard.Top-level code map:
src/app
App Router route groups, layouts, and API routes.src/hifzer
Product/domain services.src/components
App shell, landing, Qur'an UI, settings, billing, providers, and primitives.workers/ai-gateway
Cloudflare Worker for grounded Qur'an AI.prisma/schema.prisma
Persistence model.Key domain modules:
src/hifzer/quransrc/hifzer/srssrc/hifzer/recitationsrc/hifzer/bookmarkssrc/hifzer/journalsrc/hifzer/quran-foundationsrc/hifzer/dashboardsrc/hifzer/streaksrc/hifzer/aisrc/hifzer/ramadansrc/hifzer/profilesrc/hifzer/audioClerk is the primary auth layer. Quran.com is an optional linked account, not a replacement auth system.
Recommended redirect contract:
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/loginNEXT_PUBLIC_CLERK_SIGN_UP_URL=/signupNEXT_PUBLIC_CLERK_SIGN_IN_FORCE_REDIRECT_URL=/dashboardNEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL=/dashboardNEXT_PUBLIC_CLERK_SIGN_UP_FORCE_REDIRECT_URL=/dashboardNEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL=/dashboardRunbook:
docs/clerk-reset-runbook.mdHifzer uses Prisma v7 + Postgres/Neon.
Core persisted areas include:
Useful commands:
pnpm db:generate
pnpm db:migrate
pnpm db:deploy
pnpm db:studio
Current live integration:
/dashboard, /quran, and /settings/quran-foundationCurrent limitation:
activity_day, streak.read, goal.read, reading_session, collection, and notePreferred env names:
QF_OAUTH_CLIENT_IDQF_OAUTH_CLIENT_SECRETQF_USER_TOKEN_ENCRYPTION_SECRETQF_CONTENT_CLIENT_IDQF_CONTENT_CLIENT_SECRETQF_OAUTH_REDIRECT_URIQF_BOOKMARK_MUSHAF_IDQF_CONTENT_TRANSLATION_RESOURCE_IDQF_CONTENT_TAFSIR_RESOURCE_IDBackward-compatible fallback names still work:
QF_CLIENT_IDQF_CLIENT_SECRETQF_TOKEN_ENCRYPTION_SECRETFirst status check:
curl https://your-app-domain.com/api/quran-foundation/status
curl https://your-app-domain.com/api/quran-foundation/overview
The current AI explanation path is:
POST /api/quran/ai-explainworkers/ai-gatewayhttps://mcp.quran.ai)Key app env vars:
HIFZER_AI_GATEWAY_URLHIFZER_AI_GATEWAY_TOKENHIFZER_AI_GATEWAY_TIMEOUT_MS optionalKey worker env vars:
AI_GATEWAY_SHARED_SECRETAI_PROVIDER=gemini defaultGEMINI_API_KEYGEMINI_MODELQURAN_MCP_URLOptional worker vars for Groq:
GROQ_API_KEYGROQ_MODELGROQ_FORMAT_MODELRunbooks:
workers/ai-gateway/README.mddocs/ai-gateway-cloudflare-setup.mdResend handles application delivery, while the configured Zoho mailbox remains the visible sender and reply address.
Key env vars:
EMAIL_PROVIDER=resendRESEND_API_KEYEMAIL_FROMEMAIL_REPLY_TOEMAIL_UNSUBSCRIBE_SIGNING_SECRETCRON_SECRETNEXT_PUBLIC_APP_URLInvitation campaign workflow:
# Resolve Clerk names/emails and review the eligible audience. Sends nothing.
pnpm email:invitation:preview -- --limit=53
# Send only after reviewing the preview output.
pnpm email:invitation:send -- --limit=53 --confirm=latest-product-update-2026-07
The campaign resolves each recipient's first name from Clerk, falls back to a
non-personalized greeting when no name exists, and excludes unverified,
suppressed, or unsubscribed accounts. CAMPAIGN_APP_URL can temporarily
override NEXT_PUBLIC_APP_URL when testing the protected route locally.
Paddle powers upgrade/support flows.
Key env vars:
NEXT_PUBLIC_PADDLE_CLIENT_TOKENQur'an audio is local-first with Quran.com fallback:
NEXT_PUBLIC_HIFZER_AUDIO_BASE_URLNEXT_PUBLIC_HIFZER_DEFAULT_RECITER_IDRunbook:
docs/r2-first-time-setup.mdCurrent observability stack:
Operational runbook:
docs/operational-troubleshooting.mdMain checked-in data files:
src/hifzer/quran/data/ayahs.full.jsonsrc/hifzer/quran/data/quran-data.jssrc/hifzer/quran/data/surah-index.tssrc/hifzer/quran/data/translations/en.sahih.by-ayah-id.jsonUseful generation commands:
node scripts/generate-surah-index.mjs
pnpm quran:translation:sahih
More details:
src/hifzer/quran/data/SOURCES.mdInstall and run:
pnpm install
pnpm dev
Useful commands:
pnpm lint
pnpm test
pnpm test:e2e
pnpm test:e2e:routing
pnpm audit:clicks
pnpm audit:mobile:overflow
pnpm ai:worker:dev
pnpm ai:worker:deploy:dry
Progress simulation harnesses:
pnpm test:progress:week
pnpm test:progress:14d
pnpm test:progress:failures
Check:
/login/signupdocs/clerk-reset-runbook.mdExpected:
/login/dashboardCheck:
curl -i https://your-app-domain.com/api/dashboard/overview
Likely causes:
401503500Check:
curl https://your-app-domain.com/api/quran-foundation/status
Look for:
userApiReadycontentApiReadystatedetailCommon causes:
Smoke tests:
curl "https://your-app-domain.com/api/quran/content-panel?ayahId=1"
curl "https://your-app-domain.com/api/quran/audio-source?ayahId=1&reciterId=alafasy"
Common causes:
Smoke tests:
curl -X POST https://your-app-domain.com/api/quran/ai-explain \
-H 'content-type: application/json' \
--data '{"ayahId":1}'
If the app route is configured, then verify the Worker directly:
curl https://your-worker.your-subdomain.workers.dev/health \
-H "authorization: Bearer YOUR_SHARED_SECRET"
Common causes:
HIFZER_AI_GATEWAY_URL missingHIFZER_AI_GATEWAY_TOKEN mismatchGEMINI_API_KEYCheck:
curl -I https://your-audio-domain.com/alafasy/000001.mp3
Common causes:
NEXT_PUBLIC_HIFZER_AUDIO_BASE_URL unsetAGENTS.mddocs/README.mddocs/HIFZER_PROJECT_HANDOFF.mddocs/operational-troubleshooting.mdImportant:
docs/audits/**, docs/mobile-ui-audit-report.md, and docs/performance-mobile-audit.md are historical snapshots. They are useful for background, but they are not current product truth.