Tôi đã một mình làm ra ứng dụng hẹn hò, mỗi ngày chỉ một người và cuộc trò chuyện biến mất sau 24 giờ
(only24-portfolio.web.app)Xin chào. Tôi xin giới thiệu ONLY24, ứng dụng hẹn hò tôi tự làm một mình trong 6 tháng kể từ tháng 1 năm nay.
Đây là ứng dụng gì
- Mỗi ngày chỉ ghép đúng một người. Không có vuốt.
- Từ thời điểm được ghép, chỉ có thể trò chuyện trong 24 giờ. Hết thời gian, cuộc trò chuyện sẽ bị xóa toàn bộ khỏi cả máy chủ.
- Hồ sơ dùng avatar thay vì ảnh thật. Nếu hợp nhau, có thể kết bạn và thậm chí gọi video ngay trong ứng dụng.
Vì sao tôi làm như vậy
Khi mở các ứng dụng hẹn hò hiện có, hàng trăm người xuất hiện dồn dập, và tôi cảm thấy càng lướt thì chẳng ai còn nghiêm túc nữa. Vì luôn có người tiếp theo ngay phía sau. Tôi nghĩ rằng nếu lựa chọn là vô hạn thì sẽ chẳng ai còn trở nên quý giá, nên tôi đi theo hướng hoàn toàn ngược lại. Hôm nay chỉ một người, 24 giờ.
Những bài toán thú vị khi làm
- Chat mã hóa E2E: dùng X25519 ECDH để trao đổi khóa và AES-256-GCM để mã hóa. Trên Firestore chỉ còn lại bản mã nên ngay cả tôi là người vận hành cũng không thể đọc cuộc trò chuyện. Nhưng thiết kế này lại xung đột trực diện với tính năng AI. AI không thể giải mã. Cuối cùng, tôi giữ E2E cho hội thoại giữa người với người, và chỉ để ngoại lệ bản rõ cho chat với bot AI.
- Cold start của ứng dụng hẹn hò: không có người dùng thì không thể ghép cặp, mà không ghép được thì người dùng lại rời đi. Vì vậy, trong ghép cặp bằng ảnh sở thích (Gemini embedding 768 chiều + độ tương đồng cosine), nếu trong 10 phút không có đối tượng phù hợp thì sẽ có cơ chế fallback để bot AI ghép thay. Chat với bot sẽ dùng GPT để phản hồi dựa trên ngữ cảnh của ảnh.
- Ghép cặp theo vị trí: dựa trên geohash, và chỉ ghép khi vừa thỏa bán kính của tôi vừa thỏa bán kính của đối phương. Ban đầu tôi triển khai theo kiểu "chọn bán kính rộng hơn", dẫn đến lỗi người đặt 5km lại bị ghép với người cách 50km, nên sau đó đã sửa thành điều kiện AND theo bán kính.
- Stack: Flutter + Firebase(Firestore, Cloud Functions/TypeScript) + Supabase hỗ trợ, gọi video WebRTC, xác thực danh tính PASS (từ 19 tuổi trở lên, chặn đăng ký trùng lặp).
Tình trạng hiện tại một cách thẳng thắn
Tôi đưa ứng dụng lên store vào cuối tháng 4 và gần như chưa có người dùng. Với ứng dụng hẹn hò, người dùng chính là sản phẩm, nên tôi đang trực tiếp học được rằng cold start là bài toán khó nhất. Nhờ fallback bằng bot, tôi đã tránh được trải nghiệm đầu tiên kiểu "căn phòng trống rỗng", nhưng bài toán hiện tại là phải bắt đầu thu hút người dùng thật từ đâu. Tôi rất muốn nghe kinh nghiệm từ những ai từng giải bài toán tương tự.
Nhà phát triển
Sau khi làm xong, tôi đang rất khao khát nhận được phản hồi từ những người thực sự sử dụng. Nếu mọi người cho nhiều ý kiến, tôi sẽ phản ánh ngay để chỉnh sửa cho dễ dùng hơn. Rất mong nhận được nhiều liên hệ.
- App Store: https://apps.apple.com/kr/app/id6759185657
- Google Play: https://play.google.com/store/apps/details?id=com.kamataewoo.only24
- Tổng hợp kiến trúc kỹ thuật: https://only24-portfolio.web.app
2 bình luận
Ý tưởng giống như một buổi xem mắt vào giờ trưa, nhưng với kiểu này thì có vẻ số lượng người dùng vẫn là yếu tố quan trọng hơn chất lượng ứng dụng. Giống như KakaoTalk, dù tệ đến mấy thì cũng vẫn phải dùng thôi.
Xin chào! Cảm ơn bạn rất nhiều vì đã phản hồi.
Đúng vậy. Chất lượng đã được cải thiện ở mức nào đó, nhưng việc thu hút người dùng không hề dễ dàng..