The project includes building a web-based crowd-sourcing application where users can upload pictures, pin geotags and share their experience of different amusement parks. The application features include creating parks/posts/users, searching posts by tags, subscribing/unsubscribing to amusement parks and viewing the user's history of uploads.
- Bhargav Naik
- Gowtami Khambhampati
- Haoyang Li
- Saranya Nagarajan
This service hosts the backend which is a REST service which performs read write to mongo DB and serves JSON response. This will be a common service which will be used by frontend and mobile application for performing CRUD operations.
Package Contains all python Flask-Restful http resources which is used for implementing the CRUD API. All the Authentication and JSON validation can be done in this layer.
Package contains the business logic to handle the requests for the resources. Authorization checks and other business logic can be put in this layer.
Package contains the repository per entity which creates an abstraction layer between the data access layer and the business logic layer.
Package contains the database collections, fields and field constraints
Package contains all the Request, Response objects used to interact with backend microservice. We have used the marshmallow python package to eliminate boilerplate code required for serializing, deserializing json objects. These models are separated from the DB models and help us maintain a contract with the clients in case the DB the models changes in the future. We can version the models and take advantage of the API versioning that we have in place (/funtech//)
This service hosts the frontend and communicates with the backend REST service using http client to perform CRUD operations.
All the app routes for user, park, post are wired in this package using blueprints
Package contains all the http clients (Park, Post, User, Firebase) to make calls to the backend. We have used a Firebase client to upload/download images from the firebase cloud storage.
Package contains all the Request, Response objects used to interact with backend microservice. We have used the marshmallow python package to eliminate boilerplate code required for serializing, deserializing json objects.
Contains the *.css, *.js files required for the website
Contains the html file for the website. We have used Jinja templating for dynamic python pages.
Android app to view the Amusement parks and rides shared by user.
- It connects to the backend service to get the json data.
- It connects to the firebase for user login
- It connects to the firebase storage for uploading and downloading images
- Firebase Google SignIn: for implementing Single Sign In functionality
- Firebase Cloud Storage: for implementing upload/download image functionality
- Retrofit library drastically reduces the boilerplate code and make integration with backend(REST) service seamless.
- Picasso provides seamless support for displaying images.
- ImagePicker: library for integrating with camera and gallery to add pictures to post