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