Kadō: Ứng dụng theo dõi thói quen mã nguồn mở cho iOS với điểm số thông minh, không tài khoản, không theo dõi
Kadō là ứng dụng theo dõi thói quen mã nguồn mở (MIT) dành riêng cho iPhone và iPad, mang đến cách tiếp cận hoàn toàn mới: điểm số thói quen theo dạng trung bình động thay vì chuỗi ngày liên tục dễ gãy. Ứng dụng ưu tiên quyền riêng tư tuyệt đối, hoạt động ngoại tuyến, không cần tài khoản hay đăng ký, và hỗ trợ đồng bộ iCloud tùy chọn qua cơ sở dữ liệu CloudKit riêng tư của người dùng.

Kadō: Trình theo dõi thói quen mã nguồn mở cho iOS, thay thế "streak" bằng điểm số thông minh
Kadō là một ứng dụng theo dõi thói quen mã nguồn mở mới dành cho iPhone và iPad, được giới thiệu trên Hacker News với triết lý thiết kế khác biệt: không dùng chuỗi ngày liên tục (streak) — thứ dễ khiến người dùng bỏ cuộc chỉ sau một ngày bỏ lỡ — mà thay bằng điểm số thói quen phi nhị phân dựa trên trung bình động hàm mũ. Ứng dụng cam kết mã nguồn mở (MIT), miễn phí trọn đời, không quảng cáo, không tài khoản, không theo dõi người dùng.
Ra mắt với triết lý "quyền riêng tư là trên hết", Kadō lưu trữ toàn bộ dữ liệu cục bộ bằng SwiftData, đồng bộ iCloud chỉ khi người dùng chủ động bật, và hỗ trợ xuất dữ liệu sang JSON hoặc CSV mà không mất mát. Với giao diện thuần SwiftUI và không phụ thuộc bất kỳ thư viện bên thứ ba nào, đây là một dự án đáng chú ý cho cộng đồng yêu thích sự tối giản và minh bạch.
Điểm số thay vì chuỗi ngày: Cách tiếp cận nhân văn hơn cho thói quen
Kadō wordmark
Điểm khác biệt cốt lõi của Kadō so với các ứng dụng phổ biến như Streaks (iOS) hay Habitica nằm ở thuật toán chấm điểm. Thay vì theo dõi một chuỗi ngày hoàn thành liên tục — thứ thường sụp đổ hoàn toàn chỉ sau một ngày bỏ lỡ — Kadō sử dụng trung bình động hàm mũ (exponential moving average) để tính điểm số cho từng thói quen.
Ý tưởng này được lấy cảm hứng trực tiếp từ ứng dụng mã nguồn mở Loop Habit Tracker trên Android. Người dùng sẽ thấy một xu hướng (trend) dài hạn thay vì một "chuỗi ngày mong manh". Theo tài liệu sản phẩm của Kadō, khoảng trống thị trường rất rõ ràng:
Loop là ứng dụng mã nguồn mở tham chiếu nhưng chỉ có trên Android; Streaks là ứng dụng iOS tham chiếu nhưng đóng mã nguồn và dùng streak nhị phân; Teymia — ứng dụng iOS mã nguồn mở hiện đại nhất — lại theo mô hình freemium. Kadō đưa thuật toán của Loop lên iOS thuần bản địa: MIT, miễn phí, không tài khoản, không đăng ký.
Quyền riêng tư là kiến trúc, không chỉ là khẩu hiệu
Kadō tuyên bố mạnh mẽ: không thu thập bất cứ điều gì. Không phân tích, không đo từ xa (telemetry), không bộ thu sự cố (crash reporter). Toàn bộ dữ liệu nằm trong bộ nhớ cục bộ qua SwiftData. Nếu người dùng muốn đồng bộ giữa nhiều thiết bị, tùy chọn iCloud sẽ chỉ hoạt động qua cơ sở dữ liệu CloudKit riêng tư của chính người dùng — không đi qua bất kỳ máy chủ nào của nhà phát triển.
Cách tiếp cận "offline-first" này còn được nhấn mạnh ở phần cấu trúc kho lưu trữ: các widget trên màn hình chính không hề mở trực tiếp cơ sở dữ liệu SwiftData mà đọc từ một bản chụp JSON (snapshot) thông qua App Group — một chi tiết kiến trúc được ghi chú kỹ trong tài liệu CLAUDE.md của dự án.
Tính năng phong phú dành cho người dùng iOS thuần bản địa
Kadō không chỉ dừng lại ở việc theo dõi "có hoặc không". Ứng dụng hỗ trợ nhiều loại thói quen khác nhau: nhị phân (hoàn thành / không), bộ đếm (đếm số lần) hoặc hẹn giờ. Lịch trình linh hoạt từ hằng ngày, "N ngày mỗi tuần", các ngày cụ thể trong tuần, cho đến chu kỳ "mỗi N ngày" — chu kỳ này tự neo lại sau mỗi lần hoàn thành để người dùng hoàn thành sớm không bao giờ bị mất ngày.
Một tính năng đáng chú ý là "Day starts at" (ngày bắt đầu từ): người dùng có thể đẩy thời điểm chuyển ngày muộn nhất đến 6 giờ sáng, rất hữu ích cho những ai thường ghi nhận thói quen khuya. Thay đổi này không bao giờ làm phân loại lại dữ liệu lịch sử.
- Chế độ xem Today: các thói quen đến hạn trong ngày, chạm để hoàn thành, nhấn giữ để ghi chú một phần hoặc hẹn giờ, kéo để sắp xếp lại (thứ tự này đồng bộ qua iCloud).
- Chi tiết thói quen: lịch tháng với điều hướng theo tháng, streak hiện tại và tốt nhất, điểm số kèm giải thích thuật toán. Có thể chỉnh sửa bất kỳ ngày nào trong quá khứ.
- Ghi chú mỗi ngày: ghi chú ngắn cho mỗi lần hoàn thành, được bảo toàn khi xuất và nhập dữ liệu.
- Chế độ xem tổng quan: ma trận "thói quen × ngày" với ô màu theo điểm số — mô hình mượn từ Loop, nhưng được "thấm" DNA điểm số của Kadō.
- Widgets và Siri: widget màn hình chính (nhỏ / vừa / lớn) và màn hình khóa, hoàn thành nhanh qua AppIntent. Hỗ trợ Siri và Shortcuts để hoàn thành, ghi giá trị hoặc hỏi điểm số, streak mà không cần chạm tay.
- Nhắc nhở thông minh: thông báo cục bộ theo lịch lặp lại kèm thao tác nhanh "đã xong" hoặc "bỏ qua".
- Xuất / nhập không mất mát: cả định dạng JSON lẫn CSV, đã được kiểm thử vòng tròn — người dùng có thể mở bản sao CSV trong Numbers hoặc Excel, chỉnh sửa, rồi nhập lại.
- Hỗ trợ tiếp cận: Dynamic Type lên đến XXXL, đầy đủ nhãn VoiceOver và Dark Mode hoàn chỉnh.
- Ngôn ngữ: tiếng Anh và tiếng Pháp bản địa (không dịch máy).
Tip Jar (hũ tiền tip) trong ứng dụng là tùy chọn hoàn toàn, không mở khóa bất cứ tính năng nào — toàn bộ ứng dụng luôn miễn phí, không ads, không subscription, không tracking.
Mã nguồn mở, kỹ thuật minh bạch
license MIT
Dự án Kadō có zero dependency — đây là điểm rất đáng nể trong bối cảnh ứng dụng iOS hiện nay. Toàn bộ ứng dụng được viết bằng SwiftUI với @Observable (iOS 17+), không dùng Combine. Lưu trữ cục bộ bằng SwiftData với VersionedSchema + SchemaMigrationPlan được cài đặt ngay từ ngày đầu.
- WidgetKit + App Group JSON snapshot: quá trình widget không bao giờ mở SwiftData trực tiếp (giải thích chi tiết trong CLAUDE.md).
- App Intents cho quick-complete widget, Siri và Shortcuts.
- StoreKit 2 cho Tip Jar.
- Swift Testing cho unit tests, XCTest cho UI tests và cả chụp màn hình App Store.
- Mã nguồn có sẵn trên GitHub, cấu trúc thư mục rõ ràng: Kado (app target chính), Packages/KadoCore (gói Swift chia sẻ), KadoWidgets, Tests, Scripts (chụp màn hình, tạo khung, kết nối App Store Connect không phụ thuộc).
Lộ trình phát triển và những gì không làm
Kadō hiện ở phiên bản 1.7 trên App Store. Các tính năng không nằm trong kế hoạch được công bố rõ ràng: ứng dụng Apple Watch gốc và tự động hoàn thành qua HealthKit đã bị "descoped" từ v0.3 vì không có người dùng nào yêu cầu sau khi ra mắt. Nhà phát triển cam kết chỉ xem xét lại khi có nhu cầu thực sự.
Các mục tiêu tiếp theo bao gồm Live Activities và Dynamic Island cho các thói quen dạng hẹn giờ, sau đó là phần hoàn thiện v1.x: theme, sinh trắc học, danh mục, và tập tin sao lưu.
Cách dùng thử và đóng góp
Kadō có sẵn trên App Store, miễn phí. Nếu muốn chạy thử từ mã nguồn, người dùng cần macOS 14.5+ và Xcode 16.x+. Tài khoản Apple Developer chỉ cần khi build lên thiết bị vật lý hoặc TestFlight; mô phỏng (simulator) không cần.
Dự án đặc biệt chào đón sự đóng góp từ cộng đồng:
- Đọc CLAUDE.md trước — đây là "bản giao kèo" của dự án (kiến trúc, quy ước, kỳ vọng kiểm thử). Được viết cho Claude Code nhưng áp dụng cho cả lập trình viên con người.
- Logic nghiệp vụ (điểm số, streak, tần suất, import/export) phải được viết theo hướng test-first.
- Một PR cho một tính năng hoặc một lần sửa lỗi.
- Tuyệt đối không thêm dependency thứ ba — Tip Jar được xây trực tiếp trên StoreKit 2, và client App Store Connect tự ký JWT bằng openssl để giữ đúng cam kết này.
Với việc ngày càng nhiều người dùng iOS quan tâm đến quyền riêng tư dữ liệu và các giải pháp mã nguồn mở bền vững, Kadō là một làn gió mới đáng theo dõi trong phân khúc ứng dụng năng suất cá nhân. Triết lý "điểm số thay vì streak" không chỉ hợp lý về mặt tâm lý học hành vi mà còn thể hiện một cách nhìn nhận nhân văn hơn về thói quen — không phải là những chuỗi ngày hoàn hảo, mà là xu hướng đi lên bền vững.


