Later, I decided to play around with the speech recognition and synthesis libraries in React Native, and made the app completely voice controlled. Apart from the phonetic analysis done by these libraries itself, there is no conventional NLP algorithm being used, and yet the conversation is smooth and natural.
Other than answering questions using voice, the user can also ask the app to repeat questions, read out options, or skip questions, among a lot of other options. The app also detects negatives in a statement to correctly recognize what the user does NOT want done. All of this done by simply iterating through the text generated from speech and detecting certain words!
The Chat-App app allows users to sign up and send/recieve messages from other users registered in the app. The app uses a back end written in Java, with a MySQL database to store login information and messages.
The app has multiple issues as far as usability is concerned. In the absence of encryption protocols, passwords in the MySQL database are stored as plain text and transmitted over the network in the same way. The app also does not use websockets, and users do not receive messages in real-time. Rather, they must hit refresh to receive new messages.
As one of my first applications, I was happy with this limited functionality, and my takeaway was a better understanding of React Native, redux, and network concepts.