Position: Sr React Native Developer
Company: ProHabits
Experience required: 2y
Category: JavaScript
English level: upper
Published: 2022-01-01T00:00:00+02:00

We are working with a client for the past 2 years on a building a social Community platform for a group of high net worth individuals. These individuals use the Community platform to engage with each other in “Groups”, engage in “Discussions”, attend “Events”, “Chat” with other members of the Community, among other things. 

The platform was initially built with WordPress + BuddyBoss. However, we’re taking an app-first approach to this platform going forward. Even thought WordPress has a REST API, it does not scale well and perform well due to the nature of WordPress architecture. 

So, the entire platform is being built from the ground up to separate Backend (REST API) and Frontend (React + React Native).

**Technology**:
REST API: Symfony API Platform has been chosen as the framework for building the REST API for this project. A team of 4 backend developers have already been working on migrating all the business logic feature by feature. 

Frontend: React + React Native have been selected as the frontend frameworks for building the UI of the project. For React Native, we will be using Expo managed workflow to make it easier, and rely on EAS for built, test, and deployments. Other utility libraries such as Storybook will be integrated to make the development process easier.

App first approach requires us to start with a React Native application which uses the Symfony REST API. This will be the first front end project that we will start with. There are plans to expand into a React based web application in the future once the App has a more robust feature set. 

**Features**:
Authentication - integrate with OKTA SSO
Members - members can see other members, view their profiles, etc.
Communities - members can be part of communities with other members
Events - members can view events, and attend them, etc.
Discussions - members can participate in threaded discussions with other members in various areas of the application such as Groups, Events, etc.
Documents - members can upload and view documents within Groups
Chat - members can text chat with other members and create Group chats
Notifications - notifications will be sent across various channels including Push and Email
Search - integrating with Algolia, the entire platform will be searchable. Results will be shown in a user-friendly way that allows user to filter, sort, and group search results
Nominations - members can nominate other non-members to join the platform. This will invoke an approval process.
Investment Platform - this will be a major expansion to the project where we we will need to build a robust investment management system where user can create deals, invite users to participate in those deals. 

All of the above features will be integrated with Salesforce via Tray.io to ensure a constant sync of data between Symfony API Platform and the Salesforce instance.  

**Current State**:
Backend: The backend team is in the process of building the Symfony REST API. We started with the Events feature first, since that was the most well known within the platform. The Events APIs will be ready for consumption during the first week of February 2022. 

**Design**: The design team is in the process of creating app screens. They started with creating a design system consisting of various components that will be re-usable across the React Native app. The team is targeting to have authentications screens during the first week of February 2022. 

**Future Expansion**:
Even though the project is starting with an app first, there are plans to expand into creating a Web application based on React. This web application may share a lot of the non-UI code from the React Native application. The Web application will offer even more functionality than the React Native app.

**Challenges**:
The current team does not have expertise in React or React Native. Our biggest challenge right now is to create the architecture of the application in such a way that it is highly performant and can scale to accommodate the large feature-set that we will be adding this year.