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.
AI-powered scam detection and prevention website tailored for elderly people in Malaysia.
SecurityTypeScript · CSSGitHub @xinyaoxiao-301OnlineOwner 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.
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.Read the full 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.