To be part of my professional portfolio, I have created this full-stack application that highlights my expertise in React, Redux, TypeScript, OAuth 2.0, and NodeJS technologies. This project reflects my passion for technology and my dedication to enhancing my skills in full-stack development. As a practice project, it demonstrates my ability to deliver high-quality products and my commitment to staying current with the latest industry trends and advancements.
Social Bookshelf is a website where you can find books, add them to your collection, rate them, mark them as favorites, update your reading progress and save your current page. It's like a virtual bookshelf where you can keep track of all the books you read.
In addition, Social Bookshelf allows you to browse the reading choices of other users, follow their accounts, and add their literary picks to your personal collection.
As this project uses mongodb database, google books api and google authentication, you will need to configure the following variables in a .env
file inside the server folder:
Obs.: I will leave the variables with some examples but you need to change with your details.
- Port for the server:
PORT=8000
- MongoDB database:
MONGO_URL='mongodb://localhost:27017/social-bookshelf'
MONGO_URL can be a local database or MongoDB Atlas.
- URL where your front end is running:
CLIENT_URL='http://your-react-client.com' or 'http://localhost:3000'
GOOGLE_BOOKS_KEY='type your key here'
GOOGLE_BOOKS_API='https://www.googleapis.com/books/v1/volumes'
GOOGLE_CLIENT_ID='Your google client id'
GOOGLE_CLIENT_SECRET='Your google client secret'
- Cookie keys for cookie-session:
COOKIE_KEY_ONE='qWERadfAgASdgGHwhweR'
COOKIE_KEY_TWO='adsFsdfASDfasDFFSAfg'
Obs.: These cookie keys can be any random sequence of characters.
Inside the client folder you will need to create another .env
file with the following variable:
- URL where your api/server is running:
REACT_APP_API_URL='http://your-server.com:8000/api/v1' or 'http://localhost:8000/api/v1'
To install and run the project, execute the following commands in your terminal:
-
npm install
-
npm run build
- npm run watch-client
-
npm install
-
npm run build
-
npm run watch-ts
-
npm run watch-server