This app allows users to book services. Upon logging in or creating an account with Firebase authentication, the app requests location permission. Users then select a service, choose a date and time (with an option for recurring service), and proceed to the cart. They can modify their order or place it, leading to the order completion page. After completing an order, users can access their profile to track order history. The profile page displays all placed orders, allowing users to return to the homepage or log out. Logging out redirects users to the login page for the next session
Stack : Expo (Frontend) + Firebase (Backend)
- @react-navigation/native: For routing and navigation.
- @react-navigation/native-stack: Manages the screen transitions.
- @reduxjs/toolkit: Efficient Redux development toolkit.
- axios: HTTP client for API requests.
- date-fns: JavaScript library for date manipulation and formatting.
- deprecated-react-native-prop-types: Backward compatibility for PropTypes.
- expo: Framework for universal React apps.
- expo-av: Audio and video playback.
- expo-camera: Device camera access.
- expo-file-system: Local file system interaction.
- expo-image-picker: Image and video selection.
- expo-location: Location services.
- expo-media-library: Media file management.
- expo-sensors: Access to device sensors.
- expo-splash-screen: Splash screen management.
- expo-status-bar: Status bar appearance control.
- expo-web-browser: Browser content access.
- firebase: Platform for app development and backend services.
- lottie-react-native: Animation rendering.
- react-native-image-slider-box: Customizable image slider.
- moment-jalaali: Jalaali calendar support for moment.js.
- react: UI building library.
- react-native: Native app framework.
- react-native-safe-area-context: Safe area insets handling.
- react-native-screens: Native navigation components.
- react-redux: React bindings for Redux.
- expo-background-fetch: Background task execution.
- expo-secure-store: Key-value pair encryption and storage.
To run this app, follow these steps:
-
Check for
deprecated-react-native-prop-types
Package: This package is needed for certain prop types that are deprecated in the latest versions of React Native. First, check if you have this package installed.If not, you can install it by running:
yarn add deprecated-react-native-prop-types
-
Modify
node_modules/react-native/index.js
: After installing the package, you will need to make some changes in theindex.js
file of thereact-native
module in yournode_modules
.Replace the following functions in
node_modules/react-native/index.js
with the lines provided:// Deprecated Prop Types get ColorPropType(): $FlowFixMe { return require('deprecated-react-native-prop-types').ColorPropType; }, get EdgeInsetsPropType(): $FlowFixMe { return require('deprecated-react-native-prop-types').EdgeInsetsPropType; }, get PointPropType(): $FlowFixMe { return require('deprecated-react-native-prop-types').PointPropType; }, get ViewPropTypes(): $FlowFixMe { return require('deprecated-react-native-prop-types').ViewPropTypes; },
This ensures that the app uses the correct prop types from the
deprecated-react-native-prop-types
package.
Please note that modifying files in node_modules
is generally not recommended as these changes can be overwritten by package updates. A more sustainable approach would be to fork the necessary libraries and make your changes there, or find alternative solutions that do not require altering node_modules
directly.
For more detailed information about each library or tool, you can visit their respective documentation or GitHub repository.
-
Setup Firebase and Expo Account to leverage notification system into application: https://docs.expo.dev/push-notifications/push-notifications-setup/#get-credentials-for-development-builds
-
For Gradle and Kotlin Error: https://stackoverflow.com/questions/76862279/eas-build-fails-with-error-execution-failed-for-task-expo-splash-screencompil