inthelamp / book-reviewer

Book Reviewer based on MERN stack, writing and reading book reviews

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Book Reviewer

Book Reviewer is a learning project to obtain knowledge and skills about the MERN stack by testing and experiencing the JavaScript Stack in a Web development cycle. Book Reviewer won't only be a learning project but also a bridge to connect to other projects using cloud computing and Artificial Intelligence (AI). I will apply knowledge, skills, and technologies acquired through this project to my future projects.

Book Reviewer offers good examples for beginners who want to use the MERN stack for their software development. MERN stack is a web development framework using MongoDB, ExpressJS, ReactJS, and NodeJS technologies. As a software developer who gets used to seeing program codes written in C#, Java, and C++ with SQL(Structured Query Language), and developing Web applications with .Net framework, MERN stack brought me quite a different experience.

MongoDB is not one of the ordinary database systems(DBMS) which use SQL and manipulate tables and rows. Instead, MongoDB presents MQL(MongoDB Query Language) and stores data in JSON format. However, it provides CRUD operations as other database systems do. CRUD is an essential feature of DBMS, answering to why we need the DBMS. Mongoose is an object-relational mapper for MongoDB as the Entity Framework of .NET does for MS SQL in modeling the application data.

NodeJS is an asynchronous event-driven JavaScript runtime and capable of developing scalable network applications. Fortunately, We don't use NodeJS directly but use ExpressJS, which provides us with APIs to employ the capability of NodeJS for implementing Web applications. For this project, NodeJS, ExpressJS, and Mongoose create and manage a server node that transfers requests from clients(front-end applications) to MongoDB and reversely transfers results from MongoDB to the clients. The clients communicate with the server node using RESTful APIs.

In adapting to the MERN stack, learning React and other JavaScript libraries can be a challenge. React is a JavaScript library helping to build user interfaces and using virtual DOM to support traditionally client-side rendering. It might be a very different approach to developers who used to do server-side rendering. They might also feel it like spaghetti because of its state management, even if React pursuits component-based design. In addition to handling the state, they recognize soon that they can't develop front-end applications using React without other open-source JavaScript libraries such as Redux, Redux Thunk, axios, Slate, Lodash, and Eslint based on functions they want to implement. Learning Redux is probably more difficult than learning React itself.

Book Reviewer follows MVC design pattern.

alt text

You can find the following examples in Book Reviewer.

  • Header with a navigation bar
  • Home page
  • Sign-up by sending a verification email
  • Activating user account with six digit-authentication code
  • Sign-in with JWT token
  • Sign-out With JWT token
  • Saving data to MongoDB
  • Retrieving data from MongoDB
  • Cookie
  • ExpressJS Router
  • Mongoose
  • React Hooks
  • Redux Hooks
  • Redux Thunk
  • Redux DevTools
  • Slate RichText
  • Slate ReadOnly
  • Bootstrap
  • axios
  • prop-types
  • Eslint
  • Unit, integration, and snapshot testing with Jest and Enzyme
  • Dockerizing MERN stack app with Nginx

Book Reviewer for ASP.NET Core MVC is available.

About

Book Reviewer based on MERN stack, writing and reading book reviews

License:MIT License


Languages

Language:JavaScript 96.0%Language:CSS 2.3%Language:Dockerfile 1.2%Language:HTML 0.5%