Around the U.S. is a full stack project that features a responsive social network website where a user can have a collection of the pictures of his journey around the US. The webpage interacts with the API endpoints using REST API calls hosted on a backend server.
- A new user can register.
- A registered user can login and logout.
- When the page loads, all the existing image cards load from the server.
- When the page loads, the current user's name and about info are loaded from the server.
- User can edit and save his profile details to the server.
- User can update his avatar by uploading a new image to the server.
- User can like or unlike the images. The status is stored on the server.
- User can view the number of likes on an image card.
- User can add a new card with the title and the link for the image. The new card is stored on the server.
- User can delete the image cards that he has added, if he wishes to. The card would be deleted from the server too.
- User can also have a closer look of the images by clicking on them.
- Live input validation on all the forms.
- Users can close the popup by clicking on the overlay, i.e. anywhere outside the popup's borders.
- Users can close the popup by pressing the Esc key.
- HTML (Hyper Text Markup Language)
- CSS (Cascading Style Sheets)
- React.js
There are various tools that have been used throughout the project design and development:
Tools | Usage |
---|---|
Figma | For referring to the product design specification |
TinyPng | For JPEG/PNG Image Compression |
SVGOMG | For refining and compressing SVGs |
Webpack | For bundling all the ES modules |
Babel | For transpiling JS code |
The main concepts that have been emphasized are:
- Responsive Web Design
- CSS Grid
- CSS Flexbox
- BEM Specification
- Git Conventional Commits Specification
The backend API has been developed in Node.js using Express Framework.
The main packages that have used throughout the backend API development and deployment:
Packages | Usage |
---|---|
bcryptjs | For encrypting password |
celebrate | An express middleware function that wraps the joi validation library |
express-winston | Provides middlewares for request and error logging of express application |
jsonwebtoken | Helps in generating, comparing and verifying the JWTs |
validator | Validates and sanitizes strings |
winston | Universal logging library |
pm2 | Production process manager with a built-in load balancer |
Apart from the above listed packages, we have used MongoDB as our database, NGINX as a reverse proxy server and Let's Encrypt to get SSL certificates to create an encrypted connection and establish trust.
HTTP Methods | REST API Endpoint | Purpose |
---|---|---|
POST |
/signup |
Registers a user |
POST |
/signin |
Login a user |
GET |
/users |
Get JSON list of all the users |
GET |
/users/:userId |
Get a specific user profile with an ID |
POST |
/users |
Create a specific user profile |
PATCH |
/users/me |
Update the current user profile |
PATCH |
/users/me/avatar |
Update the current user avatar |
GET |
/cards |
Get JSON list of all the cards |
POST |
/cards |
Create a new card |
DELETE |
/cards/:cardId |
Delete a card by the given ID |
PUT |
/cards/:cardId/likes |
Update a card by liking it |
DELETE |
/cards/:cardId/likes |
Delete a like on the card |
Visit the complete React application - here
Visit the complete Backend API - here