Sports social app

Find your pace partner

A ten-screen sports social app for the China market: SMS login, location-based partner discovery, real-time chat, group activities, and a tracking engine that samples a position every five seconds while you are moving and every fifteen while you are not.

Mobile appLocation servicesChina market
YUJIA product screen

Sector

  • Sports and fitness
  • Social discovery

Product surface

  • 10 screens
  • 5 tab sections

What we did

  • Product modelling
  • UX and UI design
  • Design system
  • Front-end engineering

Location engine

  • 5 s moving / 15 s stationary
  • 0.5 m/s state threshold
The product

What is YUJIA for?

People give up on running, hiking and cycling far more often when they do it alone. YUJIA is the app that fixes that: find someone nearby at your level, agree a time, then track the session - with the location engine behaving correctly whether the phone is in a hand, a pocket or locked in an armband.

Discovery, conversation and the run itself, in one app

Discovery, conversation and the run itself, in one app

Five tab sections carry the whole product: partner discovery, group activities, live tracking, chat and the personal profile. Tracking sits in the middle of the tab bar because it is the part the product has to get right.

Partners sorted by distanceA mini-map plus distance-sorted cards, filtered live by sport and presence, so the nearest suitable partner is the first thing on screen rather than a search result.
Conversation with intentOne-to-one chat carries a typing indicator, location sharing and an activity-invite card, so a message turns into a booked session without leaving the thread.
A sampling engine you can watchThe tracking screen prints every location fix as it lands - state, interval, timestamp, accuracy, speed and coordinates - so the behaviour is observable rather than asserted.
The hard part

Why is the location layer the hard part of a sports app?

The risky work in a tracking app is not the screens. It is whether the phone keeps reporting a position at the right cadence when the app is in the background, the screen is locked, battery saver is on, and the handset is a Huawei or a Xiaomi with its own idea of what should keep running. That question decides the architecture, so we built the answer first.

Cadence has to adapt, not tickThe hard states are the invisible onesThe social half carries its own rules
Tracking behaviourWhat most apps exposeHow YUJIA handles it
Sampling while movingAn unstated intervalA fix every five seconds, timestamped in a visible log
Sampling while stationaryThe same interval, or nothingA fix every fifteen seconds, so a rest stop costs no battery
Switching between the twoHidden heuristicsA 0.5 m/s threshold, with the current state and interval on screen
Screen lockedTracking stops silentlyA lock-screen state designed for, with sampling continuing behind it
Fix qualityNot surfacedAccuracy, speed and coordinates printed for every fix
The routeDrawn after the runA polyline that grows fix by fix with a following camera
How we worked

How did we build it?

Three moves took a sports social app from a module list to a running product with the hardest part solved first.

Model the productBuild the location engineDesign the system around it
On the phone

What does the app actually do?

All ten screens, in the order a new member meets them - sign in, set up a profile, find someone, talk to them, join something, track it, and see what you did.

  • YUJIA phone screen showing +86 phone entry and a six-digit OTP field

    SMS login

    +86 number entry, six-digit OTP, resend countdown and SMS auto-fill.

  • YUJIA onboarding screen for sport interests and skill level

    Onboarding

    Sport interests, skill level and the location-permission disclosure China app review requires.

  • YUJIA nearby screen with a map and distance-sorted partner cards

    Nearby partners

    Location-based discovery: mini-map, distance-sorted cards, live sport and presence filters.

  • YUJIA partner profile screen showing stats and connect actions

    Partner profile

    Stats, why this partner was surfaced, and the two actions - message or invite.

  • YUJIA chat screen with a typing indicator and an activity invite card

    One-to-one chat

    Typing indicator, replies, an activity-invite card and location sharing in the thread.

  • YUJIA conversation list with unread badges and presence dots

    Conversations

    The inbox: unread badges, presence dots and search across threads.

  • YUJIA activities screen listing group workouts with hosts and routes

    Group activities

    Browse and join group workouts, with hosts, meeting spots, routes and pace expectations.

  • YUJIA tracking screen mid-run showing a MOVING chip and a live location log at 5 second intervals

    Live tracking

    State chip, adaptive interval, live fix log, growing route line and a 10x review speed.

  • YUJIA lock-screen state with tracking continuing in the background

    Lock screen

    The state most apps skip - the screen locked, and the sampling still running behind it.

  • YUJIA workout summary screen with route, pace and timeline

    Workout summary

    A recap built from the tracked data: route, pace, timeline and sampling compliance.

  • YUJIA profile screen with weekly stats, history and privacy controls

    My profile

    Weekly stats, workout history, privacy controls and the OEM battery-whitelist setup entry.

Transferable

What should any location-tracking app settle first?

Six decisions that determine whether a tracking app survives contact with real handsets. They came out of building this one, and none of them are about the screens.

  1. Make the cadence observable. A sampling rule written as prose cannot be reviewed. Print every fix with its state, interval, timestamp and accuracy and the argument ends.
  2. Design the background states on purpose. Lock screen, background and battery saver are where location apps fail, so they are product states with screens, not an afterthought.
  3. Plan for OEM battery management. On Chinese Android builds an unwhitelisted app is killed. Onboarding has to walk the user into the whitelist, which makes it a design problem, not an ops one.
  4. Pick the map and location provider up front. It shapes the SDK, the licensing, the coordinate system and the review paperwork - changing it later is not a swap, it is a rebuild.
  5. Treat the permission disclosure as a screen. App review in China expects location use to be explained where the user grants it, so it belongs in onboarding rather than a settings page.
  6. Build the risky sub-system first. The screens were never in doubt. Starting with the sampling engine is what turned a one-line requirement into a product decision everyone could see.
Visual language

Why does it look like this?

The design system is a dark "night trail" theme. Everything is near-black so a map and a route line can be the brightest things on screen; cobalt carries the route and anything tappable, and a single volt green is reserved for the one action that starts or stops a workout.

Aa

Primary typeface

Barlow Condensed

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

a b c d e f g h i j k l m n o p q r s t u v w x y z

0 1 2 3 4 5 6 7 8 9 & ? ! £ $ €

Barlow Condensed 700Screen titles and numbers
Barlow 600Buttons, tabs and labels
Barlow 400Body copy and card text
SF Mono 400Location log, timestamps, coordinates
34px0.12 kmMetric
24pxNEARBYScreen title
17pxPartner name and activity titleH3
15pxCard copy and chat messagesBody
13px06:31:30 MOVING 5s +-8.6m 1.4m/sLog
12pxLOCATION LOG - DISTANCE - PACEEyebrow

The palette is authored in OKLCH in the app's own token file and converted to hex here. Condensed display type earns back the width a phone does not have, and the location log is set in a monospace face so timestamps, accuracy and coordinates line up as columns and a five-second gap is visible without reading the numbers. Barlow and Barlow Condensed are open-licence typefaces; the specimen above falls back to the nearest available face if they are not installed on your device.

Under the hood

What is it built with?

A dependency-free front end, and the China-market service layer the app is designed around - the location, messaging and identity providers that a mainland Android release has to use.

FAQ

Building a sports or location app

What founders and product teams ask us before a location-heavy build starts.

Ask us yours
How long does it take to build a sports social app?

A first production version usually takes twelve to twenty weeks. The social half - profiles, discovery, chat, activities - is well-understood work. What sets the date is the location layer: background tracking, per-manufacturer battery behaviour and store review each need real device testing, which is why we build that part first.

How do you keep GPS tracking alive when the screen is locked?

On Android with a foreground service and a persistent notification, so the operating system treats tracking as user-visible work rather than background activity. On Chinese handsets that is not enough on its own - Huawei, Xiaomi, OPPO and Vivo add their own battery management, so the app walks the user into whitelisting it during onboarding.

Why sample every 5 seconds instead of continuously?

Because a fixed high-frequency stream flattens the battery on a long run and adds nothing to the route. Sampling every five seconds above 0.5 m/s keeps the polyline accurate at running and cycling speeds, and dropping to fifteen seconds when the user stops means a coffee break costs almost nothing.

Why AMap rather than Google Maps?

Google services are not available on mainland Chinese handsets, so an app for that market uses a domestic provider. AMap supplies the map tiles, the location services and the coordinate system expected there. It is a decision to make before development starts, because the SDK, licensing and review paperwork all follow from it.

What does app review in China expect from a location app?

That location use is explained where it is granted, not buried in a policy. YUJIA puts the disclosure inside onboarding, next to the sport and skill questions, and keeps privacy controls on the profile screen so a user can see and change what is shared at any point.

Building something location-heavy?

Tell us how your business actually works and we will tell you honestly what it takes to build. See more of our work or what we do.

Book a 15-minute call