Rocket Launch Tracker is a user-friendly mobile application designed to keep users updated on SpaceX launches. Leveraging the SpaceX public API, the app provides real-time information about upcoming and past launches. Users can conveniently navigate through launches, view launch details, and watch launch videos with ease.
- Rocket Launch Tracker
- Key Features
- Project Structure
- Quality of Life Improvements
- Future Improvements
- Screenshots
- Installing and running the app
- Congratulations!
- Troubleshooting
- Learn More
Utilizes the SpaceX public API to fetch launch data and presents it in an organized manner.
Features a performant SectionList for efficient navigation and a "scroll to top" button for seamless user experience.
Employs a color-coded system to visually represent the success or failure of launches, enhancing user comprehension.
Provides placeholder images from the assets folder to ensure a consistent user interface and utilizes FastImage for efficient image caching.
Implements custom hooks to streamline logic in views and thoroughly tests utility functions for reliability. Make use of memoised variables and functions throughout the SectionList in order to optimise re-rendering cost.
Seamlessly integrates launch videos via Webview using YouTube links obtained from the API responses.
The project follows a structured layout for easy navigation and maintenance. Folders such as state, translations, context, (or containers, molecules..) can be added when the project gets larger.
/src
/components
/screens
/services
/assets
/hooks
/utils
/navigation
App.tsx
constants.ts
__tests__
__mocks__
The package.json file includes scripts for linting, formatting, type-checking, and running unit tests, promoting code quality and maintainability.
$ npm run check-types
$ npm run lint-fix
$ npm run test
$ npm run format
While the current version offers essential functionality, potential future enhancements include implementing push notification services for upcoming launches and introducing a "Live Launch Countdown" feature displaying live YouTube streams with integrated chat functionality. Had SpaceX api offered paging, or graphql, smaller requests could be made on home screen which would ease the burden on the network usage and calculation costs on the device. Finally, a real designer could design a futuriistic, atom-age style design that provides a real ROCKET APP feeling.
This is a new React Native project, bootstrapped using @react-native-community/cli
.
Note: Make sure you have completed the React Native - Environment Setup instructions till "Creating a new application" step, before proceeding.
First, you will need to start Metro, the JavaScript bundler that ships with React Native.
To start Metro, run the following command from the root of your React Native project:
# using npm
npm start
# OR using Yarn
yarn start
Let Metro Bundler run in its own terminal. Open a new terminal from the root of your React Native project. Run the following command to start your Android or iOS app:
# using npm
npm run android
# OR using Yarn
yarn android
# using npm
npm run ios
# OR using Yarn
yarn ios
If everything is set up correctly, you should see your new app running in your Android Emulator or iOS Simulator shortly provided you have set up your emulator/simulator correctly.
This is one way to run your app β you can also run it directly from within Android Studio and Xcode respectively.
Now that you have successfully run the app, let's modify it.
-
Open
App.tsx
in your text editor of choice and edit some lines. -
For Android: Press the R key twice or select "Reload" from the Developer Menu (Ctrl + M (on Window and Linux) or Cmd β + M (on macOS)) to see your changes!
For iOS: Hit Cmd β + R in your iOS Simulator to reload the app and see your changes!
You've successfully run and modified your React Native App. π₯³
- If you want to add this new React Native code to an existing application, check out the Integration guide.
- If you're curious to learn more about React Native, check out the Introduction to React Native.
If you can't get this to work, see the Troubleshooting page.
To learn more about React Native, take a look at the following resources:
- React Native Website - learn more about React Native.
- Getting Started - an overview of React Native and how setup your environment.
- Learn the Basics - a guided tour of the React Native basics.
- Blog - read the latest official React Native Blog posts.
@facebook/react-native
- the Open Source; GitHub repository for React Native.