cmaija / ParkHangs

CPSC 436i Group Project
1 stars 1 forks source link

ParkHangs

https://parkhangs-webapp.herokuapp.com

ParkHangs is an all-in-one platform that allows users interact with all official Vancouver, British Columbia Parks. Users can get detailed information about a specific park, save favourite parks (if they are logged in), create and integrate events to their own calendar application, as well as write comments about parks and events.

CPSC 436i Group Project

Who is it for?

Our web application is intended for people who want to enjoy the Vancouver public park system. For people who want to organize a pickup game of basketball, check what facilities are available so they can plan before they go, see which parks are rated the best, and see what other users have to say about the park. Our application is available to both signed-in and non signed-in users.

What will it do? (What "human activity" will it support?)

This platform will allow users to organize meetups at Vancouver parks, write comments about parks/events, filter parks by fields, determine the closest parks to them, or to a place they want to go, and make information about a park easily accessible.

What type of data will it store?

All 216 Vancouver parks and their information, user-generated events, park and event comments. We also store user information (through OAuth-based Google Sign-in) such as their name and email.

What will users be able to do with this data?

View information about a particular park, view events that other users make at parks, create new events, write comments about a park or an event, and filter parks by information like parks near a certain address, what facilities are at a park, etc).

What is some additional functionality you can add/remove based on time constraints?

One stretch goal is to make the web application responsive to mobile and desktop users. Another stretch goal is to update park information occasionally using a cron job in case information about park changes and our app will be able to show the latest details about a park.

Project task requirements:

3-5 minimal requirements (will definitely complete)

3-7 "standard" requirements (will most likely complete)

2-3 stretch requirements (plan to complete 1!)

Pick 2 of your minimal requirements and break each of them down into ~2-5 smaller tasks!

Course technologies used

All the technologies that we learned in this course are utilized in our project:

HTML/CSS/JavaScript

We utilized HTML/CSS throughout our application (with React) for displaying/styling components, views. JavaScript was used in the frontend and backend to write methods such as for display logic, manipulate objects etc.

React/Redux

React was used to create all the components that we used in our application. We used Redux Toolkit for state management.

Node.js/Express.js

We used these two for building the backend. Our frontend interacts with the endpoints and the backend interacts with the database. Database operations (GET/POST/DELETE/PATCH) are supported depending on the collection.

MongoDB

We included Mongoose as well. We used MongoDB Atlas as our backend cloud database storage of information. We had collections including parks, users, events, park comments, and event comments.

Release Engineering

We deployed our application using Heroku.

Above and Beyond

We integrated a calendar package and customized it to allow for better visual representation for ease of scheduling events, as well as improved User Experience through interactivity. By incorporating OAuth-based Google Sign-in, we provide a simple way for users sign-in without registration and the ability for users to view a clear overview of their personal saved parks and events.

We incorporated a feature to allow for the events in the application to be exported to other commonly used calendars such as Google calendar, and we believe this adds an extra level of practicality for users to remember the event.
In addition, the use of Redux-Toolkit allows our code to ‘mutate’ immutable update logic in an organized slice of state, as well as include commonly used Redux addons such as Redux Thunk for effective code writing.

The filter park functionality is also one of the features we are most proud of for this project. This filter enables users to filter parks on the map by features, as well as the ability to find parks by address and around a certain radius. A lot of work went into this feature and this gives an extra layer of practicality to our application.

Next Steps

List of Contributions

Lydia Zheng:

Gordon Zhang:

Claire Anderson

Philippe Chapdelaine

Sketches of Main Functionality

Main Functionality Map Page With Filter Map Page With Filter Calendar Page Calendar Page Park Features Park Features User Profile Page User Profile Page