When considering the many challenges of virtual education, we realized that mental health and time management issues are not often discussed together despite their impact on each other. Many students have a hard time structuring their days during quarantine and struggle with completing schoolwork. Students may also be isolated from family, friends, peers, and teachers, which can negatively impact education and mental health. This line of thinking led us to our app which helps students complete tasks by blocking out time to work and suggesting wellness activities, such as exercise, healthy snack breaks, and socializing.
What it does
When a user first opens the Day Flow app on their phone, they will come across a login screen. We added this functionality to protect our user data and ensure a high level of security when using the app. After logging in, they will be in Day View. In this view, they are able to scroll through their daily tasks and recommended wellness activities. Each box represents a task or activity that a student can click on to enter a work session. The user can also add a new task to be broken down and recommended in the following days. The backend database stores information associated with users, such as their tasks.
How I built it
After generating the idea, we created user stories for the prototypical use case for our target audience. Next, we developed a series of API specifications for how the front-end application would communicate with the backend. From there, we split the team into frontend and backend groups. On the frontend, we used pencil and paper, Sketchbook, and JustInMind to brainstorm and prototype screens. After defining key design elements, we began creating our Vue Native app with support from Node.js, NPM, and Expo.io. On the backend, we investigated technologies such as Azure Functions, Django, Azure Web Apps, and SQL. We decided to use Django, since most of us were familiar with Python. After implementing some of our endpoints in Python, we worked on deploying the API-serving application to Azure Web Apps, and then we connected it to a PostgreSQL database on Azure.
Challenges I ran into
For the frontend group, our main challenge was learning a new development framework. We have never used Vue Native before and were unfamiliar with the structure of these types of apps as well as the React Native code it is based on. We also struggled to find documentation for different UI elements and to debug elements and functionalities that did not work as expected. For the backend group, challenges included learning how to write a Django application, create views for the endpoints, and then deploy it on Azure. After making some modifications and learning about production versus local development settings, we were able to successfully deploy on Azure, as well as migrate from the local SQLite database to the Azure PostgreSQL database. Unfortunately, this took some time, and as such we were not able to fully develop all of the planned endpoints. However, Azure continuous integration/continuous deployment through Github works like a charm, so we don't anticipate many issues with deployment with updated code.
Accomplishments that I'm proud of
The frontend group is proud of the planning we put into the app, from detailing user stories to drawing out different UI ideas. We are happy with how much we learned about an unfamiliar development framework in such a short period of time. The backend group is particular proud of being able to deploy a working backend to Azure. In addition, we're proud of the clear API specification that is hosted on SwaggerHub. Since the backend is live, we could even test the backend through the API specification on SwaggerHub, adding and removing users, tasks, etc.
What I learned
We learned about the Azure ecosystem, as well as all of the tools that Azure provides to make deployment easier. While we've individually programmed in Python and seen some work done in Django, we've never deployed into production before. Learning about how easily we can continuously deploy builds on Azure, as well as the flexible services that are provided, is something that will be of definite use in the future. We also learned about developing cross-platform UIs and how these apps are structured.
What's next for Day Flow
For the front end group, we need to complete screens and functionality for all user stories, as well as fix formatting issues among UI elements. For the backend group, we will need to finish implementing views for the rest of the endpoints, and then conduct unit testing and integration testing of the endpoints. Then, once the frontend is integrated with the backend, we can implement end-to-end testing as well.