dumbtv
dumbtv takes the ads, screen tracking and update nags out of your Fire TV over ADB. No root, none of your apps touched, every step can be undone. Free and open source.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
ScamSafe is a mobile-first React frontend for a Malaysia-focused scam-awareness product. This README is intentionally based on the current codebase, not earlier proposal notes, so it only documents behavior, copy, routes, and data sources that are actually present in the frontend.
ScamSafe can still be described as a project aligned with UN Goal 16, especially its themes of ethical technology, safety, and accessible digital participation. That higher-level framing is valid to keep in the README as project context.檢視完整 README ↗ScamSafe is a mobile-first React frontend for a Malaysia-focused scam-awareness product. This README is intentionally based on the current codebase, not earlier proposal notes, so it only documents behavior, copy, routes, and data sources that are actually present in the frontend.
ScamSafe can still be described as a project aligned with UN Goal 16, especially its themes of ethical technology, safety, and accessible digital participation. That higher-level framing is valid to keep in the README as project context.
At the same time, this README treats the frontend codebase as the source of truth for implementation details. In other words:
ScamSafe is designed as an AI-assisted scam-awareness product for older adults in Malaysia. The broader project direction emphasizes accessible protection, low cognitive load, and practical support for users who may be more vulnerable to online fraud because of limited digital confidence, urgency-based scam tactics, and trust in official-looking messages.
The broader project goal is to help users:
One project persona used during design is:
Name: Feng TanAge: 65Location: Cheras, Kuala Lumpur, MalaysiaBackground: retired secondary school teacher with stable financial resourcesThis persona is background design context, not live application state.
These sources can remain in the README as project research context. They are not all directly consumed by the frontend at runtime.
Scam CheckerAI Scam ChatTest YourselfScam NewsGet HelpAbout Us, Data Sources, and Risk GuideThe homepage and footer copy lives in src/lib/i18n/provider.tsx. The current English product description used by the frontend is:
ScamSafe is a simple website that helps older adults in Malaysia check suspicious messages and stay safer online.
The current homepage stats shown in the UI are:
SMS/calls — Telecommunication scamsRM255.37m — Elderly fraud losses27.9% — Elderly online fraud cases44% — Losses involving age 50+If these values change in the UI, update both src/lib/i18n/provider.tsx and this README.
| Route | Page file | Purpose |
|---|---|---|
#/ | src/pages/home/HomePage.tsx | Landing page and feature launcher |
#/scam-detection | src/pages/scam-detection/ScamDetectionPage.tsx | Scam Checker text-analysis flow |
#/scam-simulation | src/pages/scam-simulation/ScamSimulationPage.tsx | AI Scam Chat practice flow |
#/study-center | src/pages/study-center/StudyCenterPage.tsx | Quiz and progress flow |
#/knowledge-hub | src/pages/knowledge-hub/KnowledgeHubPage.tsx | Scam news list and detail flow |
#/post-scam-support | src/pages/post-scam-support/PostScamSupportPage.tsx | Post-scam recovery guidance |
#/notification-reveal | src/pages/notification-reveal/NotificationRevealPage.tsx | Notification-result learning page |
#/data-sources | src/pages/footer-info/FooterInfoPage.tsx | Footer data-sources page |
#/about-us | src/pages/footer-info/FooterInfoPage.tsx | Footer about page |
#/risk-guide | src/pages/footer-info/FooterInfoPage.tsx | Footer risk-guide page |
Route constants and hash parsing live in src/app/routes.ts.
src/pages/scam-detection/ScamDetectionPage.tsxsrc/services/scamDetection.ts500 word limitPOST /api/detectsrc/pages/scam-simulation/ScamSimulationPage.tsxsrc/services/scamSimulation.tsPOST /api/simulate/startPOST /api/simulate/messagePOST /api/simulate/quitlocalStorageSpeechRecognition or webkitSpeechRecognition is availablesrc/pages/study-center/StudyCenterPage.tsxsrc/services/studyCenterQuiz.ts6 questions by defaultGET /api/quiz/:slug/questionslocalStoragesrc/services/studyCenterBackendAdapter.ts for backend explanation-field alignmentsrc/pages/knowledge-hub/KnowledgeHubPage.tsxsrc/services/scamNews.tsGET /api/scam/newsGET /api/scam/news/:idsrc/pages/post-scam-support/PostScamSupportPage.tsxsrc/hooks/useNotificationTraining.tssrc/pages/notification-reveal/NotificationRevealPage.tsxsrc/services/notificationTraining.tssrc/lib/notification-training/storage.tssessionStoragesrc/pages/footer-info/FooterInfoPage.tsxsrc/lib/i18n/provider.tsxAbout ScamSafeData sourcesRisk level guideThe frontend currently depends on these backend endpoints:
POST /api/detectPOST /api/simulate/startPOST /api/simulate/messagePOST /api/simulate/quitGET /api/quiz/:slug/questionsGET /api/scam/newsGET /api/scam/news/:idGET /api/notifications/randomGET /api/notifications/:idsrc/lib/env.ts reads VITE_API_BASE_URL. If it is empty, local development can rely on same-origin /api/... requests through the Vite dev proxy in vite.config.ts.
localStorage
scamsafe_languagescamsafe_simulation_performance_v1scamsafe_study_center_sessions_v1scamsafe_study_center_points_v1sessionStorage
scamsafe_notification_training_last_scenario_v1There is currently no account-based sync for these progress records. Clearing site data or switching browser/device resets them.
Notification API for notification training when supportedSpeechRecognition / webkitSpeechRecognition for optional AI Scam Chat voice inputmatchMedia via src/hooks/useMediaQuery.ts for responsive behaviorThe footer Data Sources page currently references these services and sources in the UI:
GROQNeonNewsAPICall Transcripts Scam Determinations datasetSMS Spam Collection DatasetSMS Spam DatasetNew Straits TimesMalay MailThe StarNFCC / NSRCThese entries are assembled in src/pages/footer-info/FooterInfoPage.tsx and translated in src/lib/i18n/provider.tsx.
public/
apple-touch-icon.png
favicon.png
icon-192.png
icon-512.png
site.webmanifest
src/
app/
AppProviders.tsx React provider extension point
AppShell.tsx Shared shell, header, hero, footer, nav
routes.ts Hash routes and navigation constants
assets/ Images used by the UI
components/ui/ Shared buttons, cards, pills, icons
hooks/
useMediaQuery.ts
useNotificationTraining.ts
lib/
env.ts Environment access
i18n/ Language provider, strings, and hooks
notification-training/ Notification training types and storage
pages/
footer-info/
home/
knowledge-hub/
notification-reveal/
post-scam-support/
scam-detection/
scam-simulation/
study-center/
services/
notificationTraining.ts
scamDetection.ts
scamNews.ts
scamSimulation.ts
studyCenterBackendAdapter.ts
studyCenterQuiz.ts
styles/ Global and page-level CSS
types/ Shared TypeScript models
App.tsx App composition root
main.tsx Browser entry point
eslint.config.js ESLint config
index.html Vite HTML entry
package.json Scripts and dependencies
vercel.json Static-host rewrite config
vite.config.ts Alias and dev proxy config
npm install
npm run dev
Open http://127.0.0.1:5173/
npm run build
npm run preview
npm run lint
npm run format
npm run typecheck
/api requests to http://localhost:8000VITE_API_BASE_URLindex.htmlnxmhis README was rechecked against the current frontend code on 2026-05-19. If UI copy, routes, stats, storage keys, or page ownership change, update this file to match the codebase in the same PR.