Overview:
This is a project for CS-480: Software Engineering class by SoundsNeat team.
Goal:
The goal is to calculate the safety level of any city within United States.
Name:
Am I Safe Here? www.amisafehere.xyz
Technologies:
- Java Spring as Web Server (Backend Engine)
- Bootstrap's CSS and JS library as response front end design
- Angular JS to communicate to server
- Template from StartBootstrap.com for UI
- Teleport JavaScript from MIT for better UX at getting city, state, country
- Plotly JavaScript graphs to display statistics as a better UI
- JSON format to transfer data
- MAVEN as project management and comprehension tool
- Amazon EC2 as a server
- Jenkins for easier continuous integration.
- Git as a Source Control
- HTML5 Geolocation to get coordinates
- Google API to convert coordinates to address
- Google Map API to display the selected city.
- JUnit as Unit Tests
- http://www.city-data.com/ to get the crime statistics for selected cities
Constraints:
- Unable to use GoogleChrome for auto detection. Chrome does not allow geolocation for websites without SSL. Hence it is not supported. => Possible Fix: add SSL certificate
- No data for some cities. Since this project uses city-data.com, some of the cities which are not in that website are impossible to calculate. => Possible Fix: used a more reliable data possible connected to police stations.
- Different naming conventions between Teleport JS and city-data.com Since they are 2 different source, some of the cities have different naming conventions ex: New York City vs New York. => Fix: Have a running list of different cities objects to replace with the correct name. Currently, it is a static List which needs to be redeployed whenever it is updated. It can be improved by reading from a file.
Future Goals:
- Update to a more reliable data source.
- Use locality such as neighborhood as safety level of a city is a generalization when cities are too big.
- Add comparison feature to compare against other cities.
- Create a database and populate the data every month.