WARNING: It is very easy to rate limit yourself for the CoinGecko API. It's recommended hopping around with a VPN connection.
This app was created using the Tabs starter from Expo-router (npx create-expo-app@latest --template tabs@49
).
Videos created using maestro are available
Android ./outputs/maestro_recordings/android.mp4
iOS ./outputs/maestro_recordings/ios.mp4
Expo-router handles navigation for the app. The screens outlined in the requirements have the following routes.
### Information
Path: /coin/{id}
, where id
is a coin id from the Coin-Gecko Api.
Tests can either be run:
yarn test
- on a unit basis -- TBCyarn e2e
- on an end to end basis (basic tests for the CoinGecko API)
First start a (reccomended) release variant/configuration build on android/ios
For android, yarn android --variant Release
For ios, yarn ios --configuration Release
Next, to run Maestro:
- Test using
yarn maestro:{PLATFORM}
- Record using
yarn maestro:record:${PLATFORM}
Note that the flow files are different on each platform owing to unusual behaviour of tabs in ios. Tip, use maestro studio
to inspect when writing tests.
The app can be run on simulator or a connected device using:
yarn ios
yarn android
It isn't recommended to use Expo Go.
Reactotron is enabled in DEV only.
The app is built locally using Expo (this could be moved to expo CI/CD). Build will not work without access to a working Expo account and/or signing credentials, you can set these up following the docs here https://docs.expo.dev/build/introduction/.
Note that if using a different Expo account, the configuration in app.json
will need updating.
On iOS, the build targets internal
distribution, so devices must be enrolled to the account using eas device:create
or manually using UDID.
A production release without developer tools is built.
yarn build:android
. This outputs tooutputs/prod.apk
. You can run this on a connected usb device usingyarn android:device
yarn build:ios
. This outputs tooutputs/prod.ipa
.yarn build:cloud
. This builds in the cloud using eas instead.
Sentry is enabled in dev only
App icons and spash screen were generated using a Bitcoin icon sourced online and the Expo tutorial here https://docs.expo.dev/develop/user-interface/app-icons/
.
A local copy of the figma template file is saved in figma-app-icon.fig
. The exported assets are here /Users/ben/edfcrypto/outputs/figma-app-icons
, and have also been copied to the assets/images
directory to replace the template starters.
- Improve error handling esp on Information screen. Ensure loading occurs within cards.
- Add Infinite scroll to market list
- Make tab bar RNEU
- Add Maestro tests
- Add i18n?
- Review Rehydration of api data.
- Add screenshot taking on Maestro