{"id":16328171,"url":"https://github.com/doganozturk/react-native-messaging-app","last_synced_at":"2026-02-23T22:07:50.462Z","repository":{"id":38943939,"uuid":"205522648","full_name":"doganozturk/react-native-messaging-app","owner":"doganozturk","description":"A simple cross-platform messaging app.","archived":false,"fork":false,"pushed_at":"2022-12-10T00:49:13.000Z","size":1857,"stargazers_count":8,"open_issues_count":19,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-04T10:21:43.642Z","etag":null,"topics":["cross-platform","firebase","react","react-hooks","react-native","redux"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/doganozturk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-08-31T09:16:10.000Z","updated_at":"2023-03-08T04:05:58.000Z","dependencies_parsed_at":"2022-08-31T16:43:34.312Z","dependency_job_id":null,"html_url":"https://github.com/doganozturk/react-native-messaging-app","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/doganozturk/react-native-messaging-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doganozturk%2Freact-native-messaging-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doganozturk%2Freact-native-messaging-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doganozturk%2Freact-native-messaging-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doganozturk%2Freact-native-messaging-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/doganozturk","download_url":"https://codeload.github.com/doganozturk/react-native-messaging-app/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doganozturk%2Freact-native-messaging-app/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259686133,"owners_count":22896055,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cross-platform","firebase","react","react-hooks","react-native","redux"],"created_at":"2024-10-10T23:13:53.780Z","updated_at":"2026-02-23T22:07:50.409Z","avatar_url":"https://github.com/doganozturk.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# React-Native-Messaging-App  \n  \nThis is a mobile application I built for studying purposes, using React-Native (v0.60.5).   \n  \nApplication has two screens: one for user login and one for chat. Application is kind of dummy, login functionality for example simply uses a user name, there is no password control. Chat functionality is also very simple for now, there is no persistence on that side and it uses a ready made json blob for initial data. Even though, I think the application is a good example and study piece because:  \n   \n 1. It contains a simple user authentication/session system by storing unique device ids on Firebase.   \n 2. It contains examples of component level and global (through Redux architecture) state. Also asynchronous actions with help of Redux middleware [redux-thunk](https://github.com/reduxjs/redux-thunk).  \n 3. There are also use cases of some general React-Native components such as View, Text, Image, Flatlist .etc and also some advanced ones such as LinearGradient.   \n 4. Written entirely using React Hooks.  \n  \n## Getting Started  \n  \nThese instructions will get you a copy of the project up and running on your local machine for development and testing purposes.  \n  \n### Prerequisites  \n  \nIf you want to set up a development environment for the project , you need these:  \n  \n```  \nbrew install node@10.16.3  \n  \nbrew install watchman@4.9.0  \n  \nbrew tap AdoptOpenJDK/openjdk  \n  \nbrew cask install adoptopenjdk8  \n```  \n*Note: Especially for Node, I strongly recommend usage of a Node version management tool such as [NVM](https://github.com/nvm-sh/nvm)* or [n](https://github.com/tj/n).  \n  \n### Installing  \n  \nYou should have a Firebase project already set up. You can look at the `.env.example` file to how to set a `.env` file. After creating `.env` file with your Firebase credentials, to set up a development environment running  \n  \n```  \ngit clone https://github.com/doganozturk/react-native-messaging-app.git  \n  \ncd messagingApp  \n  \n# Install project dependencies\nnpm install  \n```  \n  \n#### For iOS   \n```  \ncd ios   \n\n# Install native dependiences through CocoaPods  \npod install  \n  \n# Start metro bundler  \nnpm run start:bundler  \n  \n# Build project for iOS  \nnpm run start:ios  \n```  \n  \n#### For Android  \n  \nAfter setting up project on Android Studio and syncing with Gradle files, you need to register a simulator device. Open your simulator, then:  \n  \n```  \n# Start metro bundler  \nnpm run start:bundler  \n  \n# Build project for Android  \nnpm run start:android  \n```  \n  \n## Linting \u0026 Formatting  \n  \nThe project uses current community favorites such as ESLint and Prettier. I use Intellij IDEA as my IDE and there are appropriate plugins for these tools. All known and respected IDEs and editors have that kind of tools, so I recommend installing them before development.  \n  \n## Known Caveats \u0026 Improvements  \n  \n- React-Native version used in this project has some [issues](https://github.com/facebook/react-native/issues/25822). To bypass them I used [patch-package](https://github.com/ds300/patch-package) to patch a file inside that library. This patching process runs at npm postinstall step and it is automatic.  \n  \n- Project uses [react-native-dotenv](https://github.com/zetachang/react-native-dotenv) library for supporting .env file usage for environment variables. I used this for Firebase configuration variables.\n  \n- I chose to manipulate users' id fields in the initial json blob data. I did this manipulation because there is this case in Chat screen where user's own messages should be rendered at right hand side of the screen. So there is a need for some kind of data to choose which messages should be rendered at where. I use unique Firebase Firestore ids which are generated by Firebase as user ids in my application and these are in `String` type. The project also uses PropTypes, so there is this issue of number-string problem. To bypass this, after fetching initial json data I convert `Number` type ids to `String` type.  \n  \n## Tooling  \n  \n- [React Devtools](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi)  \n- [Redux Devtools](https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd)  \n- Android Studio  \n- XCode  \n  \n## Author  \n  \n* **Doğan Öztürk** - [Github](https://github.com/doganozturk)  \n  \n## License  \n  \nThis project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoganozturk%2Freact-native-messaging-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdoganozturk%2Freact-native-messaging-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoganozturk%2Freact-native-messaging-app/lists"}