To install the project dependencies, you can run the following command:
-
Clone the repo - In your terminal:
-
Set up MongoDB instance and Configure environment variables.
-
Navigate to the root dir.
-
Install the dependencies for both the frontend and backend:
npm run install
-
Run the app - This command will start both the frontend and backend servers concurrently:
npm run dev
StoicReads is a book rating and sharing application. This repository contains both the backend and frontend code for the application.
https://www.youtube.com/watch?v=TeoeFkO_GTg
- TypeScript
- Node.js
- Express.js
- MongoDB with Mongoose
- JSON Web Tokens (JWT) for authentication
- Swagger for API documentation
- Jest for unit testing
- React with Vite
- Google client O2Auth
- Google Books API for books data
- Material UI
-
Authentication
- User registration and login by username and password
- Registration via Google
- JWT authentication with Refresh token
- Persistent login sessions
- Logout functionality
-
User Details
- Display user information including photo
- Editing user information and photo
-
Content Presentation
- Display content from an external REST source of Google Books API. This will include title, author name, and cover image.
-
Content Sharing
- Upload text and picture content
- View uploaded content
- Update and delete uploaded content
- View own uploaded content
-
Comments
- Users can comment on others' content
- Comments displayed separately with count on main screen
-
Git Usage
- Utilize Git for version control with individual user profiles
- Make small, descriptive commits
-
API Documentation
- Documented API endpoints using Swagger
-
Unit Testing
- Unit tests written for all server APIs using Jest
-
TypeScript
- Entire project written in TypeScript
-
Image Storage
- Images saved on server, not in database or external service, using Multer
-
Deployment
- Application deployed on a server accessible from anywhere
- HTTPS enabled
- Application runs in background with PM2
- Production mode configured using
NODE_ENV=production
- MongoDB used on server with protected connection
- Entry to the application through specified domain
- No external hosting services used