Codeforces WatchR 1.9.0 (Doyle): Authentication flow

Revision en4, by yevhenii_kanivets, 2021-04-08 17:46:55

Hey, Codeforces! Since the last November, we've been off, but now we are back with a lot of cool stuff, so here is the update on what's new in Codeforces WatchR apps in App Store and Google Play.

Business-logic is moving to backend

We introduced the backend two milestones ago, but only the "Newsfeed" feature was implemented before now. Other features were still handled directly by mobile apps using Codeforces API, which made them complicated and unstable in some cases.

In particular, fetching followed users rating updates required many requests (one per user) whenever the user tried to refresh the list. It wasn't really scalable and stable enough, so the user experience was rather daunting.

Now, the refresh is done by a single request provided by our backend and happens almost instantly for mobile users. We are constantly querying Codeforces API to get the latest updates on the backend side with much fewer total requests overall.

Authentication flow

But to provide a great user experience, we decided to go even further by implementing authentication in Codeforces WathcR apps. It allows us to persist followed users between different devices and personalize the user experience in the long term.

At the moment, you can sign up (or sign in) with email/password only, but later we will add 3rd party login options as well (Google, Facebook, Apple, etc.). Please, note that it's not your Codeforces account, and we don't get access to your data or actions on Codeforces. We only use publicly available information for the in-app experience.

Account verification

But if you want the app to know who you are, we've got you covered by introducing the "Verify Codeforces account" feature. Again, it doesn't require access to your data or actions but based on public data, which you need to tweak a single time, so we know it's your account.

Account verification allows further personalization of your in-app experience and will serve as a basis for many awesome features coming in the following months. Here are just some of them:

  • push notifications you care about (i.e., editorials for tasks you didn't solve during the last round)
  • recommendations of problems to solve in topics you need to improve
  • recommendations of educational content
  • and much, much more

Do you have a feature request? Or maybe even a few of them? Don't hesitate to comment on this post with your suggestions ;)

Bug fixes

We've fixed a web experience in the Android app, so now you can upvote (and downvote) posts and comments, expand spoilers, see editorials, and even submit your solutions.

Overall we closed 26 issues in our public open-source GitHub repository for the Doyle milestone. BOGDAN_, denmen0207, Karavaiev and alla_dubovska will be super happy to receive some stars :)

Dedication

And finally, this milestone is dedicated to the great master of detective stories — Sir Arthur Conan Doyle. He created one of the most known fictional characters of all time — Sherlock Holmes. If you never had a chance to read them, please, do that right now, and your life won't ever be the same. Sometimes I want to reset my memory to read all that books again.

We are now searching for the author to feature in the next milestone, whose surname should start with "E". Please, comment with your suggestions.

Tags #codeforces, #api, #cw, #android, #ios

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en4 English yevhenii_kanivets 2021-04-08 17:46:55 2 Reverted to en2
en3 English yevhenii_kanivets 2021-04-08 17:46:04 2 Tiny change: 'ggestions.' -> 'ggestions.\n'
ru3 Russian yevhenii_kanivets 2021-04-08 17:35:28 1 Мелкая правка: 'forces WathchR. Это п' -> 'forces WatchR. Это п'
en2 English yevhenii_kanivets 2021-04-08 17:14:17 2 Tiny change: 'ss-logic in moving to' -> 'ss-logic is moving to'
ru2 Russian yevhenii_kanivets 2021-04-08 17:13:40 1 Мелкая правка: 'rces WathcR. Это поз' -> 'rces WathchR. Это поз'
ru1 Russian yevhenii_kanivets 2021-04-08 11:02:37 3976 Первая редакция перевода на Русский
en1 English yevhenii_kanivets 2021-04-08 10:12:01 4065 Initial revision (published)