Wander.ly is a revolutionary mobile app designed to address critical health, business, and environmental challenges in the Philippines ๐ต๐ญ. By merging mobile health tech with blockchain technology (ICP), Wander.ly creates a motivational ecosystem that encourages physical activity, supports local businesses, and promotes eco-friendly transportation in the local community. Users are rewarded for meeting walking goals, participating in local business airdrops, and reducing their carbon footprint.
Wander.ly aims to combat the rising sedentary lifestyle in the Philippines by incentivizing physical activity through a rewarding system that also supports local economies and encourages eco-friendly behaviors. This app is for anyone looking to improve their health, support local businesses, and make a positive environmental impact.
- AI-Generated Walking Goals: At the heart of Wander.ly are personalized walking challenges tailored to motivate individuals throughout the day. Whether it's step-based, distance-based, or time-based, these tasks keep you active and help you achieve your fitness goals in a fun way.
- Journey Sharing through Swipe Cards: After completing tasks or participating in airdrops, users can share their walking journeys and interact with others in a Tinder-style community feed.
- Local Business Airdrops: Supports small businesses by driving physical traffic through rewarding walking tasks that unlock special offers.
- Environmental Impact Tracking: Tracks and displays the positive environmental impact of usersโ walking activities, like carbon emission savings and trees preserved.
- Exploration and Leveling Up: Encourages exploration and personal growth by leveling up users as they discover new places and complete tasks.
- Task Selection: Users start their journey on the Explore screen, where they are presented with AI-generated, personalized walking tasks. These tasks are tailored to align with individual fitness goals and daily schedules, ensuring that each walk is both enjoyable and beneficial.
- Progression and Rewards: By completing walking tasks, users earn points that they can exchange for exclusive rewards. Advancing through levels also unlocks exciting achievements and rewards, which keeps users engaged and motivated to maintain an active lifestyle.
- Journey Sharing: After walking, users can share their experiences on the community feed. This platform allows them to interact with other wanderers by liking, sharing, and awarding their journeys and showing support. It's a space for encouragement and social engagement.
- Local Business Airdrops: The app encourages local exploration and support of MSMEs through airdrop events. Users can participate by walking to specific local businesses and scanning QR codes to receive exclusive rewards and discounts, promoting community economic growth.
- Environmental Impact Tracking: Every step taken by users is converted into data that tracks environmental savings, such as carbon emission reductions and trees preserved. This feature educates users about the ecological benefits of walking and encourages sustainable practices.
Image Storage:
- Wander.ly canister stores images by keys.
- User gets images by keys.
Please wait for the gifs to load >.<
- ๐ค Login with Internet Identity
- โ See all tasks
- ๐ฏ Completing a task
- ๐ Community feature
- ๐ผ Business Interaction
- DFX
- Mops for Motoko
- Expo
- Yarn
- Android Studio (for Android) or Xcode (for iOS)
- Mapbox API for map functionality to work (Copy to .env file)
- LocalTunnel (or Telebit Cloud) for sharing local development environment
// Install required dependencies of the app
1. yarn install
// Go to the ii_integration canister and install its dependencies too
2. cd src/ii_integration
3. npm install
4. npm run build
4. cd ../..
// Dfx commands to run on another terminal
5. dfx start --clean
6. dfx deploy
7. dfx generate
8. Open the auto-generated .env file and copy all the CANISTER_ID_EQUIVALENT_NAMES to EXPO_PUBLIC_CANISTER_ID_WANDERLY, EXPO_PUBLIC_CANISTER_ID_INTERNET_IDENTITY, and EXPO_PUBLIC_CANISTER_ID_II_INTEGRATION to sync ids.
(See .env.example for more details)
// Prebuild the app to generate android and ios directories
9. npx expo prebuild --clean
Note: If "0.0.0.0" for Candid UI does not work, use "localhost" instead on the url, or you can change directly in the
dfx.json
. (Ex: http://0.0.0.0:4943 => http://localhost:4943)
- Make sure dfx is running (
dfx start --clean
) and project is deployed (dfx deploy
). - Connect your physical device or open a simulator through Android Studio or Xcode.
npx expo run:ios
(orrun:android
) Add--device
(to select device)
Note: If you are using an Android device or planning to use it on a physical device, local Internet Identity won't work unless you secure it with Localtunnel or Telebit Cloud (or similar). Follow the guide below.
Make Internet Identity work with Android and Physical Devices locally
This mini-guide uses Localtunnel for easier setup, but I recommend using Telebit Cloud for long-term development of the app.
- Make sure Localtunnel is installed.
lt --port 4943
(copy link toEXPO_PUBLIC_TUNNEL_URL1
)
- 4943 is based on the port specified on dfx.json
lt --port 4943
again (copy link toEXPO_PUBLIC_TUNNEL_URL2
)
- We need two tunnels of the localhost because internet identity and the integration won't work with the same url
- If you decide to only use it with simulators, just remove the
EXPO_PUBLIC_TUNNEL_URL1
andEXPO_PUBLIC_TUNNEL_URL2
in the .env file. (May not take effect immediately)
Bonus: Use the app offline with Expo Dev Client and EAS Update
- Make sure both expo-dev-client and expo-updates is installed before you build the app.
- Configure expo-updates on the project so that it ties to your Expo account.
npx expo prebuild --clean
npx expo run:ios/android --device
(This will build the development build with eas update on your device)- After installing the dev build, login to your Expo account on the launcher screen of the app. (If it does not appear, shake or three-tap your screen)
- Run
eas update
on the root directory of the project and insert update message. - The update will be be stored on the EAS servers. You can view it on the Expo Dashboard, and then selecting the project (e.g. Wanderly) -> Updates.
- Open the app on your device and view the update on the Extensions tab of the launcher screen. Open it and voila! Turn off your internet connection and it will still work.
Note: After doing this, you don't need to run prebuild and run:ios/android all the time anymore after making changes. You just need to run eas update and select the update on the launcher screen of the app.
- DFINITY IC: Utilizes several modules like
@dfinity/agent
,@dfinity/candid
,@dfinity/identity
, and@dfinity/principal
to harness the power of the Internet Computer. ๐ - Motoko: A programming language for building decentralized apps on the Internet Computer. ๐ฎ
- React Native: Enables cross-platform mobile app development. ๐ฑ
- Expo: Streamlines the development process with an open-source platform for making universal native apps. ๐ ๏ธ
- React Navigation: Handles navigation logic in the app. ๐งญ
- React Native Reanimated: Provides a more fluid user interface experience. ๐
- React Native Gesture Handler: Manages touch interactions. ๐
- react-native-ui-lib: Offers a UI toolset and components for building a polished design. ๐จ
- gorhom/react-native-bottom-sheet: Implements smooth and highly-customizable bottom sheets. ๐
- nandorojo/burnt: Allows support for beautiful toast notifications. ๐ฅ
- rnmapbox: Integrates maps for geographical features. ๐บ๏ธ
- geolib: Assists in geolocation and distance calculations between coordinates. ๐
- date-fns: Helps with manipulating JavaScript dates in a simple way. ๐
- react-native-blob-jsi-helper: Aids in handling large binary data. ๐
- Zustand: Manages state in React with simplicity and performance. ๐
- Mops: A package manager for Motoko with fully on-chain package registry. ๐
- motoko-hash-map: Provides a stable hash map data structure in Motoko for the Internet Computer. ๐
- aviate-labs/uuid: Generates unique identifiers in Motoko. ๐
- motoko_datetime: Deals with date and time operations in Motoko. ๐
- Internet Identity Login
- AI-Generated Walking Goals
- Tinder-style Community Feed
- Upload images to share for walking journeys
- Manage Posts (CRUD)
- Beta Testing with Expo Dev Client
- Physical Airdrop Events IC implementation
- AR Businesses View
- Walk with a friend
- Crypto Wallets Integration
- Donate Points to NGOs/Charity
- Local Business Collaboration
- Sustainability Initiatives and New Opportunities
This project is licensed under the MIT license, see LICENSE.md for details.
- ICTDU (Systems Plus College Foundation): I am deeply grateful to ICTDU for providing a platform that allowed me to showcase and further develop my skills. Their support has been instrumental in my professional growth.
- Sypth (Alexander John Cammado): A special thanks to Sypth for his role as QA and for providing invaluable blockchain advice. While he may not have been directly involved in development, his guidance was crucial in steering the project in the right direction.