This project is a clone of the original Sendit app created by thesiamak (https://github.com/thesiamak/sendit). The goal of this project is to implement a minimal viable product (MVP) of Sendit using React Native and compare it with the original Kotlin-based implementation.
Read this for more info and comparison details: https://medium.com/@the_siamak/react-native-vs-android-a-comprehensive-comparison-c2fddea0c803
- Integration with Google authentication and single sign-on.
- Integration with Firebase services, including messaging and analytics.
- System notifications for new messages.
- Send and receive text between devices owned by the user.
- Generate and scan QR codes to connect devices.
- User authentication and authorization system.
- Database and local storage for messages and device connections.
- Error handling and job interception for better user experience.
- Sign up with username and password.
- Password reset functionality.
- Ability to share received text with other apps.
- Delete device from the user's account.
- Redirection to websites.
- Some UI/layout animations.
- Splash screen (React Native has a default splash screen).
- Basic widgets for creating the UI.
- Custom UI and headless components.
- Custom JavaScript bridge to communicate between native and cross-platform code.
- React Navigation for navigation and authentication system.
- Network API handling with separate components and a pub/sub system.
- Dependency injection via parameters.
- Complex UI design with custom and provided widgets.
- Redux toolkit and database for state management.
- React Native Firebase (https://rnfirebase.io/) for Firebase integration.
- React Navigation (https://reactnavigation.org/) for navigation.
To run the app, you need to have React Native and its dependencies installed. Clone the repository and run npm install
to install the required packages. Then run npm start
to start the app. The app can be run on iOS and Android devices or emulators.
Contributions to this project are welcome. To contribute, please fork the repository and create a pull request with your changes.