- JS implementation of MTProto
- CSS code is inlined to index.html. So user can view login page instantly, without additional network requests.
- Login page is implemented with static html+js for good First Meaningful Paint/First Contentful Paint
- Chat app is implemented with Web Components (Custom Elements (V1) without Shadow DOM), because JS for its rendering is already loaded during login or cached during previous session.
- Pixel-perfect layout of most elements (a few margins between them may be wrong)
To go through signup flow, open app in test mode with empty localStorage(without data from previous session) and use test phone number. To open app in production mode (after test mode), you should clear localStorage too.
-
Determination of the country by phone number and using appropriate phone mask.
(gif speed: 2x)
-
Case-insensitive search with scrolling of the center of menu to the found country. If the user didn't fill the full name of country and blurred the select field, the last suggested country selecting automatically. When combobox becomes focused, its value becomes selected (lightblue highlighting). User can start searching without deleting old value manually.
-
The select placeholder changes to the name of the hovered country. When the user selects a country, phone input becomes focused.
-
Smooth animation of monkey when changing steps, entering code, changing password visibility. Input autofocus.
progress of the gif at the bottom
-
Editing masked phone in any part without jumping of cater to the end of input.
-
"+" sign at the beginning of the phone input is persistent. User can't delete it.
-
Custom font with large dots in password input and blue input caret in all inputs.
-
Avatar cropping.
to open this page without registering a new user, executewindow.showPage.fullname()
in console
-
Keyboard navigation with Tab, Shift+Tab (outline style activates only when interacting with keyboard).
-
Different size of line breaks of message, depending on the width of the date, the read icon, and the type of message (forward, replay, plain).
-
Different styles of messages, depending on position and author.
-
Ripples appear on mousedown and disappear on mouseup - it keeps on mouse hold (like in Telegram Desktop).
-
Typing and online indicator (but with z-index bug of online indicator).