Fujimod
Try your camera firmware in the browser and build Fujimod SD boot files.
Tra cứu kết quả Vietlott, Mega Millions, EuroMillions và EuroJackpot mới nhất, quy đổi sang VND.
Translation pending
LifestyleTypeScript · CSSGitHub @buiducphong4OnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Web app tra cứu kết quả xổ số bằng Next.js App Router, TypeScript, Tailwind CSS, shadcn-style UI primitives và lucide-react.
npm install
npm run dev
Mở http://localhost:3000.
npm run test
npm run build
https://vietlott.vn/vi/trung-thuong/ket-qua-trung-thuong/535https://vietlott.vn/vi/trung-thuong/ket-qua-trung-thuong/645https://vietlott.vn/vi/trung-thuong/ket-qua-trung-thuong/655https://github.com/vietvudanh/vietlott-data
data/power535.jsonldata/power645.jsonldata/power655.jsonl5xaw-6ayf.https://euromillions.api.pedromealha.dev/v1/draws, with fallback to /draws.https://www.lottoland.com/api/drawings/euroJackpot/YYYYMMDD.next) cho EuroMillions và EuroJackpot, trang Mega Millions của Texas Lottery cho Mega Millions. Vietlott chưa có nguồn công khai nên không hiển thị mục này.https://open.er-api.com/v6/latest/USD (chính), fallback https://api.frankfurter.dev/v1/latest?base=USD (ECB, không có VND), cuối cùng là bảng tỷ giá ngoại tuyến trong src/lib/lottery/fx.ts.All external data access is routed through Next.js backend code in src/lib/lottery/adapters and exposed via:
GET /api/lottery/games
GET /api/lottery/latest?gameId=...¤cy=VND|USD|EUR
GET /api/lottery/history?gameId=...&from=YYYY-MM-DD&to=YYYY-MM-DD&page=1&pageSize=30¤cy=VND|USD|EUR
GET /api/lottery/fx
POST /api/lottery/refresh — xoá cache của phần "kỳ mới nhất" để nút Làm mới thực sự gọi lại nguồn (có cooldown 20 giây, không đụng tới cache lịch sử).
Each lottery provider has an adapter returning the normalized LotteryDraw schema in src/lib/lottery/types.ts.
Adapter nào có nguồn công bố jackpot kỳ chưa quay thì cài thêm getNext(), trả về NextDraw.
Đây là hai con số khác nhau và trước đây rất dễ nhầm:
Ví dụ EuroMillions ngày 23-10-2026: kỳ vừa quay cộng dồn €70,2M, còn mức công bố cho kỳ 27-10 là €79M.
Giải thưởng được lưu dưới dạng Money = { amount: number; currency: "VND" | "USD" | "EUR" } (src/lib/lottery/money.ts),
không phải chuỗi đã format sẵn. Adapter dùng parseMoneyText để đọc số tiền từ nguồn, còn việc hiển thị và quy đổi
diễn ra ở tầng UI.
currency tùy chọn trên API sẽ quy đổi mọi giá trị tiền sang một đơn vị duy nhất trước khi trả về.Gốc giữ nguyên tiền tệ của từng giải và hiển thị thêm dòng quy đổi sang VND cho các giải nước ngoài.src/app/manifest.ts phục vụ /manifest.webmanifest, kèm icon PNG 192/512 và một bản maskable
trong public/icons/. Không có manifest thì Brave/Chrome/Edge không có "app identity" để cài, nên
mục Install không hiện ra. Icon được sinh từ src/app/icon.svg bằng sharp.
Cửa sổ sau khi cài chiếm trọn màn hình nên status bar, tai thỏ hoặc title bar có thể đè lên nội dung.
.app-shell và .app-header trong globals.css cộng thêm env(safe-area-inset-*) để tránh việc đó
(header dùng position: sticky nên top tính theo viewport chứ không theo padding của shell).
Trên desktop, display_override: ["window-controls-overlay", ...] giao luôn dải title bar cho trang:
.app-titlebar là một dải trống có app-region: drag (không có nó thì không kéo được cửa sổ), và
nội dung được đẩy xuống dưới env(titlebar-area-height). Trình duyệt không hỗ trợ sẽ tự lùi về
standalone.
Nếu đã cài app từ trước khi có manifest, phải gỡ ra cài lại — bản cũ chỉ là shortcut mở trong tab.
Nhà điều hành công bố kỳ quay theo ngày ở nước họ. EuroMillions quay 21:00 giờ Paris ngày 03/11 thì ở Việt Nam đã là 03:00 ngày 04/11, nên mục "Jackpot kỳ tới" dễ trông như bị lùi một ngày.
NextDraw.drawAt lưu đúng thời điểm đó dưới dạng UTC instant (src/lib/lottery/drawTime.ts,
có xử lý giờ mùa hè), còn giao diện hiển thị theo Asia/Ho_Chi_Minh. Ngày của kỳ đã quay vẫn
giữ nguyên theo nguồn, để đối chiếu với trang chính thức không bị lệch.
Bốn bộ giao diện khác nhau về màu, phông chữ, bo góc, đổ bóng và hình dạng quả cầu số. Chọn bằng biểu tượng bảng màu trên header; mỗi bộ đều có biến sáng và tối.
| Bộ | Phong cách | Phông hiển thị | Bo góc |
|---|---|---|---|
aurora | Kính mờ, chuyển sắc, teal (mặc định) | Inter | mềm |
ban-tin | Giấy in, phẳng hoàn toàn, mực đỏ | Playfair Display | gần vuông |
neon | Nền tối, magenta/cyan, phát sáng | JetBrains Mono (in hoa) | rất tròn |
toi-gian | Đơn sắc, không đổ bóng | Inter | vuông |
Mỗi bộ định nghĩa cùng một tập token trong src/styles/globals.css, chọn qua [data-skin] trên <html>.
Component không được hard-code bảng màu, bán kính bo góc hay phông chữ — Tailwind borderRadius và
fontFamily cũng trỏ vào các token này. Danh sách bộ giao diện nằm ở src/lib/theme.ts.
Một script nhỏ chạy trước khi trang vẽ lần đầu (themeBootstrapScript) để đọc lựa chọn đã lưu, tránh
nháy giao diện mặc định mỗi lần tải lại.
Lưu trong localStorage và áp dụng ở client (src/components/lottery/PreferencesProvider.tsx):
lote:currency — đơn vị tiền tệ hiển thị (native | VND | USD | EUR).lote:gameOrder — thứ tự các loại xổ số, chỉnh bằng kéo thả hoặc mũi tên ở mục "Sắp xếp & ẩn xổ số".
Thứ tự này áp dụng cho cả lưới tổng quan lẫn thanh tab chọn game.lote:hiddenGames — các loại xổ số bị ẩn khỏi lưới tổng quan và thanh tab. Luôn phải còn ít nhất một
loại hiển thị. Loại đang bị ẩn vẫn mở được bằng URL trực tiếp (/games/<id>) và khi đó vẫn xuất hiện
trên thanh tab để biết mình đang xem gì.lote:skin — bộ giao diện đang dùng.lote:theme — chế độ sáng/tối; chưa đặt thì theo prefers-color-scheme.Server-side in-memory cache is implemented in src/lib/lottery/cache.ts.
TTL.latest (60 giây) — memo hoá một lượt render "kỳ mới nhất".TTL.upstream (10 phút) — mức cũ tối đa mà một payload từ nguồn được phép có khi phục vụ "kỳ mới nhất". Nhiều nguồn trả 429 nếu poll dày hơn.TTL.history (24 giờ) — dữ liệu lịch sử.Một payload có thể vừa phục vụ lịch sử vừa phục vụ kỳ mới nhất. Khi đó lượt đọc "kỳ mới nhất" truyền thêm
maxAgeMs vào getCached để không bị trả về bản đã nằm trong cache cả ngày — nếu thiếu bước này, một kỳ quay
mới có thể không xuất hiện suốt 24 giờ dù nguồn đã có dữ liệu.
The cache is per server process. In serverless deployments it may be reset between cold starts.
Nguồn Vietlott thay đổi cấu trúc, cần cập nhật parser.Warnings.src/lib/lottery/tax.ts, không phải con số quyết toán chính thức.Thông tin chỉ dùng để tham khảo, vui lòng đối chiếu với nguồn chính thức trước khi nhận thưởng. Không khuyến khích cờ bạc.