{"id":21670752,"url":"https://github.com/flowstake/expo","last_synced_at":"2026-02-28T16:31:21.019Z","repository":{"id":246837787,"uuid":"811558210","full_name":"flowstake/expo","owner":"flowstake","description":"Flowstake Expo Snack ","archived":false,"fork":false,"pushed_at":"2024-07-06T23:17:05.000Z","size":836,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-02-23T23:41:15.362Z","etag":null,"topics":["expo","proof-of-stake","react-native"],"latest_commit_sha":null,"homepage":"https://expo.dev/accounts/flowstake/snacks","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flowstake.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-06T20:42:04.000Z","updated_at":"2024-07-06T23:17:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"4e230d65-33f9-4028-bc61-22c3701d6dda","html_url":"https://github.com/flowstake/expo","commit_stats":null,"previous_names":["flowstake/expo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/flowstake/expo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowstake%2Fexpo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowstake%2Fexpo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowstake%2Fexpo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowstake%2Fexpo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flowstake","download_url":"https://codeload.github.com/flowstake/expo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowstake%2Fexpo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29942796,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T13:49:17.081Z","status":"ssl_error","status_checked_at":"2026-02-28T13:48:50.396Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["expo","proof-of-stake","react-native"],"created_at":"2024-11-25T12:35:03.659Z","updated_at":"2026-02-28T16:31:20.727Z","avatar_url":"https://github.com/flowstake.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FlowStake Expo Documentation\n\n## Table of Contents\n1. [Introduction](#introduction)\n2. [Project Setup](#project-setup)\n3. [Key Features](#key-features)\n4. [Technologies Used](#technologies-used)\n5. [Installation Guide](#installation-guide)\n6. [Directory Structure](#directory-structure)\n7. [Environment Setup](#environment-setup)\n8. [Development Workflow](#development-workflow)\n9. [Account Management](#account-management)\n10. [Activity Tracking](#activity-tracking)\n11. [Data Storage](#data-storage)\n12. [Smart Contracts](#smart-contracts)\n13. [Attestation System](#attestation-system)\n14. [Social Features](#social-features)\n15. [Testing](#testing)\n16. [Deployment](#deployment)\n17. [Future Work](#future-work)\n18. [Contributing](#contributing)\n19. [License](#license)\n\n---\n\n## Introduction\n\nFlowStake is a platform that captures proof of activity as a stake, initially focusing on running and cycling activities. It features GPS and heartbeat data tracking, photo/video attestation, and peer-to-peer attestation, with a progressive web app for live data capture and mobile apps for iOS and Android.\n\n---\n\n## Project Setup\n\nTo start working on the FlowStake Expo project, ensure you have the following prerequisites:\n\n- Node.js\n- Expo CLI\n- Visual Studio Code or any preferred IDE\n\n---\n\n## Key Features\n\n- GPS and Heartbeat Data Tracking\n- Photo/Video Attestation\n- Peer-to-Peer Attestation\n- Social Network-like Activity Feed\n- Smart Contracts for Self-Sports Betting\n\n---\n\n## Technologies Used\n\n- **React Native**: For building mobile applications.\n- **Expo**: For managing the React Native projects.\n- **Web3Auth**: For account management.\n- **Firebase**: For data storage.\n- **Hedera Hashgraph**: For permanent records.\n- **Ethereum**: For smart contracts.\n- **IPFS** - For hash-addressible content.\n\n---\n\n## Installation Guide\n\n1. Clone the repository:\n    ```bash\n    git clone https://github.com/username/flowstake-expo.git\n    cd flowstake-expo\n    ```\n\n2. Install dependencies:\n    ```bash\n    npm install\n    ```\n\n3. Start the Expo development server:\n    ```bash\n    expo start\n    ```\n\n---\n\n## Directory Structure\n```bash\nflowstake-expo/\n├── assets/                                 # Image, video, and other static assets\n├── components/                             # Reusable components\n├── config/                                 # Configuration files\n├── hooks/                                  # Custom hooks\n├── navigation/                             # Navigation configuration\n├── screens/                                # Screen components\n├── services/                               # API and service files\n├── styles/                                 # Styling files\n├── utils/                                  # Utility functions\n├── .env                                    # Environment variables\n├── App.js                                  # Main application component\n├── app.json                                # Expo configuration\n├── babel.config.js                         # Babel configuration\n├── package.json                            # Project dependencies and scripts\n└── README.md                               # Project documentation\n```\n### Directory Structure Extended \n\nHere is a proposed code structure for the FlowStake Expo app:\n\n```plaintext\nflowstake-expo/\n├── assets/                                 # Image, video, and other static assets\n│   ├── icons/                              # Icon assets\n│   ├── images/                             # Image assets\n│   └── videos/                             # Video assets\n├── components/                             # Reusable components\n│   ├── common/                             # Common reusable components\n│   │   ├── Button.js                       # Reusable Button component\n│   │   ├── Footer.js                       # Footer component\n│   │   ├── Header.js                       # Header component\n│   │   └── Input.js                        # Reusable Input component\n├── config/                                 # Configuration files\n│   ├── firebaseConfig.js                   # Firebase configuration\n│   ├── hederaConfig.js                     # Hedera Hashgraph configuration\n│   └── web3authConfig.js                   # Web3Auth configuration\n├── hooks/                                  # Custom hooks\n│   ├── useAuth.js                          # Hook for authentication\n│   ├── useActivity.js                      # Hook for activity tracking\n│   ├── useAttestation.js                   # Hook for attestation\n│   ├── useSocial.js                        # Hook for social features\n├── navigation/                             # Navigation configuration\n│   ├── AppNavigator.js                     # Main app navigator\n│   ├── AuthNavigator.js                    # Authentication navigator\n│   ├── MainNavigator.js                    # Main app screens navigator\n├── screens/                                # Screen components\n│   ├── AuthScreens/                        # Screens for authentication\n│   │   ├── LoginScreen.js                  # Login screen\n│   │   ├── SignupScreen.js                 # Signup screen\n│   ├── ActivityScreens/                    # Screens for activity tracking\n│   │   ├── ProfileScreen.js                # Profile screen\n│   │   ├── StartActivityScreen.js          # Start activity screen\n│   │   ├── ActivityDetailScreen.js         # Activity detail screen\n│   ├── SocialScreens/                      # Screens for social features\n│   │   ├── FeedScreen.js                   # Social feed screen\n│   │   ├── FriendsListScreen.js            # Friends list screen\n│   ├── HomeScreen.js                       # Home screen\n├── services/                               # API and service files\n│   ├── activityService.js                  # Activity tracking services\n│   ├── attestationService.js               # Attestation services\n│   ├── authService.js                      # Authentication services\n│   ├── socialService.js                    # Social feature services\n├── styles/                                 # Styling files\n│   ├── colors.js                           # Color palette\n│   ├── fonts.js                            # Font styles\n│   └── globalStyles.js                     # Global styles\n├── utils/                                  # Utility functions\n│   ├── validators.js                       # Validation functions\n│   ├── formatters.js                       # Data formatting functions\n│   ├── constants.js                        # Constant values\n├── .env                                    # Environment variables\n├── App.js                                  # Main application component\n├── app.json                                # Expo configuration\n├── babel.config.js                         # Babel configuration\n├── package.json                            # Project dependencies and scripts\n└── README.md                               # Project documentation\n```\n\n### Explanation:\n\n- **assets/**: Contains static assets like images, icons, and videos.\n- **components/**: Reusable components categorized by their domain (e.g., common, auth, activity, social).\n- **config/**: Configuration files for Firebase, Hedera, Web3Auth, and other services.\n- **hooks/**: Custom hooks for authentication, activity tracking, attestation, and social features.\n- **navigation/**: Navigation configuration, including main, authentication, and app navigators.\n- **screens/**: Screen components, organized by functionality (authentication, activity tracking, social features, home).\n- **services/**: API and service files for authentication, activity tracking, attestation, and social features.\n- **styles/**: Styling files, including global styles, color palette, and font styles.\n- **utils/**: Utility functions such as validators, data formatters, and constants.\n- **.env**: Environment variables.\n- **App.js**: Main application component.\n- **app.json**: Expo configuration.\n- **babel.config.js**: Babel configuration.\n- **package.json**: Project dependencies and scripts.\n- **README.md**: Project documentation.\n\n---\n\n## Environment Setup\n\nCreate a `.env` file at the root of the project and add the necessary environment variables:\n```bash\nWEB3AUTH_CLIENT_ID=your_web3auth_client_id\nFIREBASE_API_KEY=your_firebase_api_key\nFIREBASE_AUTH_DOMAIN=your_firebase_auth_domain\nFIREBASE_PROJECT_ID=your_firebase_project_id\nHEDERA_ACCOUNT_ID=your_hedera_account_id\nETHEREUM_CONTRACT_ADDRESS=0xce723BBCa01d354B7b55a3337690707eE85b7B81\n```\n\n---\n\n## Development Workflow\n\n1. **Start Development Server**:\n    ```bash\n    expo start\n    ```\n\n2. **Building for Android**:\n    ```bash\n    expo build:android\n    ```\n\n3. **Building for iOS**:\n    ```bash\n    expo build:ios\n    ```\n\n4. **Linting and Formatting**:\n    ```bash\n    npm run lint\n    npm run format\n    ```\n\n---\n\n## Account Management\n\nFlowStake uses `web3auth.io` for account management. Users can sign up and log in using various authentication providers.\n\n- **Sign Up**: Users create an account using their preferred authentication method.\n- **Log In**: Users log in to access their profile and activity data.\n\n---\n\n## Activity Tracking\n\nThe app tracks activities such as running and cycling using the device's GPS and heart rate sensor.\n\n- **Start Activity**: Begin tracking GPS and heart rate data.\n- **End Activity**: Stop tracking and save the activity data.\n- **View Activities**: Access a list of recorded activities.\n\n---\n\n## Data Storage\n\nActivity data is stored in Firebase and Hedera Hashgraph for secure and permanent records.\n\n- **Firebase**: Real-time database for quick access and updates.\n- **Hedera Hashgraph**: Distributed ledger for immutable records.\n\n---\n\n## Smart Contracts\n\nFlowStake integrates Ethereum smart contracts for self-sports betting.\n\n- **Create Bet**: Users can create a bet on their performance.\n- **Join Bet**: Friends can join and bet on the activity.\n- **Settle Bet**: Contracts are settled based on the recorded activity data.\n\n---\n\n## Attestation System\n\nFlowStake includes a robust attestation system to verify the authenticity of activities.\n\n- **Photo/Video Attestation**: Users can upload media as proof.\n- **Peer-to-Peer Attestation**: Friends can verify and attest to the activity.\n- **Computer Vision**: Automated verification through image recognition.\n\n---\n\n## Social Features\n\nFlowStake aims to provide a social experience similar to Strava.\n\n- **Activity Feed**: View and interact with friends' activities.\n- **Friends List**: Connect with and follow other users.\n- **Challenges and Competitions**: Participate in events and compete with others.\n- **Media Storage**: Use IPFS for storing and sharing media content.\n\n---\n\n## Testing\n\nTesting is a crucial part of the development process. FlowStake follows the best practices outlined in Thomas Vanderstraeten's article.\n\n- **Unit Tests**: Test individual components and functions.\n- **Integration Tests**: Test interactions between components.\n- **End-to-End Tests**: Test the complete application flow.\n\n---\n\n## Deployment\n\n1. **Prepare for Deployment**:\n    ```bash\n    expo build:web\n    ```\n\n2. **Deploy to Firebase**:\n    ```bash\n    firebase deploy\n    ```\n\n3. **Deploy to App Stores**:\n    - Follow the respective guidelines for the Apple App Store and Google Play Store.\n\n---\n\n## Future Work\n\n- **Expand Activity Types**: Include more sports and activities.\n- **Enhanced Social Features**: Add more ways for users to interact.\n- **Advanced Analytics**: Provide detailed performance insights.\n\n---\n\n## Contributing\n\nWe welcome contributions! Please read our [Contributing Guide](CONTRIBUTING.md) to learn how you can help.\n\n---\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n\n---\n\nFor any further questions or support, please contact Renat Razumov at [flowstake@protonmail.com](flowstake@protonmail.com).\n\n---\n\nThis documentation should provide a thorough guide for developers and users of the FlowStake Expo project. Feel free to modify or expand upon it as the project evolves.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowstake%2Fexpo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflowstake%2Fexpo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowstake%2Fexpo/lists"}