Skip to content

kamalbuilds/leap

Repository files navigation

Leap

A goal-tracking mobile app designed for ambitious women who want to turn their dreams into actionable daily habits. Built by Gabby Beckford (Packs Light brand).

Project Overview

Leap empowers women to achieve their goals through daily micro-challenges, dream tracking, and gamification. The app helps users break down big dreams into manageable milestones while maintaining motivation through streaks, XP rewards, and achievement badges.

Key Features

  • Onboarding Flow - Personalized setup capturing user dreams, blockers, and notification preferences
  • Daily Challenges - Curated micro-challenges across categories (confidence, financial, career, travel, self-care)
  • Dream/Goal Tracking - Create and manage dreams with milestones across travel, financial, career, and bold-living categories
  • Gamification System - XP rewards, user levels (Dreamer > Doer > Trailblazer > Legend), streak tracking, and achievement badges
  • Progress Dashboard - Visual insights into completed challenges, dreams achieved, and overall progress
  • Win Logging - Record daily wins to celebrate achievements

Tech Stack

Technology Version Purpose
Expo SDK 54+ React Native framework
TypeScript 5.9+ Type safety
Expo Router v6 File-based routing
Zustand 5.0+ State management
MMKV 4.1+ High-performance local storage
NativeWind 4.2+ Tailwind CSS for React Native
React Native Reanimated 4.1+ Smooth animations
Supabase 2.91+ Backend services
RevenueCat 9.7+ In-app purchases
React Native Skia 2.2+ High-performance graphics

Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn
  • Expo CLI (npm install -g expo-cli)
  • iOS Simulator (macOS) or Android Emulator
  • Xcode (for iOS development on macOS)
  • EAS CLI (npm install -g eas-cli) for builds

Tesing Instructions

Installation

  1. Clone the repository:

    git clone <repository-url>
    cd leap
  2. Install dependencies:

    npm install
  3. Set up environment variables (see Configuration):

    cp .env.example .env
  4. Start the development server:

    npm start

Running the App

# Start Expo development server
npm start

# Run on iOS simulator
npm run ios

# Run on Android emulator
npm run android

# Run in web browser
npm run web

Project Structure

leap/
├── app/                      # Expo Router screens
│   ├── (auth)/              # Authentication flow
│   │   └── onboarding/      # Onboarding screens
│   │       ├── welcome.tsx
│   │       ├── dreams.tsx
│   │       ├── blockers.tsx
│   │       └── schedule.tsx
│   ├── (modals)/            # Modal screens
│   │   ├── add-dream.tsx
│   │   ├── add-win.tsx
│   │   └── celebration.tsx
│   ├── (tabs)/              # Main tab navigation
│   │   ├── home/           # Daily challenge screen
│   │   ├── dreams/         # Dream management
│   │   ├── progress/       # Progress dashboard
│   │   └── profile/        # User profile
│   ├── _layout.tsx          # Root layout
│   └── index.tsx            # Entry point
├── components/              # Reusable components
│   └── ui/                  # UI primitives
├── constants/               # App constants
│   └── Colors.ts
├── data/                    # Static data
│   └── challenges.ts        # Challenge definitions
├── lib/                     # Utilities
│   └── storage.ts           # MMKV/localStorage wrapper
├── stores/                  # Zustand state stores
│   ├── challengesStore.ts
│   ├── dreamsStore.ts
│   ├── preferencesStore.ts
│   ├── progressStore.ts
│   └── winsStore.ts
├── types/                   # TypeScript definitions
│   └── index.ts
├── assets/                  # Images, fonts, icons
│   ├── fonts/
│   └── images/
├── app.json                 # Expo configuration
├── tailwind.config.js       # Tailwind/NativeWind config
├── tsconfig.json            # TypeScript configuration
└── package.json

Features

Onboarding

The onboarding flow captures user preferences:

  • Welcome screen introducing the app
  • Dream category selection (travel, financial, career, bold-living)
  • Personal blocker identification
  • Notification schedule setup

Daily Challenges

  • Curated challenges across 5 categories
  • XP rewards for completion (typically 10-50 XP per challenge)
  • Streak tracking for consecutive days
  • Challenge history

Dream Management

  • Create dreams with titles, descriptions, and target dates
  • Organize by category
  • Break dreams into milestones
  • Track completion progress
  • Visual progress indicators

Gamification

User Levels:

  • Dreamer (0 XP)
  • Doer (500+ XP)
  • Trailblazer (2,000+ XP)
  • Legend (5,000+ XP)

Badges:

  • 7-Day Warrior - 7 consecutive days
  • Monthly Master - 30 consecutive days
  • Century Club - 100 consecutive days
  • Dream Starter - First dream added
  • Dream Achiever - First dream completed
  • Early Bird - Challenge completed before 8 AM
  • Night Owl - Challenge completed after 10 PM
  • Consistency Queen - 2 weeks of daily challenges

Progress Dashboard

  • Current and longest streak display
  • Total XP and level progress
  • Completed challenges count
  • Completed dreams count
  • Badge showcase

Configuration

Environment Variables

Create a .env file in the project root:

# Supabase Configuration
EXPO_PUBLIC_SUPABASE_URL=your_supabase_url
EXPO_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key

# RevenueCat Configuration
EXPO_PUBLIC_REVENUECAT_IOS_KEY=your_ios_api_key
EXPO_PUBLIC_REVENUECAT_ANDROID_KEY=your_android_api_key

Supabase Setup

  1. Create a new project at supabase.com
  2. Set up authentication providers as needed
  3. Create database tables for user data sync (optional for cloud backup)
  4. Copy the project URL and anon key to your .env file

RevenueCat Setup

  1. Create an account at revenuecat.com
  2. Create a new project
  3. Configure iOS and Android apps
  4. Set up products and entitlements
  5. Copy API keys to your .env file

Deployment

EAS Build

  1. Install EAS CLI:

    npm install -g eas-cli
  2. Login to Expo:

    eas login
  3. Configure the project:

    eas build:configure
  4. Build for development:

    # iOS development build
    eas build --profile development --platform ios
    
    # Android development build
    eas build --profile development --platform android
  5. Build for production:

    # iOS production build
    eas build --profile production --platform ios
    
    # Android production build
    eas build --profile production --platform android
  6. Submit to app stores:

    # Submit to App Store
    eas submit --platform ios
    
    # Submit to Google Play
    eas submit --platform android

EAS Configuration

Create an eas.json file if not present:

{
  "cli": {
    "version": ">= 5.0.0"
  },
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal"
    },
    "preview": {
      "distribution": "internal"
    },
    "production": {}
  },
  "submit": {
    "production": {}
  }
}

Contributing

  1. Fork the repository
  2. Create a feature branch:
    git checkout -b feature/your-feature-name
  3. Make your changes following the existing code style
  4. Ensure TypeScript types are properly defined
  5. Test on both iOS and Android if possible
  6. Commit your changes:
    git commit -m "Add: description of your changes"
  7. Push to your fork:
    git push origin feature/your-feature-name
  8. Open a Pull Request

Code Style Guidelines

  • Use TypeScript for all new files
  • Follow existing naming conventions
  • Use NativeWind for styling (Tailwind classes)
  • Keep components small and focused
  • Use Zustand stores for global state
  • Add proper TypeScript types in /types

License

MIT License

Copyright (c) 2025 Packs Light / Gabby Beckford

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

For testing use the link below

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors