Rebrand Spotit to TuneEase
Bước sang năm mới 2025, tôi gặp phải một vài chuyện riêng ngoài ý muốn. Nếu là tôi của 10 năm trước, thì chắc là đã than trời trách phận, lần này tôi bình tĩnh và chỉ tập trung vào phân loại vấn đề và tìm giải pháp cho từng cái, rồi làm từ từ và đợi cho mọi việc lắng xuống.
Sau khi về lại Nhật, thì tôi lên kế hoạch mở rộng side project của tôi lên, nhưng để đạt được thì tôi phải làm một vài thay đổi lớn trên codebase hiện tại. Sau đó, tôi dành đâu đó vài tuần để để nghiên cứu stack và lên plan migrate side project của tôi sang stack mới. Phần đầu tiên tôi migrate sẽ là phần authentication, tôi sẽ viết một bài khác chi tiết về cách tôi implement, vì tôi thiết kế được một giải pháp đơn giản để tự renew token.
Sau đó, vào một ngày chủ nhật mưa gió bão bùng, trời lạnh buốt, tôi mở project lên định tiếp tục thì thình lình app không hoạt động, sau đó ngồi xem một chút thì phát hiện ra Spotify đã chặn unofficial API authentication của họ. Nói thêm là tôi đã reverse engineer để tìm ra được cái đầu endpoint đó và tìm được cách để call nó thay vì theo cách chính thống. Vâng authentication là xương sống của cả cái app, nó không hoạt động thì coi như cái app cũng tiêu luôn. Thay vì hoản loạng, thì tôi rất bình tĩnh và chấp nhận ba thứ.
Chuyện đã xảy ra rồi, không than trời trách phận được.
Tôi không thể kiểm soát được, vì đó là quyết định của Spotify.
Tôi đã không theo luật ngay từ đầu, đó là lỗi của tôi vì tôi biết ngày này rồi cũng đến, sớm hay muộn thôi.
Khi tôi suy nghĩ như vậy, tôi trở nên bình tĩnh và bắt đầu chậm rãi tìm giải pháp phù hợp. Tình huống xấu nhất là tôi sẽ phải “Unpublish” cả cái side project. Nhưng tôi đã thử theo cách chính thống làm authentication và authorization của Spotify và nó hoạt động. Cách chính thống là mình phải tạo một cái app trên platform của Spotify, mặc định khi tạo nó là tài khoản dev, tức là quota traffic có giới hạn, trong khi đó product của tôi phục vụ cho hơn 80k users. Để phục vụ traffic như vậy thì tôi phải đăng ký mở rộng quota. Điều đó dẫn tôi tới các điều luật của Spotify như sau:
Tên của product không được chứa chữ “SPOT”
Logo của product không được sử dụng màu của Spotify.
Hai điều trên tôi đều vi phạm, thế là tôi có thêm nhiều việc để làm.
Tôi rebrand cái product tôi từ Spotit => TuneEase.
Và tôi nhờ bạn tôi đổi cái logo sử dụng màu của Spotify sang màu vàng.
Để rebrand sang TuneEase, tôi làm một vài bước sau đây:
Mua domain mới
Clone cái landing page của Spotit sang một project mới, setup domain và deployment.
Implement authentication và authorization trên cái website
Thế câu hỏi lớn nhất tới thời điểm này là “Làm cách nào cái web extension của tôi lấy được thông tin authentication từ website?”. Vấn đề này rất hay, từ đây tôi được biết tới method của browser "window.postMessage()" để truyền nhận dữ liệu. Và sau đó tôi thiết kế một giải pháp sử dụng method đó, như sau:
Sau khi authenticate xong trên website, tôi sẽ lấy dữ liệu trả về bao gồm auth token và dùng method đó gửi đến cho extension.
Ở extension, tôi sẽ implement cơ chế listen để nhận dữ liệu từ website. Sau khi có dữ liệu tôi lưu vào storage của extension.
Và extension sau đó sẽ lấy token từ đó mà dùng.
Và nó hoạt động!!! Sau khi implement tạm ổn giải pháp để chữa cháy. Tôi thấy vài lỗi, vì tính tôi thích sự hoàn hảo, nên tôi đã rất stress vì mấy cái nhỏ nhỏ. Sau đó vài tuần, tôi suy nghĩ lại.
Thà tôi publish cái bandaid để giải quyết 90% vấn đề của người dùng trước, chứ nếu tôi đợi fix hết sự cố thì có khi mọi người đã uninstall và không xài product nữa.
Thế là tôi quyết định publish, và tôi cũng làm một trang web để thông báo cho người dùng các thay đổi tôi đề cập ở trên và một lời xin lỗi https://www.tunease.com/update/v4-migration
Vẫn còn nhiều thứ cần phải làm, nhưng tạm thế đã.