Nakuskia - A Voice Journal App: The MVP

Nakuskia - A Voice Journal App: The MVP

Introduction

logo.png Nakuskia app is a mobile and web-based journalling solution to assist users to gather their thoughts through journalling by word of mouth. The project is created for individuals that feel the need to speak out their thoughts.

The focus here is to be able to record a journal and offer access to the textual version of the journal. In future iterations, however, we will be focusing on developing an AI solution for the app to be able to offer an interactive UI through the integration of digital humans to give the app several personas.

Team

  • Njagi Ndungo: Flutter/mobile developer

  • Elijah Daniel: Backend/Web-app Developer

Timeline

  1. Research and project approval: 4th to 24th February
  2. Development planning: 25th February to 3rd March
  3. Software Development process(MVP): 3rd March to 23rd March(to continue after the presentation of MVP)

App Development Context(Story)

ugo-mendes-donelli-e4FbcDByhjI-unsplash.jpg Everyone on the team has an interest in developing interactive software, which motivated us to have a conversation about various technologies we wanted to implement for the project. Initially, through a shared interest in Unity3D, Elijah and Njagi Ndungo had proposed to come up with a solution to use the software but the idea did not hold water due to varying strengths in the technology.

After various conversations about how we can develop interactive software in the field of mental health, an idea popped up about software that would act as a friend to users who do not interact much.

Upon further discussion, we were able to come up with an idea to have the user journal with their voice as if they were talking to a friend. The core idea was to have a user 'talk to someone' so it goes without doubt that the application would have to implement AI solutions. However, due to minimal time and lack of knowledge on AI, we settled on settling for a speech to text implementation for the MVP.

Accomplishments

Screenshot (371).png For the mobile frontend, we used Flutter, a framework for the Dart language used to develop cross-platform software. Previously we had set out to use ReactJs, however, the team member responsible for developing with the language went silent, hence the change.

For the web landing page, we used HTML, CSS, and JS just to make it appealing and simple.

For the backend, there are two implementations present.

  1. The mobile developer (Njagi Ndungo) used Firebase due to time constraints on the adjustments that were needed.
  2. The backend developer (Elijah Daniel)implemented a Nodejs backend, however, this is not currently integrated with the mobile frontend.

Mobile App Features

Implemented

  1. Authentication with Flutter and Firebase. It helps with ensuring the user only gets journals they created and also keeps them secure.
  2. The mobile application converts speech to text. By calling the speech_to_text API available on pub.dev, we were able to convert speech to text and store it on a DB.
  3. The mobile app stores the journal data on the Firebase Firestore Database.

Not Yet Implemented

  1. Integration: the custom backend and the Mobile frontend are not currently connected.
  2. Natural Language Processing: to deal with more than one language and accents
  3. Digital human: to give the app a personality or several to choose from.

Technical Challenges

fotis-fotopoulos-6sAl6aQ4OWI-unsplash.jpg One major challenge was ensuring a user could record a journal and have the recorded information is stored in the Firebase Firestore Database. In particular, ensuring that the app can record audio, convert this to text and create a document within the journals collection in Firestore.

To resolve this, we found the Flutter speech_to_text API that does the conversion to text, then used several variables to store the date, email, and journal data to make each journal unique to the user.

The firebase firestore documentation came in handy with the data storage aspect.

Key Takeaways

Seeing as with every project you learn something new, here's a list of things that stood out in the development process of the MVP

  • Whiteboarding is often ignored in many Software Engineering teams. However, I must say people miss out on a lot and at first we did. Through whiteboarding, we were able to solve a substantial amount of deadlocks.

  • As Software Engineers working on a team, we have learnt that communication is key. One of our teammates has not been active to date and we had to pick up his responsibilities which has resulted in delays.

  • The Nakuskia Project will have consistent iterations and eventually launch on the play store and apple store platforms. Through this project, Njagi Ndungo has realised that he will be working with Flutter for a very long time and Elijah Daniel's interests have aligned to NodeJs and Backend development in general.

About Us

Njagi Ndungo

Hashnode banner.png Njagi is a tech enthusiast highly interested in programming and sharing his programming journey through articles and videos online - YouTube.

Software Engineering Stack: Python and Flutter.

If you stalk him enough you'll notice the passion he has for FlutterFire, Unity3D and writing.

LinkedIn: A.Njagi Ndungo

Writing Links: Linktree

Elijah Daniel

T0195LMKD1R-U023DQ7BTLG-8ab25f5b1934-512.jpeg Elijah is a Full-stack Software Engineer, currently enrolled in the ALX software engineering program.

Elijah is a Unity3D enthusiast with a keen eye on developing assets that might help other members of the Unity3D community forum. He is also proficient in Python, NodeJs, and C#.

Contact him for more info.

Elijah's Github