Skip to content
/ POWR Public

Cross-platform fitness tracking app built with React Native and Expo. Features local-first architecture with planned Nostr protocol integration for decentralized social features.

Notifications You must be signed in to change notification settings

DocNR/POWR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5ff311b · Apr 7, 2025

History

81 Commits
Feb 11, 2025
Feb 10, 2025
Apr 1, 2025
Apr 7, 2025
Mar 29, 2025
Apr 7, 2025
Apr 6, 2025
Apr 4, 2025
Apr 7, 2025
Apr 7, 2025
Feb 10, 2025
Apr 7, 2025
Apr 3, 2025
Apr 1, 2025
Apr 7, 2025
Feb 10, 2025
Mar 6, 2025
Apr 1, 2025
Feb 10, 2025
Feb 10, 2025
Apr 1, 2025
Feb 12, 2025
Feb 6, 2025
Feb 10, 2025
Feb 6, 2025
Apr 4, 2025
Apr 4, 2025
Apr 1, 2025
Feb 6, 2025
Mar 6, 2025

Repository files navigation

POWR - Cross-Platform Fitness Tracking App

POWR is a local-first fitness tracking application built with React Native and Expo, featuring integration with the Nostr protocol for decentralized social features and improved control of your fitness data.

Features

Current

  • Exercise library management with local SQLite database
  • Workout template creation
  • Local-first data architecture with Nostr sync capability
  • Cross-platform support (iOS, Android)
  • Dark/light mode support
  • Nostr authentication and event publishing

Planned

  • Workout record and template sharing
  • Enhanced social features
  • Training programs
  • Performance analytics
  • Public/private workout sharing options

Getting Started

Prerequisites

  • Node.js (v18 or later)
  • npm or yarn
  • EAS CLI (npm install -g eas-cli)
  • iOS Simulator (for iOS development)
  • Android Studio (for Android development)

Installation

  1. Clone the repository
git clone https://github.com/docNR/powr.git
cd powr
  1. Install dependencies
npm install
  1. Install development client modules
npx expo install expo-dev-client expo-crypto expo-nip55

Development Using Expo Dev Client

POWR now uses Expo Dev Client for development instead of Expo Go. This allows us to use native modules required for Nostr integration.

  1. Configure EAS (if not already done)
eas build:configure
  1. Create a development build
# For Android
eas build --profile development --platform android

# For iOS
eas build --profile development --platform ios
  1. Start the development server with dev client
npx expo start --dev-client
  1. Install the build on your device and scan the QR code to connect

Project Structure

powr/
├── app/                 # Main application code
│   ├── (tabs)/          # Tab-based navigation
│   ├── (workout)/       # Workout screens
│   └── _layout.tsx      # Root layout
├── components/          # Shared components
│   ├── ui/              # UI components
│   ├── sheets/          # Bottom sheets
│   └── library/         # Library components
├── lib/                 # Shared utilities
│   ├── db/              # Database services
│   ├── hooks/           # Custom React hooks
│   ├── stores/          # Zustand stores
│   └── mobile-signer.ts # Nostr signer implementation
├── types/               # TypeScript definitions
└── utils/               # Utility functions

Technology Stack

Core

  • React Native
  • Expo (with Dev Client)
  • TypeScript
  • SQLite (via expo-sqlite)
  • Zustand (state management)

UI Components

  • NativeWind/Tailwind
  • React Navigation
  • Lucide Icons

Nostr Integration

  • NDK (Nostr Development Kit)
  • Custom mobile signer implementation
  • Local event caching

Database Architecture

POWR uses a SQLite database with a service-oriented architecture:

  • Exercise data
  • Workout templates
  • Nostr event caching
  • User profiles

Each domain has dedicated service classes for data operations.

Nostr Integration

POWR implements the Nostr protocol via NDK with:

  • Secure key management using expo-secure-store
  • Event publishing for exercises, templates, and workouts
  • Profile discovery and following
  • Custom event kinds for fitness data

Building for Production

# Build for iOS
eas build -p ios

# Build for Android
eas build -p android

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Push to the branch
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

About

Cross-platform fitness tracking app built with React Native and Expo. Features local-first architecture with planned Nostr protocol integration for decentralized social features.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published