Click me
Traveling is a ubiquitous part of human life, offering a chance to unwind and recharge. However, planning a trip thoroughly can be quite challenging. I've often wished for a tool that could streamline the planning process, so I've taken it upon myself to create one.
This project is a "Travel Planning Website" developed using front-end and back-end technologies. Users can share their travel experiences, save and like attractions posted by others, and use these attractions to plan their trips. Additionally, users can find travel companions through the website.
I've completed the essential features that I designed for the project, but it's still in its early stages of development. Therefore, feel free to share any feedback or suggestions you may have. I hope you enjoy using it!
With this website, you can:
-
Share your memorable experiences from trip spots, such as exquisite restaurants or scenic viewpoints.
-
Utilize the spots you've saved or created to craft new trip plans.
- React - Frontend framework for creating user interfaces
- React-Router-dom - Routing & navigation
- Bootstrap - User interfaces libraries
- Node.js - Runtime environment for JS
- Express.js - Node.js framework for building RESTful APIs
- MongoDB-Atlas - Multi-Cloud Database Service
- Mongoose - MongoDB object modeling tool designed to work in an asynchronous environment
- Passport.js - Authentication middleware for Node.js
- Passport-google-Oauth2.0 - Authenticating with Google using the OAuth 2.0 API
- Passport-JWT - Aauthenticating with a JSON Web Token
- Bcrypt.js - Library to help hash passwords
- Joi - Schema description language and data validator for JavaScript
- Multer - Middleware for handling image uploaded
- Imgur - Third-party API for saving image
- Redis - In-memory database for server side cache and rateLimit
- Object-hash - Generate hashes for query
- Mocha - JS test framework for quality assurance
- Chai - Assertion library
- SuperTest - JS library for testing RESTful APIs
This is an example of how to list things you need to use the software and how to install them.
- Clone this project to your local enviroment.
git clone https://github.com/Samuel-Fan/Pick-Go-project.git
- Move to client folder
cd client
- Install required packages
npm install
- add an .env file in the client folder
touch .env
- Set enviroment variable
REACT_APP_API_URL='http://localhost:<Your server port number>'
- Run it
npm start
-
You need to get your Imgur APi key.
-
You need to get GCP auth2.0 key if you want to use Google Authentication.
-
You need to get your Redis key. (https://app.redislabs.com)
-
Move to server folder
cd server
- Install required packages
npm install
- add an .env file in the server folder
touch .env
- Set enviroment variable
MONGODB_URL= <Your MongoDB URL>
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
REDIRECT_URI='http://localhost:<Your client port number>'
SERVER_URI='http://localhost:<Your server port number>'
IMGUR_CLIENTID=
IMGUR_CLIENT_SECRET=
IMGUR_REFRESH_TOKEN=
IMGUR_ALBUM_ID=
REDIS_PASSWORD_USER=
REDIS_PASSWORD_OTHER=
- And you have to set redis client in '/server/src/config/redis.js'
const redisClient_user = createClient({
password: process.env.REDIS_PASSWORD_USER,
socket: {
host: <Your host String>,
port: <Your port>,
},
});
- Run it
npm start
- You have to run the server first
cd server
npm start
- Run test
npm test
Email - [email protected]
Linkedin: linkedin-url
Project Link: https://github.com/Samuel-Fan/Pick-Go-project
Website Link: https://pickgo.site/