The project is a social media platform that allows people to share their travel experiences, ideas, and journals. People usually read travel suggestions from blogs, articles on random sites, or scattered posts from different social media platforms, but GO TRAVEL intends to be a go-to place for all those information. For tourists who are willing to travel accross North America, they can see landscape posts based on the pin on the map they choose. Heat map will highlight the most popular city and tourists can like the posts they viewed.
Go Travel used CSS both directly and indirectly to style various components throughout the application, which includes buttons, input box, icons, and transitions based on user behavior with unified style. While we want to create a unique style for the website and be able to adjust to meet our expectation, we didn't choose any public CSS such as Material UI or others. Using CSS inside styled-components makes our React components more readable and uniform. CSS was easier to use for styling than HTML, along with adding design and flexibility to make the UI appear much more stylish and conveniently placed for users.
Go Travel used React to build the client-facing side of the app. We used components to reduce code duplication and reuse components throughout the app. It was fairly convenient to use hooks in order to achieve complex functionality and response on the page, and also the Redux to easily store and access authentication and application-wide data.
Go Travel used Node.js and Express to build out the backend for our application. Node and Express allowed us to operate CRUD behaviors on post data and user info via sending requests. After creating models for our MongoDB database, we are able to send requests with formatted information to the database using Express. Since Express is a minimal framework that builds off of Node, it is easy to use and allowed us to quickly use robust routing, error handling, and middleware on the server side.
Go Travel uses a MongoDB backend with custom schemas to store users, posts, and cities information. The flexible nature of NoSQL allowed us to plan a way that we wanted to store information, and make requests to the stored information in the MongoDB Atlas cloud database. With document-based query language and JSON-style information storage, working with and querying the data in our database was quicker and easier than would have been possible using traditional SQL storage considering our documents do not all have a standard layout.
Go Travel uses git and GitHub for version control, with collaborators using different branches to write enhancements and fix bugs. We only push changes to the "main" branch after collaborators manually test enhancements to ensure there are no new bugs introduced. We set up an admin email with a new Heroku account, configuring the "main" branch to automatically deploy changes to the production build through Heroku because Heroku is a simple to use platform that team members were familiar with, and it contains GitHub integration.
Since post data were included in city data, it was hard and slow to operate on single post. Therefore, we decide to take a week to split these two types of data and use id to connect them in between and among other modification on the front-end due to this change.
While building the project, we were struggling with an async issue between rendering the page with old data and fetching the new data, since fetching would take longer when we have images. In the end, we managed to use a status state and a loading component insert in between to fix the issue.
Our App is mainly location based, so location should be typed correctly, wrongly typing could cause data error when adding posts. Then we need auto-complete for location information. We have tryed two APIs first but either is too complicated or encounter some rendering issue. After a long perioud of doucument searching, we finally found google-map API itself has auto-complete component. And useState cannot perfect fit to store location information, we figure out that useRef hook could fix this
Refactor cities Model in server, saparate Posts from cities.
Implement get, add, and delete Post in server side.
Create Post reducer in redux. And linked it with server side.
Create databse and connect it with server.
Add like count in Post detail.
Implemented the user system for users to manage their information and posts. Inculding server&Redux work of Signup/Login/Editinformation/ChangePassword/likePost
Connect the user system to other parts with authorizion check to enhance security.
Create user databse and connect it with server.
Refactor Cities, seperate it from posts in order to make operations make more sense.
Backend work of search feature. Handle the geolocation of post and part of dataflow.
See pdf gotraveldesign