Updated Oct 08, 2025

Step-by-Step Guide: Building a Nike Run Club Clone with Adalo

Table of Contents
Text Link

This comprehensive tutorial walks you through building a fitness tracking app inspired by Nike Run Club using Adalo's no-code platform. You'll create a working app with GPS tracking, workout logging, social features, achievement badges, and community challenges—all without writing a single line of code.

Prerequisites and Initial Setup

Step 1: Create Your Adalo Account and App

  1. Visit Adalo.com and sign up for a free account
  2. Click "Create New App" from your dashboard
  3. Select "Mobile App" (optimized for fitness tracking on-the-go)
  4. Name your app (e.g., "RunTracker" or "FitPulse")
  5. Choose "Start from Scratch" to build custom functionality

Step 2: Configure Your App Theme

  1. Select a primary brand color (bold, energetic tones work well)
  2. Choose a secondary color for call-to-action buttons
  3. Pick a clean, modern sans-serif font for readability during workouts
  4. Enable dark mode option for nighttime running
  5. Click "Continue" to enter the app builder

Step 3: Set Up Platform Settings

  1. Navigate to Settings in the left sidebar
  2. Under App Settings, configure:
    • App Name and Icon
    • Splash Screen (motivational image)
    • Status Bar Style
  3. Enable Location Services (critical for GPS tracking)
  4. Set initial screen to "Welcome"

Building the Database Structure

Step 4: Enhance the Users Collection

  1. Click the Database icon in the left sidebar
  2. Select the pre-existing "Users" collection
  3. Add these properties (click "+ Add Property" for each):
    • Full Name (Text)
    • Profile Photo (Image)
    • Username (Text – Unique)
    • Bio (Text – Multiline)
    • Weight (Number – for calorie calculations)
    • Height (Number)
    • Preferred Unit (Text – Values: "Miles", "Kilometers")
    • Total Distance (Number – running total)
    • Total Runs (Number)
    • Total Duration (Number – in minutes)
    • Member Since (Date – Automatic on signup)
    • Current Streak (Number – consecutive days)
    • Longest Streak (Number)
    • Privacy Setting (Text – Values: "Public", "Friends Only", "Private")

Learn about databases

Step 5: Create the Runs Collection

  1. Click "+ Add Collection"
  2. Name it "Runs"
  3. Add these properties:
    • Run ID (Text – Auto-Generated)
    • Distance (Number – in user's preferred units)
    • Duration (Number – in seconds)
    • Start Time (Date & Time)
    • End Time (Date & Time)
    • Average Pace (Number – minutes per mile/km)
    • Calories Burned (Number – calculated with unit-aware formulas)
    • Elevation Gain (Number)
    • Route Data (Text – JSON string of coordinates)
    • Start Location (Location)
    • End Location (Location)
    • Weather Conditions (Text)
    • Temperature (Number)
    • Run Type (Text – Values: "Easy Run", "Long Run", "Speed Work", "Recovery", "Race")
    • Notes (Text – Multiline)
    • Feeling (Text – Values: "Great", "Good", "Okay", "Tired", "Difficult")
    • Public/Private (True/False)

Step 6: Create the Routes Collection

  1. Click "+ Add Collection"
  2. Name it "Routes"
  3. Add properties:
    • Route Name (Text)
    • Description (Text – Multiline)
    • Distance (Number)
    • Coordinates (Text – JSON array of lat/long points)
    • Start Point (Location)
    • End Point (Location)
    • Difficulty (Text – Values: "Easy", "Moderate", "Hard")
    • Surface Type (Text – Values: "Road", "Trail", "Track", "Mixed")
    • Route Photo (Image)
    • Times Run (Number)
    • Average Rating (Number)
    • Is Favorite (True/False)

Step 7: Create the Achievements Collection

  1. Click "+ Add Collection"
  2. Name it "Achievements"
  3. Add properties:
    • Achievement Name (Text)
    • Description (Text)
    • Badge Icon (Image)
    • Criteria Type (Text – Values: "Distance", "Runs", "Streak", "Speed", "Special")
    • Criteria Value (Number)
    • Points (Number)
    • Date Earned (Date & Time)
    • Is Unlocked (True/False)

Step 8: Create the Challenges Collection

  1. Click "+ Add Collection"
  2. Name it "Challenges"
  3. Add properties:
    • Challenge Name (Text)
    • Description (Text – Multiline)
    • Challenge Type (Text – Values: "Distance", "Duration", "Frequency")
    • Goal Value (Number)
    • Start Date (Date)
    • End Date (Date)
    • Current Progress (Number)
    • Is Active (True/False)
    • Is Completed (True/False)
    • Reward Badge (Image)

Step 9: Create the Social Feed Collection

  1. Click "+ Add Collection"
  2. Name it "Posts"
  3. Add properties:
    • Post Type (Text – Values: "Run Complete", "Achievement", "Photo", "Text")
    • Caption (Text – Multiline)
    • Image (Image)
    • Likes Count (Number)
    • Comments Count (Number)
    • Created Date (Date & Time – Automatic)
    • Is Pinned (True/False)

Step 10: Create the Comments Collection

  1. Click "+ Add Collection"
  2. Name it "Comments"
  3. Add properties:
    • Comment Text (Text – Multiline)
    • Created Date (Date & Time – Automatic)
    • Likes (Number)

Step 11: Create the Friendships Collection

  1. Click "+ Add Collection"
  2. Name it "Friendships"
  3. Add properties:
    • Status (Text – Values: "Pending", "Accepted", "Blocked")
    • Created Date (Date & Time – Automatic)
    • Accepted Date (Date & Time)

Step 12: Set Up Database Relationships

  1. In Runs collection:

  • Add relationship to Users: "Runner" (A User can have many Runs)
  • Add relationship to Routes: Many-to-One (optional saved route)
  • Add relationship to Posts: One-to-One (auto-shared run)

  1. In Routes collection:

  • Add relationship to Users: "Creator" (Many-to-One)
  • Add relationship to Runs: One-to-Many

  1. In Achievements collection:

  • Add relationship to Users: Many-to-Many (users can have many achievements)

  1. In Challenges collection:

  • Add relationship to Users: Many-to-Many (participants)

  1. In Posts collection:

  • Add relationship to Users: "Author" (Many-to-One)
  • Add relationship to Runs: One-to-One (if run post)
  • Add relationship to Users: "Likers" (Many-to-Many)
  • Add relationship to Comments: One-to-Many

  1. In Comments collection:

  • Add relationship to Posts: Many-to-One
  • Add relationship to Users: "Commenter" (Many-to-One)

  1. In Friendships collection:

  • Add relationship to Users: "Requester" (Many-to-One)
  • Add relationship to Users: "Recipient" (Many-to-One)

Installing Required Components

Step 13: Install Maps and Location Components

  1. Navigate to the Adalo Marketplace
  2. Install:
    • Maps Component (for route visualization)
    • Timer (to time the run and trigger periodic location saves)
  3. Google Maps API key for web maps:
    • Visit Google Cloud Console to create an API key
    • At minimum, enable Maps JavaScript API for web maps
    • Enable Geocoding only if you need address/place lookups and Distance Matrix only if you need travel distance/time estimates
    • Google Maps Platform includes a $200 monthly free credit; many small apps stay within the free tier
  4. In Adalo: paste your API key in Settings → Integrations

Step 14: Install Additional Components

  1. Return to Marketplace
  2. Install:
    • Chart/Graph (for statistics visualization)
    • Audio Player (for coaching cues)
    • Share (social sharing)

Explore marketplace

Creating User Authentication and Onboarding

Step 15: Build the Welcome Screen

  1. Rename the default screen to "Welcome"
  2. Add design elements: background image, logo, headline/subheading
  3. Add navigation buttons:
    • Sign Up → "Sign Up" screen
    • Login → "Login" screen
    • Continue as Guest → "Home" (view-only mode)

Step 16: Create Sign Up Screen

  1. Add screen "Sign Up"
  2. Form (Users): Email, Password, Confirm, Full Name
  3. Image Picker for Profile Photo (optional)
  4. Create Account → Sign Up, then navigate to "Welcome Survey"
  5. Login text link for existing users

Step 17: Build Welcome Survey Screen

  1. Add new screen → name it “Welcome Survey.”
  2. (Optional) Add static text “Step 1 of 3.”
  3. Form (Update → Logged In User):
  • Goals (Dropdown): Start Running, Get Faster, Run Further, Stay Active, Train for Event → save to Goal (Text)
  • Frequency (Dropdown): New to Running, 1–2 times/week, 3–4 times/week, 5+ times/week → save to Frequency (Text)
  • Weight (Number) → save to Weight (Number)
  • Height (Number) → save to Height (Number)
  1. Next → Link to Unit Preferences (ensure the form updates Logged In User before navigating)

Step 18: Create Unit Preferences Screen

  1. Add new screen“Unit Preferences.”
  2. (Optional) Text “Step 2 of 3.”
  3. Form (Update → Logged In User):
  • Preferred Units (Segmented Control): Miles / Kilometers → Preferred Unit
  • Default Run Privacy (Dropdown): Public / Friends Only / Private → Privacy Setting
  1. Next → Link to Enable Location; BackWelcome Survey

Step 19: Build Location Permission Screen

  1. Add new screen“Enable Location.” (Step 3 of 3)
  2. Explain why location is needed (GPS tracking).
  3. Enable Location → Request permission → On success, Link to Home.
  4. Skip for Now → Link to Home.

Building the Home Dashboard

Step 20: Create Main Home Screen

  1. Add new screen“Home.”
  2. Header Row:
  • User avatar (Logged In User → Profile Photo) → Link to Profile
  • “Hello, {First Name}” (use formula)
  • Current Date (Magic Text → formatted)
  1. Stats Cards:
  • This Week’s Distance: Sum of Runs.Distance where Runner = Logged In User and date is this week
  • Total Runs: Count of Runs where Runner = Logged In User
  • Current Streak: Logged In User → Current Streak
  1. Quick Start:
  • Start Run (primary) → Run Tracking
  • Choose Route (secondary) → Saved Routes
  1. Active Challenge Card (conditional):
  • Custom List: Challenges filtered where participants include Logged In User and Is Active = true
  • Show name, progress bar (Current Progress / Goal Value), days remaining
  • Click → Challenge Detail
  1. Recent Activity Feed:
  • Custom List: Posts filtered by your privacy/friend logic; sort newest first (limit 5–10)
  • Show author, summary, “time ago” → Click → Post Detail

Step 21: Build Bottom Navigation

  1. Add Tab Bar with 5 tabs:
  • Home → Home
  • Activity → My Runs
  • Start → Run Tracking
  • Challenges → Challenges
  • Profile → Profile
  1. Set active/inactive colors to match your theme.

Creating the Run Tracking Experience

Step 22: Build Pre-Run Screen

Run Tracking screen → full-screen map centered on current location; selectors for run type/route; audio coach toggle; Start Run.

Step 23: Create Active Run Screen

Map + stats panel. Use Current Device Location (Magic Text) + Timer to save coordinates periodically (e.g., every 5–10 seconds) while the app is open. Controls: Pause, End.

Step 24: Build Paused Run Screen

Duplicate Active Run → show paused state with Resume, End, Discard.

Step 25: Create Run Summary Screen

Create Run and populate: distance, duration, start/end times, route, pace, elevation.
Calories Burned (unit-aware):

  • If kilometers & kilograms: Distance_km × Weight_kg × 1.0
  • If miles & pounds: Distance_mi × Weight_lb × 0.63
    Add summary cards, editable fields (run type, feeling, notes, photo, privacy). Save Run updates user totals, checks achievements, posts if public.

Step 26: Build Run Saved Confirmation

Success screen with new achievements (if any) and quick actions (view full summary / back to home).

Building Run History and Analytics

Step 27: Create My Runs Screen

  1. New screen“My Runs.”
  2. Filters: Segmented Control (All / This Week / This Month / This Year) → save to FilterPeriod; Dropdown for Sort (Date, Distance, Duration, Pace) → SortBy.
  3. Summary Row: Total Distance, Total Runs, Avg Pace for the selected period.
  4. Custom List: Runs filtered by Runner = Logged In User + FilterPeriod; sort by SortBy.
    Show map thumbnail, date/time, distance, duration, pace, run type, feeling → tap to Run Detail.

Step 28: Build Run Detail Screen

Header with date/time, Edit, Delete; large map; stats grid (distance/duration/avg pace/calories/elevation/weather/temp/feeling/run type); pace chart (optional); notes; social stats; share.

Step 29: Create Statistics Screen

Tabs: Week / Month / Year / All Time → StatsPeriod.
Metric cards (total distance, total runs, total time, longest run, fastest pace, streaks).
Distance chart (bar), pace trend (line), activity heatmap (optional).
Analytics guide

Implementing Achievements and Gamification

Step 30: Build Achievements Screen

Progress overview (badges, points, next milestone); tabs (All, Distance, Frequency, Streaks, Speed, Special); grid of cards (locked/unlocked states with progress/date).

Step 31: Create Achievement Logic

Add Custom Action “Check Achievements” on run save:

  • Distance milestones (5K, 10K, Half, Marathon totals)
  • Run count (10/50/100/500)
  • Streaks (7/30/100 days)
  • Speed (sub-6 min mile / sub-5 min km)
  • Special (night run, early bird, weekend warrior)
    On unlock: create achievement record, update points, create post, show celebration.

Step 32: Build Challenges Screen

  1. Add new screen“Challenges.”
  2. Tabs: Active / Available / Completed → save to ChallengeTab.
  3. Custom List: Challenges
  • Filters:
    • Active: Start Date ≤ now AND End Date ≥ now AND participants include Logged In User
    • Available: participants do not include Logged In User (and optionally Start Date ≥ now)
    • Completed: (End Date < now OR user met goal) AND participants include Logged In User
  • Sort: Active by End Date asc; Available by Start Date asc; Completed by End Date desc
  1. Card Layout: Name, short description, type + goal, progress bar (per-user computed from Runs between Start/End), “Ends {date}”.
  2. Actions:
  • Join Challenge (Available): add Logged In User to participants → toast → refresh → switch tab to Active
  • View Details (Active/Completed): link to Challenge Detail (send record)
  1. Empty States: Friendly messages for each tab.

Step 33: Create Challenge Detail Screen

  1. New screen“Challenge Detail.” (expects Challenge)
  2. Header: Reward badge image, name, description, type/goal, date range.
  3. Progress (per-user):
  • Distance: sum of Runs.Distance within challenge dates
  • Duration: sum of Runs.Duration (seconds) within dates
  • Frequency: count of Runs within dates
  • Show Progress Ring + “{Current} / {Goal}”
  1. Leaderboard (optional): list participants with computed score; sort desc; show rank/avatar/name/score.
  2. Buttons (conditional):
  • Join (if not participant and before start) → add to participants
  • Share Progress → share sheet
  • Leave Challenge (optional) → remove from participants
  1. Tip Block: Clarify only runs within challenge dates count.

Creating Social Features

Step 34: Build Activity Feed Screen

  1. New screen“Activity Feed.”
  2. Tabs: Following / Friends / Everyone → FeedScope.
  3. Custom List: Posts
  • Filter by scope & privacy (e.g., Following = authors you follow; Friends = accepted friendships; Everyone = public posts)
  • Sort: newest first
  • Item layouts:
    • Run post: map thumbnail + stats
    • Achievement: badge + text
    • Photo: image + caption
    • Text: body
  • Actions: Like (toggle in Likers + update Likes Count), Comment (to Post Detail), Share.

Step 35: Create Post Detail Screen

  1. Expects Post.
  2. Header: author (photo/name), time ago.
  3. Body: render by type (map + stats / badge / image / text).
  4. Like: toggle Likers + update count.
  5. Comments: list of Comments for this post (oldest→newest).
  6. Composer: text input + Send → create comment (set commenter & post) + increment count.

Step 36: Build User Profile Screen

Header (photo, full name, username, bio, Edit Profile).
Stats (total runs, total distance, followers/following if implemented).
Achievements showcase (horizontal list → view all).
Activity grid/list toggle (filter all vs. public).
Actions: Settings, Statistics.

Step 37: Create Other User Profile Screen

Public-only view; friend status (Add / Pending / Friends), public runs/posts, optional message button; respect privacy settings.

Step 38: Build Friends Screen

Tabs for Friends / Requests / Find Friends.

  • Friends: list accepted friendships; search; tap to profile.
  • Requests: list pending; accept/decline.
  • Find Friends: search by username/name; suggested users; add friend buttons.

Building Routes and Navigation

Step 39: Create Saved Routes Screen

Filters (My Routes / Community Routes / Nearby).
Custom list of Routes with map preview, name, distance, difficulty, surface, times run, avg rating; favorite toggle; Create Route button.

Step 40: Build Route Detail Screen

Large map with full route; info (distance/est. time, difficulty/surface, elevation if available, creator); stats (your times run, PB, community stats); actions (Start This Route, Save to Favorites, Share, Report Issue).

Step 41: Create Route Creator Screen

Goal: Let users build a route by sampling current GPS or manually adding points, then save a Routes record with a JSON array of coordinates.

A. (Optional) Draft Points Collection
Create Route Points (Draft) with Latitude (Number), Longitude (Number), Order (Number), Owner → Users, Created At.

B. Screen & Map
New screen “Create Route.” Add Maps centered on current location.
Markers bound to Route Points (Draft) filtered by Owner = Logged In User (ordered by Order). (If supported, draw polyline.)

C. Controls

  • Add Current Point: Create Route Points (Draft) with current lat/lng and Order = max + 1.
  • Undo: Delete latest draft point.
  • Clear: Delete all draft points for this owner.

D. Route Details Form
Name (required), Description, Difficulty, Surface Type, Photo.

E. Distance & Coordinates JSON

  • Ask user for distance or compute via a Custom Action (Haversine/third-party).
  • Build Coordinates JSON from ordered draft points:
    [{"lat": <Lat1>, "lng": <Lng1>}, {"lat": <Lat2>, "lng": <Lng2>}, ...] (via Custom Action or concatenation pattern).

F. Save Route (button)
Validate ≥ 2 points & name present → Create Routes with:

  • Route Name, Description, Difficulty, Surface Type, Route Photo, Creator = Logged In User
  • Distance = computed or manual
  • Coordinates = JSON string
  • Start Point = first point; End Point = last point
    Then delete all draft points for this owner and link to Route Detail (send record).

Adding Audio Coaching and Guidance

Step 42: Implement Audio Cues

Adalo doesn’t include a first-party TTS component. Add TTS via a third-party Marketplace component, an external service, or the Web Speech API (web).
Alternatively, pre-record audio cues for milestones/pace/finish and trigger based on distance/time/pace changes. Provide Audio Settings (enable, frequency, volume).

Implementing Privacy and Safety Features

Step 43: Build Privacy Settings

Default post privacy, profile visibility, activity sharing toggles (auto-share runs; show real-time location to friends; allow route saves), Location Privacy (blur start/end), blocked users list.
Privacy considerations

Step 44: Create Safety Features

Emergency contact; optional Beacon toggle (share location during runs while app is open); “Run with Others” (virtual group run with permissioned locations).

Building Settings and Preferences

Step 45: Create Settings Screen

Sections for Account, App Preferences (units, audio coach, theme), Privacy & Safety, Data & Storage (export runs), Support, Account Actions.

Step 46: Create Notifications Settings

Toggles for activity, challenges, achievements, social, motivational notifications.

Testing Your App

Step 47: Create Test Data

Seed multiple users, diverse runs/routes, friendships, and challenges.

Step 48: Test Core User Flows

Onboarding → run recording (start/pause/resume/end) → social interactions → achievements → privacy controls.

Step 49: Test Across Devices

Use Adalo preview apps on iOS/Android; test GPS behavior with the app open, notifications, offline, and web responsiveness. Background/continuous tracking is limited compared to custom native builds.

Step 50: Performance Testing

Larger datasets (100+ runs, 50+ friends), load times, map rendering, list filtering, long runs, poor GPS, network drops. Optimize lists, images, and queries.

Preparing for Launch

Step 51: Set Up Production Integrations

Google Maps API: switch to production key, set quotas/alerts, enable only the APIs you use (Maps JS required for web; Geocoding/Distance Matrix optional).
Analytics: track signups, runs, achievements, social interactions.
Push: configure iOS/Android and test delivery.

Step 52: Create App Store Assets

iOS App Store:

  • Provide required 6.7-inch (e.g., 1290 × 2796) and 5.5-inch (1242 × 2208) screenshots; add iPad if applicable
  • App icon (1024 × 1024), optional preview videos, description/keywords, privacy policy URL, support URL
  • Always verify Apple’s current specs before submission

Google Play:

  • PNG/JPG between 320 px and 3840 px, aspect ratio 1:2 to 2:1
  • Provide at least 3 phone screenshots; add tablet screenshots if optimized
  • Feature graphic (1024 × 500), app icon (512 × 512), promo video (optional), descriptions, content rating

Step 53: Prepare Legal Requirements

Privacy Policy (data usage, GPS, third parties), Terms of Service, links in Settings/sign-up/web footer.

Step 54: Publishing to App Stores

  • iOS: Apple Developer ($99/year). In Adalo, Publish → iOS, complete info, upload certs, build and submit via App Store Connect.
  • Android: Google Play Developer ($25 one-time). In Adalo, Publish → Android, build AAB and upload via Play Console.
  • Web: Publish → Web App, choose domain or custom domain (paid plan), DNS + SSL.

Review times vary; plan for several days and potential iterations.

Publishing overview

Post-Launch Optimization

Step 55: Monitor Key Metrics

Acquisition (signups, onboarding completion), engagement (DAU/MAU, runs per week), retention (D1/D7/D30), social (connections, posts, engagement), technical (crashes, GPS issues, load times, API usage).

Step 56: Gather User Feedback

In-app forms, store reviews, analytics review, user interviews.

Step 57: Iterate and Improve

Performance (queries, images, pagination), features (training plans, HR, music, weather, intervals), social (group challenges, virtual races, clubs, messaging), personalization (dashboard, goals, coaching tips).

Platform Limitations and Workarounds

GPS & Background Limits

  • Adalo can capture the current device location and save points on a timer while the app is open.
  • Continuous/background GPS when the app is closed or the screen is locked is limited; set expectations accordingly and keep users informed.

Maps & Routing

  • Use the Maps component to visualize routes from saved coordinates.
  • Turn-by-turn navigation, offline maps, or auto-routing require an external service called via Custom Actions.

Real-Time Social & Live Presence

  • There are no native sockets for live feeds. For “now running” presence or live leaderboards, use timer-based polling or connect an external real-time backend via Custom Actions/External Collections.

Performance at Scale

  • Keep lists lean, enable progressive loading, and avoid lists-within-lists.
  • For large datasets (many runs, posts, or friends), move data to External Collections and follow Optimize performance guidance.

Notifications

  • Push works for installed, logged-in users who have granted permissions.
  • Create triggers for new runs, comments, challenges, and streak reminders.

Cost Breakdown and Resources

Adalo Subscription

  • Verify current plan features/limits (publishing, integrations, seats) on the live pricing page.

App Stores

  • Apple Developer: $99/year.
  • Google Play Developer: $25 one-time.

Maps Usage

  • Google Maps Platform includes a $200 monthly free credit; many small apps stay within the free tier. Actual costs depend on usage.

Optional Monetization (Payments/Subscriptions)

  • Add payments or subscriptions with Adalo’s Stripe components. Pricing varies by country and payment method (manage status via Stripe webhooks/automations).

Ongoing Maintenance

  • Many teams budget ~15–25% annually of initial effort for maintenance, updates, and support.

Additional Resources

Note: This Nike Run Club–style build covers GPS run logging (while the app is open), workout history, achievements/challenges, and social sharing with Adalo’s native components plus light API integrations. For production-grade features like background tracking, turn-by-turn navigation, or live presence, connect external services via Custom Actions/External Collections, keep lists lean, and performance-test on real devices before publishing.

Start Building With An App Template
Build your app fast with one of our pre-made app templates
Try it now
Read This Next

Looking For More?

Ready to Get Started on Adalo?