MALABIS is a full-stack web application that revolutionizes wardrobe management through intelligent outfit generation. Upload your clothes, organize them systematically, and discover new outfit combinations that elevate your personal style.
- Smart Wardrobe Management β Upload, categorize, and organize your clothing items with automatic background removal
- Intelligent Outfit Generator β Get smart outfit suggestions based on your wardrobe
- Advanced Item Locking β Lock specific items in outfit generation for personalized combinations
- Favorites System β Mark and organize your favorite clothing items
- Responsive Design β Seamless experience across desktop and mobile devices
- Modern UI/UX β Beautiful, intuitive interface with smooth animations
- Mobile-First Design β Optimized for mobile devices with responsive layouts
- Drag & Drop Upload β Easy file upload with visual feedback
- Smart Categorization β Automatic clothing type detection and organization
- Color Management β Track and filter items by color
- React 18 β Modern React with hooks and functional components
- React Router DOM v6 β Client-side routing with nested routes
- Vite β Lightning-fast build tool and development server
- CSS3 β Custom styling with responsive design and animations
- Node.js + Express β RESTful API server with middleware
- MongoDB + Mongoose β NoSQL database with ODM
- Passport.js β Authentication middleware with local strategy
- Cloudinary β Cloud image storage and transformation
- Multer β File upload handling
- Sharp β Image processing and optimization
- bcrypt β Secure password hashing
- Express Session β Session management with MongoDB store
- Express Validator β Input validation and sanitization
- Vercel β Frontend and backend deployment
- MongoDB Atlas β Cloud database hosting
- Cloudinary β Cloud image hosting and CDN
MALABIS/
βββ client/ # React frontend
β βββ src/
β β βββ components/ # Reusable UI components
β β β βββ Navbar.jsx # Navigation component
β β βββ pages/ # Main application pages
β β β βββ Auth.css # Authentication styles
β β β βββ LoginPage.jsx
β β β βββ SignupPage.jsx
β β β βββ DashboardPage.jsx
β β β βββ ClothesPage.jsx
β β β βββ OutfitsPage.jsx
β β β βββ GeneratorPage.jsx
β β β βββ AccountPage.jsx
β β βββ assets/ # Images and static files
β β βββ api.js # API client configuration
β β βββ App.jsx # Root component with routing
β β βββ LandingPage.jsx # Landing page component
β β βββ main.jsx # Application entry point
β βββ public/ # Static assets
β βββ package.json # Frontend dependencies
β βββ vercel.json # Vercel deployment config
βββ server/ # Express backend
β βββ src/
β β βββ models/ # Database models
β β β βββ user.mjs
β β β βββ clothingItem.mjs
β β β βββ outfit.mjs
β β βββ routes/ # API route handlers
β β β βββ auth.mjs
β β β βββ clothing.mjs
β β β βββ outfits.mjs
β β β βββ generator.mjs
β β βββ strategies/ # Passport authentication
β β β βββ local-strategy.mjs
β β βββ utils/ # Helper functions
β β β βββ cloudinary.mjs
β β β βββ removeBackground.mjs
β β β βββ defaultClothing.mjs
β β β βββ validationSchemas.mjs
β β β βββ helpers.mjs
β β βββ index.mjs # Server entry point
β βββ api/ # Vercel serverless functions
β β βββ handler.mjs # Main API handler
β β βββ index.mjs # Route aggregation
β βββ package.json # Backend dependencies
β βββ vercel.json # Vercel deployment config
βββ README.md
- Node.js (v18+ recommended)
- MongoDB Atlas account or local MongoDB instance
- Cloudinary account for image hosting
- Vercel for deployment (optional)
-
Clone the repository
git clone <repository-url> cd MALABIS
-
Install dependencies
# Frontend dependencies cd client && npm install # Backend dependencies cd ../server && npm install
-
Environment Configuration
Create a
.envfile in the/serverdirectory:# Database MONGODB_URI=your_mongodb_connection_string # Session Management SESSION_SECRET=your_session_secret_key COOKIE_SECRET=your_cookie_secret_key # Cloudinary Configuration CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name CLOUDINARY_API_KEY=your_cloudinary_api_key CLOUDINARY_API_SECRET=your_cloudinary_api_secret # Server Configuration PORT=3000 NODE_ENV=development
-
Start the development servers
# Start backend server cd server npm run dev # Start frontend development server (in new terminal) cd client npm run dev
-
Access the application
- Frontend: http://localhost:5173
- Backend API: http://localhost:3000
/β Landing page with signup/login options/loginβ User authentication/signupβ New user registration
/dashboardβ Main dashboard overview/clothesβ Wardrobe management and item upload/outfitsβ Saved outfit collections/generatorβ Smart outfit generation/accountβ User profile and settings
POST /api/auth/signupβ User registrationPOST /api/auth/loginβ User loginPOST /api/auth/logoutβ User logoutGET /api/auth/statusβ Check authentication status
GET /api/clothingβ Retrieve user's clothing itemsPOST /api/clothingβ Upload new clothing itemDELETE /api/clothing/:idβ Remove clothing itemPUT /api/clothing/:id/favoriteβ Toggle favorite status
GET /api/outfitsβ Get user's saved outfitsPOST /api/outfitsβ Save new outfitDELETE /api/outfits/:idβ Remove saved outfit
POST /api/generatorβ Generate outfit suggestionsGET /api/generator/inventoryβ Get user's clothing inventory
- Connect your GitHub repository to Vercel
- Set build command:
npm run build - Set output directory:
dist - Configure environment variables in Vercel dashboard
- Deploy the
serverdirectory as a separate Vercel project - Configure environment variables in Vercel dashboard
- Set the main function to
api/handler.mjs
MONGODB_URI=your_production_mongodb_uri
SESSION_SECRET=your_production_session_secret
COOKIE_SECRET=your_production_cookie_secret
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
NODE_ENV=production- Automatic Background Removal: Upload clothing items with automatic background removal for clean, professional-looking images
- Smart Categorization: Items are automatically categorized by type (shirts, pants, shoes, etc.)
- Color Tracking: Each item's color is tracked and can be used for outfit generation
- Favorites System: Mark items as favorites for quick access and special consideration in outfit generation
- Item Locking: Lock specific items in place while generating variations for other pieces
- Type Filtering: Generate outfits based on specific clothing types
- Accessory Management: Control the number of accessories in generated outfits
- Real-time Generation: Instant outfit suggestions with smooth animations
- Responsive Design: Optimized for all device sizes with mobile-first approach
- Smooth Animations: Polished UI with smooth transitions and loading states
- Error Handling: Comprehensive error handling with user-friendly messages
Frontend (client/)
npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run lint # Run ESLintBackend (server/)
npm run dev # Start development server with nodemon
npm start # Start production serverMIT
- Fork the repository
- Create a feature branch (
git checkout -b feature) - Commit your changes (
git commit -m 'Add feature') - Push to the branch (
git push origin feature) - Open a Pull Request
- None that I know of
- A fit' of the day system/calendar
- Custom clothing catagories
- Outfit Creator UI goes off screen for very few devices