A full-featured eCommerce platform for pet products with a React Frontend and a NestJS Backend, connected to MongoDB. This project demonstrates modern web development practices and architecture patterns in a complete, functional application.
The Monito eCommerce platform was built to create a complete online shopping experience for pet products and services. The application focuses on usability, performance, and design aesthetics while implementing best practices in software architecture and programming.
- Framework: React with React Router
- Build Tool: Vite
- Language: TypeScript
- Styling: Tailwind CSS
- Asset Management: SVG Integration with vite-plugin-svgr
- Package Manager: NPM
- Framework: NestJS
- Language: TypeScript
- Database ODM: Mongoose
- API Design: RESTful Architecture
- Package Manager: NPM
- MongoDB Atlas (Cloud-hosted)
- Product Category Browsing: Filter products by type, color, size, and gender
- Featured Products Display: Showcase of highlighted products on the homepage
- Detailed Product View: Complete product information with multiple image display
- Pagination System: Navigate through product listings efficiently
- Advanced Filtering: Filter products by various attributes
- Interactive UI Elements: Smooth animations on hover and state changes
- Image Gallery: Dynamic selection of product images
- Responsive Design: Works across multiple device sizes
The backend exposes the following REST endpoints:
- Description: Basic health check endpoint
- Response: Text confirmation that API is working
- Description: Retrieve products with optional filtering
- Query Parameters:
product(optional): Filter by product type (e.g., "Dog")exclude(optional): Exclude specific product type (e.g., "Dog")gender(optional): Filter by gender ("Male" or "Female")color(optional): Filter by colorsize(optional): Filter by sizepage(optional, default: 1): Page number for paginationlimit(optional, default: 10): Number of items per page
- Example:
GET /api/product?product=Dog&gender=Female&page=1&limit=6
- Description: Retrieve a specific product by SKU
- Path Parameters:
sku: The unique SKU identifier for the product
- Example:
GET /api/product/230
- Description: Create a new product (for admin use)
- Request Body: JSON object with product details (see example in requests.http)
- Authentication: Not implemented in demo version
Below is the folder structure of the Monito eCommerce project:
monito-fullstack-ecommerce/
βββ .gitignore
βββ LICENSE
βββ README.md
βββ requests.http # API request examples
βββ BackEnd/
β βββ src/
β β βββ main.ts # Entry point for NestJS application
β β βββ app.module.ts # Main application module that imports other modules
β β βββ app.controller.ts # Root controller handling base routes
β β βββ app.service.ts # Root service providing basic application functionality
β β βββ products/
β β βββ product.module.ts
β β βββ product.controller.ts
β β βββ interfaces/
β β β βββ IProductEntity.ts
β β βββ repositories/
β β β βββ product.repository.ts
β β βββ schemas/
β β β βββ product.schema.ts
β β βββ services/
β β βββ product.service.ts
β βββ nest-cli.json
β βββ package.json
β βββ tsconfig.json
β βββ tsconfig.build.json
βββ FrontEnd/
β βββ src/
β β βββ app.tsx # Main React application
β β βββ assets/
β β β βββ svgs/ # SVG assets
β β βββ components/
β β β βββ home/ # Home page components
β β β βββ product/ # Product detail components
β β β βββ products/ # Products listing components
β β β βββ utils/ # Shared UI components
β β βββ interfaces/
β β β βββ IProductEntity.ts
β β βββ pages/
β β β βββ home.page.tsx
β β β βββ product.page.tsx
β β β βββ products.page.tsx
β β βββ styles/ # CSS styles
β βββ public/
β β βββ fonts/ # Font files
β β βββ imgs/ # Image assets
β β βββ svgs/ # Public SVG files
β βββ index.html
β βββ package.json
β βββ vite.config.ts
β βββ tsconfig.json
βββ docs/ # Documentation
βββ folders.png
βββ home.png
βββ product.png- Node.js (version 18 or later)
- npm or yarn package manager
- Git
-
Clone the repository:
git clone https://github.com/yourusername/monito-fullstack-ecommerce.git cd monito-fullstack-ecommerce -
Install Frontend Dependencies:
cd FrontEnd npm install -
Install Backend Dependencies:
cd ../BackEnd npm install
-
Start the Backend Server:
cd BackEnd npm startThe API will be available at http://localhost:3101/api.
-
Start the Frontend Development Server (open a new terminal):
cd FrontEnd npm run devThe frontend will be available at http://localhost:5173.
The application is pre-configured to connect to a MongoDB Atlas database with a read-only user. No additional database setup is necessary.
This project is licensed under the MIT License - see the LICENSE file for details.