_______ _ _ ____ _
|__ __| (_) |/ __ \ | |
| |_ __ __ _ _| | | | |_ _ ___ ___| |_
| | '__/ _` | | | | | | | | |/ _ \/ __| __|
| | | | (_| | | | |__| | |_| | __/\__ \ |_
|_|_| \__,_|_|_|\___\_\\__,_|\___||___/\__|
TrailQuest is an app for finding cool trails to hike (currently in Washington State only). Finding good information about local trails can be tedious, so TrailQuest makes it easy. The app allows users to search for any trail in Washington by region and by description. Registered users can review trails that they have had the opportunity to hike, and share their insights with other users.
The community element to the application allows for users to organize group hikes that other users can register for.
There was not enough robust data available on Washington State trails available in a public API for me to build this project. All of the data made available in this application was gathered using a custom web scraping program that I wrote in Node using an NPM package called Cheerio.
The scraping script 'hikeScraper.js' can be found in the 'scraper' directory of this repository. The script parses the Washington State Trails Association website where it gathers the URLs for every single hike in their database. After gathering all of the web addresses for each individual hiking trail, it then loads the HTML from every individual URL and creates a trail object for each page, where the key values are either textual information or various data attributes from DOM nodes which are displayed on the pages which have been parsed.
This application was deployed using Heroku with the create-react-app build-pack. The create-react-app
buildpack can be found here: create-react-app buildpack. The database is hosted using the Heroku PostgreSQL addon.
Front End
- React
- react-router v3
Server
- Node
- Express
Database & Server Queries
- Knex
- PostgreSQL
- Google Maps API
- Cloudinary API
- TrailQuest Restful API
- bCrypt
- morgan
- body-parser
- jsonwebtoken
- boom
- cookie-parser
- react-bootstrap
- Axios
- react-google-maps
- react-datepicker
Rebuild with Redux and Redux Sagas for state management. Rebuild as a Universal application with Next.js. Implement PropTypes and type checking.
To contrbute to this open source project, please fork and clone this repository, then submit a pull request.
SEE 'LICENSE'(MIT)