Skip to the prototype

MVPFeature design spec · October 2026

Friends Leaderboard

Do‘stlaring bilan raqobatlash

Private leagues inside Tingla AI where friends compete on the streaks (zarba) they already build. Same scoring as the Global board, a two-step setup, and an invitation that works even for friends who have not installed the app yet.

core screens, plus every edge state
8
steps from idea to a live league
2
new scoring rules to learn
0
permission prompts, not even for contacts
0

Reyting

  1. 1-o‘rin, Dilnoza Rahimova, 48 kunlik zarba
  2. 2-o‘rin, Jasur Toshmatov, 36 kunlik zarba
  3. 3-o‘rin, Madina Yusupova, 29 kunlik zarba
  1. 4-o‘rin, Sardor Aliyev, 23 kunlik zarba
  2. 5-o‘rin, Nilufar Karimova, 17 kunlik zarba
  3. 6-o‘rin, Bekzod Ergashev, 14 kunlik zarba
  4. 6-o‘rin, Shahzoda Nurmatova, 14 kunlik zarba
  5. 8-o‘rin, Otabek Qodirov, 11 kunlik zarba
  6. 9-o‘rin, Aziz Karimov, 9 kunlik zarba
  7. 10-o‘rin, Kamola Saidova, 6 kunlik zarba
  8. 11-o‘rin, Javohir Hasanov, 2 kunlik zarba

Teng zarbalar bir xil o‘rinda turadi

Reyting har kuni zarbalar bo‘yicha yangilanadi. Bugun ham tinglab, zarbangni uzaytir.

Interactive prototype

Every flow, clickable

The phone runs the real Uzbek copy and the full state model: create, invite, accept, rank, manage and leave. Jump to any screen, or trigger the events a real league would see.

Reyting

Eng uzun zarbalar

  1. 1-o‘rin, Mohira Xudoyberdiyeva, 412 kunlik zarba
  2. 2-o‘rin, Shohruh Abdurahmonov, 389 kunlik zarba
  3. 3-o‘rin, Sevara Nazarova, 356 kunlik zarba
  1. 4-o‘rin, Doniyor Yo‘ldoshev, 341 kunlik zarba
  2. 5-o‘rin, Nodira Ismoilova, 327 kunlik zarba
  3. 6-o‘rin, Abdulaziz Rasulov, 318 kunlik zarba
  4. 7-o‘rin, Lobar Tojiyeva, 302 kunlik zarba
  5. 8-o‘rin, Behruz Karimov, 297 kunlik zarba
  6. 9-o‘rin, Oydin Ahmedova, 284 kunlik zarba
  7. 10-o‘rin, Firdavs Olimov, 276 kunlik zarba

Sening o‘rning

1 248-o‘rin, Aziz Karimov, 9 kunlik zarba

Standard 390 × 844 · Sample data, not real Tingla users

Overview

A small feature with a clear job

Tingla already rewards consistency with a daily streak and a Global leaderboard. Friends Leaderboard keeps both exactly as they are and adds the one thing they lack: people you actually know.

01Problem

Rank 1 248 is not a reason to come back

The Global board ranks everyone against everyone. It motivates the people near the top, while most learners see a number too far away to matter.

02Hypothesis

People you know move you more than strangers

Seeing a friend's streak next to yours creates small, personal stakes. A private league turns a solo habit into a shared one, online and off.

03Approach

Add a tab, not a new system

Reuse the streak, the leaderboard screen and the navigation people already know. Build only what it takes to create a league, invite friends and manage it.

Goals and suggested success metrics

Metrics are proposals for the product team, measured against users who are not in a league.

  • EngagementFriends tab opens per weekly active user
  • Learning consistencyShare of league members who extend their streak each day
  • Retention30-day retention of league members against non-members
  • Social interactionInvitations sent and accepted per league

In the MVP

  • Global and Friends tabs on the existing Leaderboard screen
  • Create a private league with a custom name
  • Invite by in-app search or a shareable link
  • Accept, postpone or decline an invitation
  • League ranking by current streak, top three highlighted
  • Your own position always visible
  • Rename, invite, remove members (admin) and leave
  • Membership in more than one league
  • Loading, empty, error, success and confirmation states

Later, by design

  • Weekly competitions and seasons
  • Rewards, badges and league trophies
  • Reactions and nudges between friends
  • Advanced statistics and history charts

Kept out on purpose so the first release proves the core loop: create, invite, compare, come back tomorrow.

Information architecture

One new tab, three new destinations

Friends lives next to Global on the screen people already use. Everything else is reached from inside the league, so the app's navigation does not grow.

Screen map

  • ReytingExistingLeaderboard, in the existing bottom navigation
    • UmumiyUnchangedGlobal tab, the current experience
      • Do‘stlar ligasi kartasiNewEntry card, shown until you join a league, dismissible
    • Do‘stlarNewFriends tab
      • Bo‘sh holatNo league yet: create one or join with an invitation
      • Taklif kartalariInvitations waiting for you: view or decline
      • Liga reytingiPodium, ranking by streak, your pinned row
        • LigalarimModalSwitch league, create a new one, join another
        • Do‘stlarni taklif qilishInvitation link, search, sent invitations
        • Liga sozlamalariRename, members, invitations, leave

Full-screen flows

  • Yangi ligaTwo steps: name the league, then invite. Opens from the empty state, the entry card or the league switcher.
  • Liga taklifiFull-screen invitation. Opens from a notification, a link or an invitation card.
  • Ro‘yxatdan o‘tishExisting sign-up, with the pending invitation kept on top and reopened after it.

Entry points

  1. Bottom navigationReyting, then the Do‘stlar tab. A small orange dot marks it as new until the first visit.
  2. Global tab entry cardShown only while you are in no league. One tap to create, one tap to hide.
  3. Invitation notificationOne notification per invitation. No reminders and no alerts for declines.
  4. Invitation linkWorks in any messenger, before install, and survives sign-up.
  5. League switcherCreate another league or join one, from inside any league.

Core objects

League
Name, admin, members, one invitation link. Always private.
Invitation
From a member to a person or through the link. Pending, accepted, declined or expired.
Membership
Admin or member. Ranking reads the existing streak, nothing is stored per league.

End-to-end user flow

Two journeys that meet in one ranking

The creator's path is short on purpose: two screens to a live league. The invited friend's path handles every way an invitation can arrive, fail or wait.

League creator

Becomes the league admin
  1. Opens the Leaderboard

    Global looks exactly as before. The Do‘stlar tab carries a small dot until the first visit.

  2. Switches to Do‘stlar

    The tab explains the feature in one sentence and three short promises.

  3. Decision: Already in a league?

    • YesLands on that league's ranking
    • NoSees the empty state with one primary action
  4. Names the league

    One field, quick picks and a plain privacy note. Private is the default, not a setting.

  5. Invites friends

    Search Tingla or share the link. Keyinroq skips ahead; the league already exists.

  6. League goes live

    Open podium spots and pending invitations show progress while friends respond.

  7. Friends join, the race starts

    Ranking by current streak. The creator's own row stays visible wherever they scroll.

  8. Manages the league

    Rename, invite more people, remove members, all from one settings screen.

  9. Leaves with one confirmation

    Admin rights move to the longest-standing member. The Global streak is untouched.

Invited friend

Joins someone else's league
  1. Gets an invitation

    A notification for in-app invitations, or a link in Telegram or any other messenger.

  2. Decision: Has a Tingla account?

    • NoSigns up with the invitation pinned on top, then it opens by itself
    • YesGoes straight to the invitation
  3. Sees who invited them and to what

    Inviter, league name, members, the longest streak and a privacy promise.

  4. Decision: Is the invitation still usable?

    • ExpiredCalm dead end with a way back
    • League fullOffers to create their own league
    • Already inOpens the league instead
  5. Decision: Join now?

    • Ligaga qo‘shilishJoins and lands on the ranking with their row highlighted
    • Hozir emasThe invitation waits in the Friends tab to accept or decline later
  6. Appears in the ranking

    The inviter gets a quiet confirmation. Nobody is ever told about a decline.

High-fidelity screens

Eight screens, one visual language

Each screen below is the live prototype frozen in place, with the same components, copy and data. Open any of them to keep clicking from that point.

  1. 01

    Reyting

    Eng uzun zarbalar

    1. 1-o‘rin, Mohira Xudoyberdiyeva, 412 kunlik zarba
    2. 2-o‘rin, Shohruh Abdurahmonov, 389 kunlik zarba
    3. 3-o‘rin, Sevara Nazarova, 356 kunlik zarba
    1. 4-o‘rin, Doniyor Yo‘ldoshev, 341 kunlik zarba
    2. 5-o‘rin, Nodira Ismoilova, 327 kunlik zarba
    3. 6-o‘rin, Abdulaziz Rasulov, 318 kunlik zarba
    4. 7-o‘rin, Lobar Tojiyeva, 302 kunlik zarba
    5. 8-o‘rin, Behruz Karimov, 297 kunlik zarba
    6. 9-o‘rin, Oydin Ahmedova, 284 kunlik zarba
    7. 10-o‘rin, Firdavs Olimov, 276 kunlik zarba

    Sening o‘rning

    1 248-o‘rin, Aziz Karimov, 9 kunlik zarba

    Leaderboard

    Reyting · Umumiy

    • Global and Do‘stlar share one segmented control. The active tab is a raised white pill, not just a color change.
    • The existing Global ranking keeps its podium, list and your pinned position.
    • A dismissible entry card appears only while you are in no league.
  2. 02

    Reyting

    Do‘stlaring bilan raqobatlash

    Shaxsiy liga yarat va do‘stlaringni taklif qil. Har kim o‘z zarbasi bilan reytingda joy oladi.

    • Faqat taklif qilinganlar ko‘ra oladi
    • Reyting zarbalar asosida tuziladi
    • Umumiy zarbang o‘zgarmaydi

    Friends empty state

    Do‘stlar · bo‘sh holat

    • A soft 3D podium with the streak flame explains the idea before any text does.
    • The brief's headline, one sentence and three short promises: private, streak based, Global streak untouched.
    • One primary action and one quiet secondary, both reachable with a thumb.
  3. 03

    Yangi liga

    Ligangga nom ber

    Nomni liga a’zolari ko‘radi. Uni keyin ham o‘zgartirish mumkin.

    Tezkor tanlov

    Yopiq liga

    Standart

    Faqat sen taklif qilgan do‘stlaring qo‘shila oladi va reytingni ko‘ra oladi.

    Create league

    Yangi liga

    • Step 1 of 2 with a visible progress bar, so the effort is known upfront.
    • Quick picks make naming a single tap. Private access is explained, not offered as a toggle.
    • Validation appears inline after submit or blur, never while the person is still typing.
  4. 04

    Do‘stlarni taklif qilish

    “Kitob klubi” ligasi

    Taklif havolasi

    Havola orqali istalgan do‘sting qo‘shila oladi, u hali Tinglada bo‘lmasa ham.

    tingla.ai/l/KLB5R3

    yoki Tinglada qidir

    Natijalar

    • Dilnoza

    Invite friends

    Do‘stlarni taklif qilish

    • The link comes first: it works in any messenger and for friends who are not on Tingla yet.
    • Search by name or username, select several people, remove any of them from the chip row.
    • Every person shows a clear status: A’zo, Kutilmoqda, Qabul qildi or Rad etdi. No contact permission, ever.
  5. 05

    Liga taklifi

    Dilnoza Rahimova seni “Ertalabki tinglovchilar” ligasiga taklif qildi

    Do‘stlaring bilan har kuni zarbangni solishtir va birga izchil o‘rgan.

    +16 a’zo
    A’zolar
    6
    Eng uzun zarba
    54
    Kirish
    Yopiq

    Qo‘shilsang ham umumiy zarbang va global reytingdagi o‘rning o‘zgarmaydi.

    Invitation received

    Liga taklifi

    • Who invited you, to which league, who is already in it and the longest streak to chase.
    • A reassurance line: joining never changes your Global streak or rank.
    • Hozir emas keeps the invitation waiting in the Friends tab instead of throwing it away.
  6. 06

    Reyting

    1. 1-o‘rin, Dilnoza Rahimova, 48 kunlik zarba
    2. 2-o‘rin, Jasur Toshmatov, 36 kunlik zarba
    3. 3-o‘rin, Madina Yusupova, 29 kunlik zarba
    1. 4-o‘rin, Sardor Aliyev, 23 kunlik zarba
    2. 5-o‘rin, Nilufar Karimova, 17 kunlik zarba
    3. 6-o‘rin, Bekzod Ergashev, 14 kunlik zarba
    4. 6-o‘rin, Shahzoda Nurmatova, 14 kunlik zarba
    5. 8-o‘rin, Otabek Qodirov, 11 kunlik zarba
    6. 9-o‘rin, Aziz Karimov, 9 kunlik zarba
    7. 10-o‘rin, Kamola Saidova, 6 kunlik zarba
    8. 11-o‘rin, Javohir Hasanov, 2 kunlik zarba

    Teng zarbalar bir xil o‘rinda turadi

    Reyting har kuni zarbalar bo‘yicha yangilanadi. Bugun ham tinglab, zarbangni uzaytir.

    Friends leaderboard

    Liga reytingi

    • The league name doubles as the switcher; invite and settings are one tap away.
    • Gold, silver and bronze rings lift the top three. Equal streaks share a rank.
    • Low ranks stay neutral and never turn red. Your row pins to the edge when it scrolls away.
  7. 07

    Liga sozlamalari

    Kitobxonlar

    11 a’zoYopiq liga

    Asosiy

    • KirishFaqat taklif orqali
    • AdminAziz Karimov (Sen)

    Taklif

    • Taklif havolasitingla.ai/l/KTB7Q2

    A’zolar · 11

    • Aziz KarimovSenAdmin@aziz.karimov9
    • Dilnoza Rahimova@dilnoza.r48
    • Jasur Toshmatov@jasur_t36
    • Madina Yusupova@madina.y29
    • Sardor Aliyev@sardor.reads23
    • Nilufar Karimova@nilufar.k17
    • Bekzod Ergashev@bekzod.e14
    • Shahzoda Nurmatova@shahzoda.n14
    • Otabek Qodirov@otabek.q11
    • Kamola Saidova@kamola.s6
    • Javohir Hasanov@javohir.h2

    Takliflar · 3

    • Rustam Ismoilov@rustam.iKutilmoqda
    • Malika Abdullayeva@malika.aKutilmoqda
    • Zarina Xolmatova@zarina.xRad etdi

    Liga a’zoligi umumiy zarbaga ta’sir qilmaydi.

    League management

    Liga sozlamalari

    • Name, access and admin first, then inviting, then members and their invitation status.
    • Remove is admin only and confirmed once. Members see a short note instead of hidden controls.
    • Leaving sits apart, in red, and states what happens to the league and to your streak.
  8. 08

    Reyting

    1. 1-o‘rin, Aziz Karimov, 9 kunlik zarba
    2. Bo‘sh joy
    3. Bo‘sh joy

    Ligang tayyor!

    Hozircha faqat sensan. Do‘stlaring qo‘shilgach, raqobat boshlanadi.

    Empty and edge states

    Chekka holatlar

    • A new league with only you turns open podium spots into invite buttons.
    • Pending invitations, no search results, expired links, league full and already a member.
    • Network error, loading, leaving the league and members without a photo. See all of them below.

Responsive layouts

Built for the phones people actually carry

The Friends leaderboard at three common widths, shown at the same scale. The layout adapts; the type scale and touch targets do not shrink.

  • Reyting

    1. 1-o‘rin, Dilnoza Rahimova, 48 kunlik zarba
    2. 2-o‘rin, Jasur Toshmatov, 36 kunlik zarba
    3. 3-o‘rin, Madina Yusupova, 29 kunlik zarba
    1. 4-o‘rin, Sardor Aliyev, 23 kunlik zarba
    2. 5-o‘rin, Nilufar Karimova, 17 kunlik zarba
    3. 6-o‘rin, Bekzod Ergashev, 14 kunlik zarba
    4. 6-o‘rin, Shahzoda Nurmatova, 14 kunlik zarba
    5. 8-o‘rin, Otabek Qodirov, 11 kunlik zarba
    6. 9-o‘rin, Aziz Karimov, 9 kunlik zarba
    7. 10-o‘rin, Kamola Saidova, 6 kunlik zarba
    8. 11-o‘rin, Javohir Hasanov, 2 kunlik zarba

    Teng zarbalar bir xil o‘rinda turadi

    Reyting har kuni zarbalar bo‘yicha yangilanadi. Bugun ham tinglab, zarbangni uzaytir.

    Compact 360 × 780

    Names truncate before streaks do, and fewer ranks fit, so the pinned row carries more of the load.

  • Reyting

    1. 1-o‘rin, Dilnoza Rahimova, 48 kunlik zarba
    2. 2-o‘rin, Jasur Toshmatov, 36 kunlik zarba
    3. 3-o‘rin, Madina Yusupova, 29 kunlik zarba
    1. 4-o‘rin, Sardor Aliyev, 23 kunlik zarba
    2. 5-o‘rin, Nilufar Karimova, 17 kunlik zarba
    3. 6-o‘rin, Bekzod Ergashev, 14 kunlik zarba
    4. 6-o‘rin, Shahzoda Nurmatova, 14 kunlik zarba
    5. 8-o‘rin, Otabek Qodirov, 11 kunlik zarba
    6. 9-o‘rin, Aziz Karimov, 9 kunlik zarba
    7. 10-o‘rin, Kamola Saidova, 6 kunlik zarba
    8. 11-o‘rin, Javohir Hasanov, 2 kunlik zarba

    Teng zarbalar bir xil o‘rinda turadi

    Reyting har kuni zarbalar bo‘yicha yangilanadi. Bugun ham tinglab, zarbangni uzaytir.

    Standard 390 × 844

    The baseline layout: podium, pending invitations and the first ranks above the fold.

  • Reyting

    1. 1-o‘rin, Dilnoza Rahimova, 48 kunlik zarba
    2. 2-o‘rin, Jasur Toshmatov, 36 kunlik zarba
    3. 3-o‘rin, Madina Yusupova, 29 kunlik zarba
    1. 4-o‘rin, Sardor Aliyev, 23 kunlik zarba
    2. 5-o‘rin, Nilufar Karimova, 17 kunlik zarba
    3. 6-o‘rin, Bekzod Ergashev, 14 kunlik zarba
    4. 6-o‘rin, Shahzoda Nurmatova, 14 kunlik zarba
    5. 8-o‘rin, Otabek Qodirov, 11 kunlik zarba
    6. 9-o‘rin, Aziz Karimov, 9 kunlik zarba
    7. 10-o‘rin, Kamola Saidova, 6 kunlik zarba
    8. 11-o‘rin, Javohir Hasanov, 2 kunlik zarba

    Teng zarbalar bir xil o‘rinda turadi

    Reyting har kuni zarbalar bo‘yicha yangilanadi. Bugun ham tinglab, zarbangni uzaytir.

    Large 430 × 932

    More ranks fit above the fold. The pinned row only appears while your own row is out of view.

  • Fluid, never fixed

    Every screen stretches to the device width. Only touch targets and avatars have fixed sizes.

  • Thumb-sized targets

    Buttons, rows and icon buttons are at least 44 by 44 points at every size.

  • Safe areas respected

    Content clears the status bar, camera and home indicator on every frame.

  • Priority under pressure

    When space runs out, names truncate first, usernames second, streaks never.

Design system

Tokens and reusable components

Everything in the prototype is built from this kit. It extends Tingla's minimal style with one orange accent, warm neutrals and a single flame mark for streaks.

Color

  1. 50#FFF6EF
  2. 100#FFEAD9
  3. 200#FFD2AE
  4. 300#FFB27A
  5. 400#FF8C45
  6. 500#FF6B1A
  7. 600#E85A0C
  8. 700#CC4A0A
  9. 800#A63C0B
  10. 900#7C2F0E
  • brand-500#FF6B1AFlame, accents, illustrations. Never body text.
  • brand-700#CC4A0APrimary buttons, links and orange text.4.6:1 with white, AA
  • ink-900#1C1916Primary text and dark surfaces.17.5:1 on white
  • ink-600#5F5952Secondary text.6.9:1 on white
  • ink-500#736C65Tertiary text and placeholders.5.2:1 on white
  • ink-200#E7E3DEBorders and dividers.
  • ink-50#F9F8F6Light neutral surfaces.
  • success-600#157F4FAccepted, saved, joined.5.0:1 on white
  • pending-700#8A5300Pending status text on pending-50.5.8:1 on its tint
  • danger-600#C2352BDestructive actions and errors only. Never for low ranks.5.5:1 with white
  • gold / silver / bronze#E9A23BPodium rings, always paired with the rank number.

Type · Inter

  • ReytingLarge title · 30 / 36 · Bold · tight
  • Ligangga nom berScreen title · 26 / 32 · Bold
  • KitobxonlarHeadline · 19 / 26 · Bold
  • Har kim o‘z zarbasi bilan reytingda joy oladi.Body · 15 to 17 / 24 · Regular, Semibold
  • 11 a’zo · Yopiq ligaCaption · 13 / 18 · Medium
  • Liga taklifiOverline · 12 / 16 · Bold · uppercase

Shape and space

  • 12
  • 16
  • 22
  • 28
  • full

4-point spacing grid. Inputs 16, cards 22, sheets and dialogs 28, avatars and chips round. Touch targets 44 or more.

Elevation

  • SoftCards
  • LiftPinned row, toasts
  • FloatSheets, dialogs
  • CTAPrimary button

Components

Live components, not pictures. The tabs, search and field below respond to input.

Segmented tabs

Global and Friends. A sliding white pill marks the active tab; arrow keys switch tabs.

Buttons

Primary, secondary, ghost and destructive, with loading and disabled states. 56 point primary height.

Text field with inline validation

Label above, counter and message below. Errors use color, an icon and text, never color alone.

Search and selectable row

Search by name or username. The whole row is the checkbox, so the target is the full width.

+2

Avatars and league badge

Photo or initials on a soft tint, the same size grid everywhere. Members without a photo never look broken.

489014

12 kunlik zarba

Streak mark

One flame for every streak. Active streaks burn orange; a zero streak turns calm grey, never red.

  1. 4-o‘rin, Sardor Aliyev, 23 kunlik zarba
  2. 9-o‘rin, Aziz Karimov, 9 kunlik zarba
9-o‘rin, Aziz Karimov, 9 kunlik zarba

Rank rows

Default, current user and pinned. Rank, avatar, name, username and streak in a fixed order.

  1. 1-o‘rin, Dilnoza Rahimova, 48 kunlik zarba
  2. 2-o‘rin, Jasur Toshmatov, 36 kunlik zarba
  3. 3-o‘rin, Madina Yusupova, 29 kunlik zarba

Podium

The top three with medal rings, a crown for first place and soft pedestals. Equal streaks share a rank.

KutilmoqdaQabul qildiRad etdiA’zo
SenAdminYangiStandart

Status chips and tags

Invitation statuses carry an icon and a word. Declined is neutral grey on purpose.

3 ta taklif yuborildi

Feedback

Toast for quiet success, inline alert for recoverable errors, skeletons while loading.

Notification and soft icons

The invitation notification, plus the soft 3D tiles used for empty, error and confirmation states.

Empty, loading, error, success and confirmation states

Designed for the unhappy paths too

Every state listed in the brief, plus the ones a real league runs into. Each card is a live screen you can continue in the prototype.

Empty and success

A league is never presented as a failure, even with one member.

  • Reyting

    1. 1-o‘rin, Aziz Karimov, 9 kunlik zarba
    2. Bo‘sh joy
    3. Bo‘sh joy

    Ligang tayyor!

    Hozircha faqat sensan. Do‘stlaring qo‘shilgach, raqobat boshlanadi.

    New league, only you

    Open podium spots become invite buttons.

  • Reyting

    1. 1-o‘rin, Madina Yusupova, 29 kunlik zarba
    2. 2-o‘rin, Aziz Karimov, 9 kunlik zarba
    3. Bo‘sh joy

    Reyting har kuni zarbalar bo‘yicha yangilanadi. Bugun ham tinglab, zarbangni uzaytir.

    Pending invitations

    Who joined and who has not answered yet.

  • Reyting

    1. 1-o‘rin, Akmal Mirzayev, 54 kunlik zarba
    2. 2-o‘rin, Dilnoza Rahimova, 48 kunlik zarba
    3. 3-o‘rin, Laylo Rasulova, 41 kunlik zarba
    1. 4-o‘rin, Madina Yusupova, 29 kunlik zarba
    2. 5-o‘rin, Feruza Tursunova, 12 kunlik zarba
    3. 6-o‘rin, Aziz Karimov, 9 kunlik zarba
    4. 7-o‘rin, Kamola Saidova, 6 kunlik zarba

    Reyting har kuni zarbalar bo‘yicha yangilanadi. Bugun ham tinglab, zarbangni uzaytir.

    “Ertalabki tinglovchilar” ligasiga qo‘shilding

    Joined a league

    A quiet toast and your row lights up briefly.

  • Reyting

    1. 1-o‘rin, Laylo Rasulova, 41 kunlik zarba
    2. 2-o‘rin, Gulnoza Mahmudova, 27 kunlik zarba
    3. 3-o‘rin, Sardor Aliyev, 23 kunlik zarba
    1. 4-o‘rin, Sanjar Qosimov, 15 kunlik zarba
    2. 5-o‘rin, Aziz Karimov, 9 kunlik zarba

    Reyting har kuni zarbalar bo‘yicha yangilanadi. Bugun ham tinglab, zarbangni uzaytir.

    Ligadan chiqding. Umumiy zarbang saqlandi.

    After leaving

    Back to your next league, streak reassurance included.

Errors and edge cases

Every dead end offers a next step. No error is a red wall of text.

  • Yangi liga

    Ligangga nom ber

    Nomni liga a’zolari ko‘radi. Uni keyin ham o‘zgartirish mumkin.

    Tezkor tanlov

    Yopiq liga

    Standart

    Faqat sen taklif qilgan do‘stlaring qo‘shila oladi va reytingni ko‘ra oladi.

    Validation

    Inline, specific and fixable in place.

  • Do‘stlarni taklif qilish

    “Kitobxonlar” ligasi

    Taklif havolasi

    Havola orqali istalgan do‘sting qo‘shila oladi, u hali Tinglada bo‘lmasa ham.

    tingla.ai/l/KTB7Q2

    yoki Tinglada qidir

    “Shohruxbek” bo‘yicha hech kim topilmadi

    Yozilishini tekshir. Do‘sting hali Tinglada bo‘lmasa, unga havolani yubor.

    No search results

    Points to the link, which reaches friends not on Tingla.

  • Bu taklif endi amal qilmaydi

    Muddati tugagan yoki bekor qilingan. Do‘stingdan yangi havola so‘ra.

    Invitation expired or invalid

    One calm way back to the leaderboard.

  • Sen allaqachon shu ligadasan

    “Kitobxonlar” ligasida 9-o‘rindasan.

    Already in the league

    Opens the league instead of showing an error.

  • Liga to‘lgan

    Bu ligada a’zolar soni chegaraga yetgan. Joy bo‘shaganda qayta urinib ko‘r yoki o‘z ligangni yarat.

    League is full

    No invented number, an alternative instead.

  • Reyting

    Reytingni yuklab bo‘lmadi

    Aloqani tekshirib, qayta urinib ko‘r.

    Network error

    The same pattern everywhere, with one retry.

Loading, refresh and confirmations

Feedback for every wait, and confirmation only where an action cannot be undone.

  • Reyting

    Yuklanmoqda

    Loading

    Skeletons match the final layout, so nothing jumps.

  • Reyting

    Yangilanmoqda…
    1. 1-o‘rin, Dilnoza Rahimova, 48 kunlik zarba
    2. 2-o‘rin, Jasur Toshmatov, 36 kunlik zarba
    3. 3-o‘rin, Madina Yusupova, 29 kunlik zarba
    1. 4-o‘rin, Sardor Aliyev, 23 kunlik zarba
    2. 5-o‘rin, Nilufar Karimova, 17 kunlik zarba
    3. 6-o‘rin, Bekzod Ergashev, 14 kunlik zarba
    4. 6-o‘rin, Shahzoda Nurmatova, 14 kunlik zarba
    5. 8-o‘rin, Otabek Qodirov, 11 kunlik zarba
    6. 9-o‘rin, Aziz Karimov, 9 kunlik zarba
    7. 10-o‘rin, Kamola Saidova, 6 kunlik zarba
    8. 11-o‘rin, Javohir Hasanov, 2 kunlik zarba

    Teng zarbalar bir xil o‘rinda turadi

    Reyting har kuni zarbalar bo‘yicha yangilanadi. Bugun ham tinglab, zarbangni uzaytir.

    Refreshing

    Pull down to refresh, with a short confirmation after.

  • Liga sozlamalari

    Kitobxonlar

    11 a’zoYopiq liga

    Asosiy

    • KirishFaqat taklif orqali
    • AdminAziz Karimov (Sen)

    Taklif

    • Taklif havolasitingla.ai/l/KTB7Q2

    A’zolar · 11

    • Aziz KarimovSenAdmin@aziz.karimov9
    • Dilnoza Rahimova@dilnoza.r48
    • Jasur Toshmatov@jasur_t36
    • Madina Yusupova@madina.y29
    • Sardor Aliyev@sardor.reads23
    • Nilufar Karimova@nilufar.k17
    • Bekzod Ergashev@bekzod.e14
    • Shahzoda Nurmatova@shahzoda.n14
    • Otabek Qodirov@otabek.q11
    • Kamola Saidova@kamola.s6
    • Javohir Hasanov@javohir.h2

    Takliflar · 3

    • Rustam Ismoilov@rustam.iKutilmoqda
    • Malika Abdullayeva@malika.aKutilmoqda
    • Zarina Xolmatova@zarina.xRad etdi

    Liga a’zoligi umumiy zarbaga ta’sir qilmaydi.

    Ligadan chiqasanmi?

    “Kitobxonlar” reytingini endi ko‘rmaysan. Umumiy zarbang saqlanib qoladi. Qaytish uchun yangi taklif kerak bo‘ladi.

    Adminlik Dilnozaga o‘tadi.

    Leaving the league

    One confirmation that spells out the consequences.

  • Liga sozlamalari

    Kitobxonlar

    11 a’zoYopiq liga

    Asosiy

    • KirishFaqat taklif orqali
    • AdminAziz Karimov (Sen)

    Taklif

    • Taklif havolasitingla.ai/l/KTB7Q2

    A’zolar · 11

    • Aziz KarimovSenAdmin@aziz.karimov9
    • Dilnoza Rahimova@dilnoza.r48
    • Jasur Toshmatov@jasur_t36
    • Madina Yusupova@madina.y29
    • Sardor Aliyev@sardor.reads23
    • Nilufar Karimova@nilufar.k17
    • Bekzod Ergashev@bekzod.e14
    • Shahzoda Nurmatova@shahzoda.n14
    • Otabek Qodirov@otabek.q11
    • Kamola Saidova@kamola.s6
    • Javohir Hasanov@javohir.h2

    Takliflar · 3

    • Rustam Ismoilov@rustam.iKutilmoqda
    • Malika Abdullayeva@malika.aKutilmoqda
    • Zarina Xolmatova@zarina.xRad etdi

    Liga a’zoligi umumiy zarbaga ta’sir qilmaydi.

    Otabekni chiqarasanmi?

    U bu liga reytingini boshqa ko‘rmaydi. Uning umumiy zarbasi saqlanib qoladi.

    Removing a member

    Admin only. The removed person keeps their streak.

  • Liga sozlamalari

    Kitobxonlar

    11 a’zoYopiq liga

    Asosiy

    • KirishFaqat taklif orqali
    • AdminAziz Karimov (Sen)

    Taklif

    • Taklif havolasitingla.ai/l/KTB7Q2

    A’zolar · 11

    • Aziz KarimovSenAdmin@aziz.karimov9
    • Dilnoza Rahimova@dilnoza.r48
    • Jasur Toshmatov@jasur_t36
    • Madina Yusupova@madina.y29
    • Sardor Aliyev@sardor.reads23
    • Nilufar Karimova@nilufar.k17
    • Bekzod Ergashev@bekzod.e14
    • Shahzoda Nurmatova@shahzoda.n14
    • Otabek Qodirov@otabek.q11
    • Kamola Saidova@kamola.s6
    • Javohir Hasanov@javohir.h2

    Takliflar · 3

    • Rustam Ismoilov@rustam.iKutilmoqda
    • Malika Abdullayeva@malika.aKutilmoqda
    • Zarina Xolmatova@zarina.xRad etdi

    Liga a’zoligi umumiy zarbaga ta’sir qilmaydi.

    Members without a photo

    Initials on a soft tint, never a broken image.

  • Reyting

    Senga taklif bor

    Dilnoza Rahimova seni “Ertalabki tinglovchilar” ligasiga taklif qildi

    Do‘stlaring bilan raqobatlash

    Shaxsiy liga yarat va do‘stlaringni taklif qil. Har kim o‘z zarbasi bilan reytingda joy oladi.

    • Faqat taklif qilinganlar ko‘ra oladi
    • Reyting zarbalar asosida tuziladi
    • Umumiy zarbang o‘zgarmaydi

    Invitation notification

    Tap to open the invitation from anywhere.

Sheets

Secondary tasks open in place and close with the close button, a tap outside or Escape.

  • Reyting

    1. 1-o‘rin, Dilnoza Rahimova, 48 kunlik zarba
    2. 2-o‘rin, Jasur Toshmatov, 36 kunlik zarba
    3. 3-o‘rin, Madina Yusupova, 29 kunlik zarba
    1. 4-o‘rin, Sardor Aliyev, 23 kunlik zarba
    2. 5-o‘rin, Nilufar Karimova, 17 kunlik zarba
    3. 6-o‘rin, Bekzod Ergashev, 14 kunlik zarba
    4. 6-o‘rin, Shahzoda Nurmatova, 14 kunlik zarba
    5. 8-o‘rin, Otabek Qodirov, 11 kunlik zarba
    6. 9-o‘rin, Aziz Karimov, 9 kunlik zarba
    7. 10-o‘rin, Kamola Saidova, 6 kunlik zarba
    8. 11-o‘rin, Javohir Hasanov, 2 kunlik zarba

    Teng zarbalar bir xil o‘rinda turadi

    Reyting har kuni zarbalar bo‘yicha yangilanadi. Bugun ham tinglab, zarbangni uzaytir.

    League switcher

    All your leagues, your rank in each, and room for more.

  • Reyting

    Senga taklif bor

    Dilnoza Rahimova seni “Ertalabki tinglovchilar” ligasiga taklif qildi

    Do‘stlaring bilan raqobatlash

    Shaxsiy liga yarat va do‘stlaringni taklif qil. Har kim o‘z zarbasi bilan reytingda joy oladi.

    • Faqat taklif qilinganlar ko‘ra oladi
    • Reyting zarbalar asosida tuziladi
    • Umumiy zarbang o‘zgarmaydi

    Join with an invitation

    Invitations you received and a field to paste a link.

  • Do‘stlarni taklif qilish

    “Kitob klubi” ligasi

    Taklif havolasi

    Havola orqali istalgan do‘sting qo‘shila oladi, u hali Tinglada bo‘lmasa ham.

    tingla.ai/l/KLB5R3

    yoki Tinglada qidir

    Do‘stingni ismi yoki foydalanuvchi nomi orqali top

    Share the link

    A ready-made message in Uzbek for any messenger.

  • Liga sozlamalari

    Kitobxonlar

    11 a’zoYopiq liga

    Asosiy

    • KirishFaqat taklif orqali
    • AdminAziz Karimov (Sen)

    Taklif

    • Taklif havolasitingla.ai/l/KTB7Q2

    A’zolar · 11

    • Aziz KarimovSenAdmin@aziz.karimov9
    • Dilnoza Rahimova@dilnoza.r48
    • Jasur Toshmatov@jasur_t36
    • Madina Yusupova@madina.y29
    • Sardor Aliyev@sardor.reads23
    • Nilufar Karimova@nilufar.k17
    • Bekzod Ergashev@bekzod.e14
    • Shahzoda Nurmatova@shahzoda.n14
    • Otabek Qodirov@otabek.q11
    • Kamola Saidova@kamola.s6
    • Javohir Hasanov@javohir.h2

    Takliflar · 3

    • Rustam Ismoilov@rustam.iKutilmoqda
    • Malika Abdullayeva@malika.aKutilmoqda
    • Zarina Xolmatova@zarina.xRad etdi

    Liga a’zoligi umumiy zarbaga ta’sir qilmaydi.

    Rename the league

    Same rules as creating, saved with one tap.

Uzbek UI copy

Every word on every screen

197 strings across 15 groups, each with its English meaning. The prototype reads from this exact deck, so what you see here is what the screens say.

Short, verb first

One idea per sentence. Buttons say exactly what happens: Liga yaratish, Taklif yuborish, Ligaga qo‘shilish.

Never shaming

No “last place”, no red for low ranks, and nobody is ever told that a friend declined.

Typographically correct

o‘ and g‘ use ‘, the tutuq belgisi uses ’, quotes are “ ”, and thousands are grouped with a space: 1 248.

Register: sen or siz

The brief's headline uses the informal sen. Tingla's current screens use siz. Both are written; the product team picks one.

Screens

Friends empty stateScreen 2

7 strings · showing sen
ElementUzbekEnglish meaning
HeadlineDo‘stlaring bilan raqobatlashsiz Do‘stlaringiz bilan raqobatlashingCompete with your friends
Supporting textShaxsiy liga yarat va do‘stlaringni taklif qil. Har kim o‘z zarbasi bilan reytingda joy oladi.siz Shaxsiy liga yarating va do‘stlaringizni taklif qiling. Har kim o‘z zarbasi bilan reytingda joy oladi.Create a private league and invite your friends. Everyone is ranked by their own streak.
Benefit 1Faqat taklif qilinganlar ko‘ra oladiOnly invited people can see it
Benefit 2Reyting zarbalar asosida tuziladiThe ranking is based on streaks
Benefit 3Umumiy zarbang o‘zgarmaydisiz Umumiy zarbangiz o‘zgarmaydiYour overall streak stays the same
Primary CTALiga yaratishCreate a league
Secondary actionTaklif orqali qo‘shilishJoin with an invitation

Product rules

What is decided, and what still needs a decision

The brief's rules are built in as stated. Everything the brief left open is handled in the prototype by a clearly labelled assumption, never by an invented final limit.

Confirmed in the brief

  • A league is private by default and only members can see its ranking.
  • People become members only after accepting an invitation.
  • The person who creates a league is its first admin.
  • Ranking uses the existing global streak rules, unchanged.
  • Leaving a league never deletes or resets the global streak.
  • One person can belong to more than one league.
  • Invitation and membership statuses are always visible and named.

Invitation statuses

  • KutilmoqdaPending. Sent and not answered yet. The invitee can still accept or decline.
  • Qabul qildiAccepted. The person is a member and appears in the ranking.
  • Rad etdiDeclined. Shown quietly in the inviter's list. Nobody gets a notification about it.
  • A’zoMember. Shown in search results so nobody is invited twice.
  • Muddati o‘tganExpired. Only the invitee meets it, as a calm screen with a way back.
Roles and permissions
ActionAdminMember
See the league rankingAllowedAllowed
Invite friends and share the linkAssumptionAllowedAllowed
Track the invitations they sentAllowedAllowed
See every invitation in the leagueAllowedNot allowed
Rename the leagueAllowedNot allowed
Remove membersAllowedNot allowed
Leave the leagueAllowedAllowed

Assumptions for product to confirm

12 open decisions, none blocking the design
  • 01Member limit per leagueIn the prototypeA League full state exists, with no number shown.WhyA cap keeps one ranking readable; the number depends on research and backend limits.
  • 02Leagues per personIn the prototypeSeveral leagues, switched from the league name.WhyFriends, family and work groups are different circles. A cap may still be needed.
  • 03Invitation expiryIn the prototypeAn expired state exists, with no duration shown.WhyLinks can travel far; they should not stay valid forever.
  • 04TiesIn the prototypeEqual streaks share a rank and are listed alphabetically.WhyFair and easy to explain. The alternative is who reached the streak first.
  • 05When the admin leavesIn the prototypeAdmin passes to the longest-standing member. If nobody is left, the league is deleted.WhyNo orphaned leagues and no extra decision for the person leaving.
  • 06Who can inviteIn the prototypeEvery member can invite; only the admin renames and removes.WhyMore invitations grow leagues faster, while removal stays with one accountable person.
  • 07Inviting again after a declineIn the prototypeBlocked in search, with the Rad etdi status shown.WhyAvoids repeated pressure on the same person.
  • 08League nameIn the prototype3 to 30 characters, spaces trimmed. Long names truncate in headers.WhyLong enough to be personal, short enough for list rows.
  • 09Postponed invitationsIn the prototypeHozir emas keeps the invitation in the Friends tab until answered.WhyNot now should never mean lost. Expiry still applies.
  • 10Who can be found in searchIn the prototypeAny Tingla user by name or username.WhyA setting to opt out of search may be required for privacy.
  • 11Removed membersIn the prototypeNeed a new invitation to come back.WhyRemoval should hold, without a permanent block list in the MVP.
  • 12Ranking freshnessIn the prototypeShows the same streak value as Global, refreshed on open and on pull.WhyNo new scoring and no new backend logic.

Key UX decisions

Twelve decisions behind the design

Each one trades a little feature surface for clarity, so creating a league, inviting friends and coming back tomorrow all stay effortless.

  1. A tab, not a new place

    Friends sits beside Global on the screen people already open. Nothing new to find in navigation, and the Global experience stays exactly as it is.

  2. One scoring rule

    Leagues rank by the same current streak as Global. No points to explain, no new backend logic, and the two boards can never disagree.

  3. Two steps to a live league

    Name it, then invite. The league exists after the first step, so skipping invitations with Keyinroq never throws work away.

  4. Link first, contacts never

    The link works in Telegram or any messenger, before install and through sign-up. Search covers friends already on Tingla. No permission prompt, ever.

  5. You are always findable

    When your row scrolls away, a copy pins to that edge of the screen. One tap brings the real row back into view.

  6. Encouraging at every rank

    Low ranks stay neutral, ties share a rank, a zero streak is grey rather than red, and declines are never announced. The copy talks about your streak, not your position.

  7. Gentle emphasis for the top three

    Medal rings, a small crown and soft pedestals reward the leaders without turning the list into a scoreboard.

  8. Not now does not mean no

    Hozir emas keeps the invitation in the Friends tab. Declining is a separate, deliberate tap, and it comes with an undo.

  9. Confirm only what cannot be undone

    Leaving and removing a member ask once, with the consequences spelled out. Renaming, inviting and declining never interrupt.

  10. Privacy said where it matters

    Private is the default, explained on the create screen and repeated on the invitation instead of hiding in settings.

  11. Accessible by construction

    AA contrast for all text, 44 point touch targets, rank never shown by color alone, and every ranking row read aloud as one clear sentence.

  12. Feels like Tingla

    White surfaces, one orange, warm neutrals and rounded cards. Soft 3D appears only where it explains something: the empty state and state icons.

After the MVP

Room to grow, kept out of version one

The structure leaves space for these without redesigning anything: each one adds to the league screen rather than changing it.

  • Post-MVP

    Weekly competitions

    Seasons that reset every week give people with short streaks a fresh chance to lead.

    Needs the MVP's retention signal first.

  • Post-MVP

    Rewards

    Badges or trophies for league winners and streak milestones, shown on profiles.

    Needs a rewards inventory and moderation rules.

  • Post-MVP

    Reactions and nudges

    A quick cheer, or a gentle nudge when a friend's streak is at risk, with strict frequency caps.

    Needs a notification budget per person.

  • Post-MVP

    Advanced statistics

    Streak history, best streak and listening time, compared within the league.

    Needs historical streak data per day.