CabinGo is an application where users can post spots to host or book spots.
- Link to live CabinGo project.
Technologies used within the project:
- bcryptjs: Version 2.4.3
- cookie-parser: Version 1.4.6
- csurf: Version 1.11.0
- cors Version 2.8.5
- debug: Version 2.6.9
- express: Version 4.17.2
- express-validator: Version 6.14.0
- express-async-handler Version 1.2.0
- helmet: Version 5.0.1
- jsonwebtoken Version 8.5.1
- morgan: Version 1.10.0
- per-env: Version 1.0.2
- pg: Version 8.7.1
- sequelize: Version 5.22.5
- sequelize-cli: Version 5.5.1
- dotenv: Version 10.0.0
- dotenv-cli: Version 4.1.1
- nodemon: Version 2.0.15
- React
- Redux
- Postgres
- Sequelize
- SQL
- Heroku
- JavaScript
- CSS
To install CabinGo on your local machine please clone the project repository. Once the project has been cloned run npm install in your terminal to install dependencies.
git clone https://github.com/GoodWillHunting11/CabinGo.git
cd backend
npm install
npm start
Once the project has been clonde cd into the frontend and run npm install in your terminal to install the frontend dependencies.
cd frontend
npm install
npm start
To use the application in a development environment use npm start in the frontend and the backend to start the application..
This project was developed by Aaron Short. Below are the top two features of the project and a brief descriptions of challenges faced during the one week developmet cycle.
- Rendering Amenities: The implementation of rendering amenities displays only the amenities that return true for the spot that was created. This feature was implemented using optional chaining and a few nested ternarys.
- Edit Spot Form: The edit spot form allows you to edit details of a certain spot only if the logged in user who created that spot is logged in. This feature was implemented using redux and local storage to keep state on a refresh. Every detail of the spot can be updated without a rerender using react.
- This project did not require me to keep state on refreshes but I decided for better user experiments to implement it. For this I had to do some research into optional chaining on components that depended on state and local storage.
- During the styling phase it was a little more difficult to style elements that were using state and learning their behaviors to flow smoothly with the normal elements.
- Correlating the backend with the store and the frontend. There was a learning curve for how the data flowed and learning the pattern of this flow. Ultimatley it came down to using console.log to understand how each section communicated with eachother.