/raveland

RaveLand is a platform where users can post raves and share their experience with each rave with comments and images. It is where ravers can come together and show their memorable nights.

Primary LanguageJavaScript

RaveLand

RaveLand is an open platform where users can share their experiences with raves that they have attended in the past or going to attend in the future. Users can view what other users have posted. They can also leave a comment on raves to share their favorite experience in that rave as well as pictures. The rave community is very welcoming and RaveLand definitely invites users to join.

Link to Live Site

Live Link: https://raveland.herokuapp.com/

Techs Used

Front End

react redux javascript html css heroku

Back End

nodejs express postgres sequelize aws

Screenshots

Log in Page ravelandlogin

Sign Up Page ravelandsignup

Home Page ravelandhome

Features List

https://github.com/JYi97/raveland/wiki/Feature-List

Database Schema

https://github.com/JYi97/raveland/wiki/Database-Schema

Technical Implementation

Using a random image URL from the web was not reliable because the images would not load consistently even with error validators added to the image URL input field. So I implemented AWS S3 for uploading and storing images. I had to install two packages in the backend: multer and aws-sdk. singleMulterUpload is a function that generates the middleware to convert the data from the form into readable files. This function accepts the key to which you expect the files to be saved in your database. In this case, it was photoUrl. This middleware is inserted into the POST routes and allows the file in the request to be readable under req.file. singlePublicFileUpload is an asynchronous function so it returns a promise. The promise returns the file URL that the user wanted to save in the database. The file URL should be saved under the key of photoUrl on the new Rave and Review. The thunk action creators accept an object of key value pairs and transform it into FormData entries to be sent with the request. Implementing AWS S3 created a smoother and consistent application because it reduced the server load. This allows the application to scale gracefully.

Implementing multer and aws-sdk

ravelandaws

Thunk for CREATE functionality of Rave feature

ravelandraveawsthunk

Rave

Any user will have access to read any raves that have been posted. A logged-in user will be able to create new raves, edit their raves, and delete their raves. All the inputs of the form for creating a new rave is required and will not create a new rave if any fields are empty or invalid. Uploading with an image is a lot easier because of the enhanced user-interface for users from implementing AWS S3. All the inputs of the form for editing a rave is required as well and will not go through an edit unless all the input fields are filled and valid.

Review

Any user will have access to read any reviews that have been posted. A logged-in user will be able to create new reviews, edit their reviews, and delete their reviews. All the inputs of the form for creating a new review is required and will not create a new review if any fields are empty or invalid. Same as the raves, reviews can only be edited if all the input fields for the edit form are filled out and valid.

Rave Search

Any user will be able to search for any raves that have been posted. They will be able to click on a result and be taken to its respective details page. It will fetch and persist all the raves stored in the database so that whenever the user searches something, the results are instant, creating a smoother user-interface.

Likes

Logged-in users will be able to like a rave on each rave page and view like status of each rave on the hhome page and all raves page.

Future Features

  • Google Maps API