A modern, full-stack e-commerce platform for plant enthusiasts built with React, Node.js, and MongoDB.
Live link : Plantopia
For testing admin features:
- Email:
admin.plantopia@gmail.com - Password:
Plantopia
- Product Catalog: Browse plants, tools, fertilizers, soils, pottery, and seeds
- Shopping Cart: Add, update, and remove items with persistent storage
- Checkout System: Secure payment processing with Stripe integration
- Order Management: Track orders, view order history, and order status updates
- Wishlist: Save favorite products for later purchase
- Authentication: Firebase-powered login/register with Google OAuth
- User Profiles: Customizable profiles with image upload
- Role-Based Access: Admin and customer role management
- Order History: Complete purchase history with detailed order information
- Product Management: Add, edit, and delete products across all categories
- Order Management: View, update order status, and manage customer orders
- User Management: View registered users and their details
- Blog Management: Create, edit, and delete blog posts
- Analytics: Overview of orders, users, and inventory
- Responsive Design: Optimized for desktop, tablet, and mobile devices
- Search & Filter: Advanced product search and filtering capabilities
- Product Reviews: Customer reviews and ratings system
- Blog System: Educational content about plant care and gardening
- Image Upload: Multiple image uploads for products and profiles
- Real-time Updates: Live cart updates and order status changes
- Image Optimization: Cloudinary integration for image storage and optimization
- PWA Ready: Progressive Web App capabilities
- SEO Optimized: Proper meta tags and structured data
- Error Handling: Comprehensive error handling and user feedback
Modern, responsive homepage with featured products and categories
Browse products with advanced search and filtering capabilities
Intuitive shopping cart with quantity controls and price calculations
Secure checkout with Stripe payment integration
Customizable user profiles with order history and account management
Comprehensive admin panel for managing products, orders, and users
Efficient order tracking and status management system
Educational blog posts about plant care and gardening tips
Detailed product pages with images, descriptions, and customer reviews
- React 18 - Modern React with hooks and functional components
- Vite - Fast build tool and development server
- React Router - Client-side routing
- Tailwind CSS - Utility-first CSS framework
- Framer Motion - Animation library
- React Icons - Icon library
- Axios - HTTP client for API calls
- Node.js - JavaScript runtime
- Express.js - Web application framework
- MongoDB - NoSQL database
- Mongoose - MongoDB object modeling
- JWT - JSON Web Token authentication
- Multer - File upload middleware
- Cloudinary - Image storage and optimization
- Firebase Auth - User authentication with Google OAuth
- Stripe - Payment processing
- Netlify - Frontend hosting
- Vercel/Railway - Backend hosting
- MongoDB Atlas - Database hosting
- Node.js (v18 or higher)
- npm or yarn
- MongoDB (local or Atlas)
- Firebase project
- Stripe account
- Cloudinary account
git clone https://github.com/yourusername/plantopia.git
cd plantopiaFrontend:
cd Plantopia-Client
npm installBackend:
cd Plantopia-Server
npm installCreate .env files in both client and server directories:
Client (.env):
VITE_API_ADDRESS=http://localhost:3000
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
VITE_FIREBASE_PROJECT_ID=your_firebase_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket
VITE_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id
VITE_FIREBASE_APP_ID=your_firebase_app_id
VITE_STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_keyServer (.env):
PORT=3000
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
STRIPE_SECRET_KEY=your_stripe_secret_key
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secretStart Backend:
cd Plantopia-Server
npm run devStart Frontend:
cd Plantopia-Client
npm run devThe application will be available at http://localhost:5173
- Browse Products: Explore different categories of plants and gardening supplies
- Add to Cart: Select products and add them to your shopping cart
- Checkout: Complete purchase with secure Stripe payment
- Track Orders: Monitor order status and delivery updates
- Reviews: Leave reviews and ratings for purchased products
- Login: Use admin credentials to access admin dashboard
- Manage Products: Add, edit, or delete products across all categories
- Process Orders: View and update order statuses
- Content Management: Create and manage blog posts
- User Management: View registered users and their activities
POST /api/auth/login- User loginPOST /api/auth/register- User registrationPOST /api/auth/google- Google OAuth
GET /api/plants- Get all plantsGET /api/tools- Get all toolsGET /api/fertilizers- Get all fertilizersGET /api/soils- Get all soilsPOST /api/plants- Create new plant (Admin)PUT /api/plants/:id- Update plant (Admin)DELETE /api/plants/:id- Delete plant (Admin)
GET /api/orders- Get all orders (Admin)GET /api/orders/:userId- Get user ordersPOST /api/orders- Create new orderPUT /api/orders/:id/status- Update order status (Admin)
GET /api/users- Get all users (Admin)GET /api/users/:id- Get user profilePUT /api/users/:id- Update user profile
GET /api/cart/:userId- Get user cartPUT /api/cart/:userId- Update user cartGET /api/users/:userId/wishlist- Get user wishlistPOST /api/users/:userId/wishlist- Add to wishlistDELETE /api/users/:userId/wishlist/:productId- Remove from wishlist
- Build the project:
npm run build - Connect your repository to Netlify
- Set environment variables in Netlify dashboard
- Deploy with build command:
npm run build
- Connect your repository to hosting platform
- Set environment variables
- Deploy with start command:
npm start
- Create MongoDB Atlas cluster
- Configure network access
- Update connection string in environment variables
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request