Plantify is a modern, full-stack e-commerce platform dedicated to plant enthusiasts. Built with cutting-edge web technologies, it provides a seamless shopping experience for indoor plants, gardening supplies, and plant care accessories.
- Create an intuitive plant shopping experience
- Provide comprehensive plant care information
- Build a community of plant lovers
- Offer secure and reliable e-commerce functionality
- Plant enthusiasts and collectors
- Home gardening beginners
- Interior design enthusiasts
- Urban gardeners and apartment dwellers
Plantify/
βββ π frontend/ # React frontend application
β βββ π public/ # Static assets
β β βββ π assets/ # Product images and media
β β β βββ π anthrium/
β β β βββ π bamboo-palm-plant/
β β β βββ π brazilwood-plant/
β β β βββ π jade-plant-mini/
β β β βββ π lucky-bamboo/
β β β βββ π monstera/
β β β βββ π monstera-xl/
β β β βββ π peace-lily-plant/
β β βββ π index.html # Main HTML template
β βββ π src/ # Source code
β β βββ π components/ # Reusable UI components
β β β βββ π AuthModal.jsx # Authentication modal
β β β βββ π ForgotPassword.jsx # Password reset form
β β β βββ π Header.jsx # Navigation header
β β β βββ π Login.jsx # Login form
β β β βββ π ProductCard.jsx # Product display card
β β β βββ π Register.jsx # Registration form
β β βββ π contexts/ # React Context providers
β β β βββ π AuthContext.jsx # Authentication state
β β β βββ π CartContext.jsx # Shopping cart state
β β β βββ π SearchContext.jsx # Search functionality
β β βββ π pages/ # Main application pages
β β β βββ π Home.jsx # Homepage with products
β β β βββ π ProductDetail.jsx # Individual product page
β β β βββ π Profile.jsx # User profile page
β β β βββ π ResetPassword.jsx # Password reset page
β β βββ π services/ # API communication
β β β βββ π api.js # HTTP client and endpoints
β β βββ π App.jsx # Main application component
β β βββ π main.jsx # Application entry point
β βββ π package.json # Frontend dependencies
β βββ π tailwind.config.js # Tailwind CSS configuration
β βββ π vite.config.js # Vite build configuration
β
βββ π backend/ # Node.js backend application
β βββ π config/ # Configuration files
β β βββ π database.js # MongoDB connection setup
β βββ π controllers/ # Business logic controllers
β β βββ π cartController.js # Shopping cart operations
β β βββ π orderController.js # Order management
β β βββ π productController.js # Product CRUD operations
β β βββ π userController.js # User authentication & profile
β βββ π middleware/ # Custom middleware functions
β β βββ π auth.js # JWT authentication middleware
β β βββ π validation.js # Input validation middleware
β βββ π models/ # MongoDB data models
β β βββ π Cart.js # Shopping cart schema
β β βββ π Order.js # Order schema
β β βββ π Product.js # Product schema
β β βββ π User.js # User schema
β βββ π routes/ # API route definitions
β β βββ π cart.js # Cart-related endpoints
β β βββ π orders.js # Order-related endpoints
β β βββ π products.js # Product-related endpoints
β β βββ π users.js # User-related endpoints
β βββ π scripts/ # Utility scripts
β β βββ π addSingleProduct.js # Add individual products
β β βββ π checkUser.js # User verification script
β β βββ π testEmail.js # Email service testing
β β βββ π testForgotPassword.js # Password reset testing
β βββ π seeders/ # Database seeding
β β βββ π productSeeder.js # Sample product data
β βββ π services/ # External service integrations
β β βββ π emailService.js # Email notification service
β βββ π .env # Environment variables
β βββ π package.json # Backend dependencies
β βββ π server.js # Express server entry point
β
βββ π README.md # Project documentation
- User Registration: Secure account creation with email validation
- User Login: JWT-based authentication with "Remember Me" option
- Password Reset: Email-based password recovery with secure tokens
- Profile Management: Update user information and preferences
- Session Management: Automatic token refresh and logout
- Product Catalog: Browse extensive plant collection with high-quality images
- Advanced Search: Real-time search with filters (category, price, difficulty)
- Product Details: Comprehensive plant information including care instructions
- Shopping Cart: Add, remove, and modify cart items with persistent storage
- Responsive Design: Optimized for desktop, tablet, and mobile devices
- Email Notifications: Professional HTML email templates
- Password Recovery: Secure email-based password reset system
- Welcome Emails: Automated onboarding communication
- Modern UI/UX: Clean, intuitive interface with Tailwind CSS
- Loading States: Smooth user interactions with loading indicators
- Error Handling: Comprehensive error messages and validation
- Accessibility: WCAG-compliant design principles
- Wishlist Functionality: Save favorite plants for later
- Order Management: Complete order tracking and history
- Payment Gateway: Secure payment processing (Stripe/PayPal)
- Inventory Management: Real-time stock tracking
- Multi-currency Support: International market expansion
- Admin Dashboard: Comprehensive management interface
- Product Management: CRUD operations for plant catalog
- User Management: Customer support and account management
- Analytics Dashboard: Sales and user behavior insights
- Bulk Operations: Efficient inventory and order management
- Product Reviews: Customer feedback and rating system
- Plant Care Tips: Community-driven care guides
- Social Integration: Share favorite plants on social media
- Plant Care Reminders: Personalized care notifications
- Expert Consultation: Connect with plant care specialists
- Mobile App: Native iOS and Android applications
- Push Notifications: Order updates and care reminders
- AR Plant Placement: Visualize plants in your space
- Plant Health Scanner: AI-powered plant disease detection
- Subscription Service: Regular plant delivery service
- Node.js (v18.x or higher)
- MongoDB (v6.x or higher)
- npm or yarn package manager
- Git version control
# Clone the repository
git clone <repository-url>
cd Plantify/backend
# Install dependencies
npm install
# Configure environment variables
cp .env.example .env
# Edit .env with your configuration
# Seed the database
node seeders/productSeeder.js
# Start the development server
npm run dev# Navigate to frontend directory
cd ../frontend
# Install dependencies
npm install
# Start the development server
npm run dev# Backend (.env)
PORT=5000
NODE_ENV=development
MONGODB_URI=mongodb://localhost:27017/plantify
JWT_SECRET=your_jwt_secret_key
JWT_EXPIRE=30d
CLIENT_URL=http://localhost:5174
FRONTEND_URL=http://localhost:5174
EMAIL_SERVICE=gmail
EMAIL_USER=your-email@gmail.com
EMAIL_PASSWORD=your-app-password
EMAIL_FROM=noreply@plantify.comPOST /api/users/register # User registration
POST /api/users/login # User login
POST /api/users/forgot-password # Password reset request
POST /api/users/reset-password # Password reset confirmation
GET /api/users/profile # Get user profile
PUT /api/users/profile # Update user profileGET /api/products # Get all products
GET /api/products/:id # Get single product
POST /api/products # Create product (Admin)
PUT /api/products/:id # Update product (Admin)
DELETE /api/products/:id # Delete product (Admin)GET /api/cart # Get user cart
POST /api/cart/add # Add item to cart
PUT /api/cart/update # Update cart item
DELETE /api/cart/remove # Remove cart item
DELETE /api/cart/clear # Clear entire cart{
name: String,
email: String (unique),
password: String (hashed),
phone: String,
address: Object,
role: String (user/admin),
wishlist: [ObjectId],
isActive: Boolean,
passwordResetToken: String,
passwordResetExpires: Date,
createdAt: Date,
updatedAt: Date
}{
name: String,
description: String,
shortDescription: String,
price: Number,
originalPrice: Number,
category: String,
images: Object,
stock: Number,
sku: String (unique),
rating: Object,
careInstructions: Object,
specifications: Object,
features: [String],
badges: [String],
tags: [String],
isActive: Boolean,
createdAt: Date,
updatedAt: Date
}- Component-Based: Modular React components for reusability
- Context API: Global state management for auth, cart, and search
- Custom Hooks: Reusable logic for API calls and state management
- Responsive Design: Mobile-first approach with Tailwind CSS
- MVC Pattern: Separation of concerns with models, views, and controllers
- Middleware Stack: Authentication, validation, and error handling
- RESTful API: Standard HTTP methods and status codes
- Database ODM: Mongoose for MongoDB object modeling
- JWT Authentication: Secure token-based authentication
- Password Hashing: Bcrypt for secure password storage
- Input Validation: Server-side validation for all inputs
- Rate Limiting: API rate limiting to prevent abuse
- CORS Configuration: Cross-origin resource sharing setup
- Helmet.js: Security headers for Express applications
- Image Optimization: Compressed product images
- Lazy Loading: On-demand component and image loading
- Caching: Browser caching for static assets
- Database Indexing: Optimized queries with proper indexes
- Microservices: Future migration to microservices architecture
- CDN Integration: Content delivery network for global reach
- Database Sharding: Horizontal scaling for large datasets
- Load Balancing: Multiple server instances for high availability
- Caching Layer: Redis for session and data caching
- Modern Technology Stack: Latest web technologies for optimal performance
- User-Centric Design: Intuitive interface designed for plant enthusiasts
- Scalable Architecture: Built to handle growth and expansion
- Security First: Comprehensive security measures implemented
- Mobile Responsive: Seamless experience across all devices
- Product Browsing: Showcase the plant catalog and search functionality
- User Authentication: Demonstrate login, registration, and password reset
- Shopping Cart: Show add to cart and cart management features
- Email Integration: Display professional email templates
- Responsive Design: Show mobile and desktop views
We welcome contributions! Please read our contributing guidelines and submit pull requests for any improvements.
This project is licensed under the MIT License - see the LICENSE file for details.
For questions or support, please contact the development team.
Built with β€οΈ by the Plantify π±