The Safety app is a project that I colaborated on as a capstone/internship for the Sanford School of Social and Family Dynamics.
Scroll down for more info!
(School Assessment for Enviromental topology)
The SAfETy App was a year long Android Studio project aiming to improve school safety. Studies have shown that the enviroment of schools plays a huge role in student safety. This app helps by keeping the data organized and accessible.
The Safety app had previously been worked on by another group of students. Our goal was to take what they had implemented and improve it.
Our major goals were:
-Add User Authentication via AWS (Amazon Web Services)
-Save Data to the cloud via AWS
-Adding Photo functionality
-Revamp the user interface
-Implement ability to print all data inside the app
My role, besides Scrum Master, in the project was mainly working with the SQLite database and DynamoDB from AWS. I also helped with UI, data management, and other AWS integrations.
Implementing "Cognito" via AWS
When we first got access to the application, there was no authentication at all. users could simply type anything into the login fields and they would gain access to the app. We implemented Amazon's "Cognito" API to allow users to create and verify accounts. User accounts were stored
Storing information in DynamoDB
In order for the app to be effective, we needed the ability to upload the user information to the cloud. This would allow users from the same school to share walkthough information in real time. To implement this feature we used DynamoDB along with other AWS api's to store the infromation on the cloud.
We also wanted the ability to take pictures of the "problem". To integrate this feature I used an open source API called Picasso, along with the stock Android photo functinality. We wanted the pictures taken to be shared across users too so I implemented Amazon's "S3 Bucket" to upload and download the files. This was acheived by storing the directory of each picture to a String value in the SQL database, This String would be accessed as the user logged in and would download the pictures to the correct location.
In order to increase speed and money for server storage, I also made sure to compress the photos before uploading.
Exporting Data in a readable format
Our sponsor expressed the need to be able to take the information from inside the app and export it. Some faculty memebers in the school will not have access to the app. Printing out all the information in the database allows those people to have access to the information.
While brainstorming how to implement this feature I started to use an API that would allow me to generate a PDF document. I was able to get this working however the API was not free and I had limited control over how the document looked.
After discussing this in a stand up meeting we decided to take another approach. Android has the ability to create "Web Views" that essencially just display a web page. After realizing that these "Web Views" had a built in print function I knew that this was a much better option. I rewrote my methods to make database calls and generate an HTML document containing all of the information.
This ended up being a much better solution and compelety free due to not using a 3rd party API.