Websocket User Logs for a React Native App

Job ID: 36344646

Budget: $30 – $250 USD

I am looking for someone to develop user session logs for a React Native App using Websockets.
The project consists of a NodeJS Websocket server and a client class that goes in a React Native Project.

Our application runs on IOS, Android and Web.
Actions to be logged:
- WebSocket session start and end timestamp
- React Native Navigation events
- Identification/logging of each app button clicked by user

Code should be dynamic for Navigation Events and expandable to handle new button actions.

Logs will be stored in a Postgres database with the following schema:

DB => user-log-table => {id, created, socketid, userid, action, details}
DB => user-sessions-table => {id, created, socketid, userid, sessionOpened, sessionClosed}

Example Scenario:

[user logs in] => Websocket connection started to server => server adds {
db.user-sessions-table - Add row - id: 5, created: timestamp, socketid: "e3kafjei32ladfj", userid: "abcdefg123", sessionOpened: timestamp
}

[user goes to detail page] => Emit Socket event => server adds {
db.user-logs-table - Add row - id: 23, created: timestamp, socketid: "e3kafjei32ladfj", userid: "abcdefg123", action: "Navigate", details: {page: "Detail"}
}

[user clicks button] => Emit Socket event => server adds {
db.user-logs-table - Add row - id: 23, created: timestamp, socketid: "e3kafjei32ladfj", userid: "abcdefg123", action: "load-cats", details: {}
}

[user goes back home] => Emit Socket event => server adds {
db.user-logs-table - Add row - id: 23, created: timestamp, socketid: "e3kafjei32ladfj", userid: "abcdefg123", action: "Navigate", details: {page: "Home"}
}

[user leaves app] => Websocket connection closed => server adds {
db.user-sessions-table - Add row - id: 5, created: timestamp, socketid: "e3kafjei32ladfj", userid: "abcdefg123", sessionOpened: timestamp, sessionClosed: timestamp
}


* There's no need to include authentication in the project as we have a solution already.
* The developer should have advanced knowledge in websockets and React Native application development.