A smart, AI-powered wardrobe management and outfit recommendation application that helps you organize, create, and discover outfits with intelligence.
FitFinder is a full-stack web application that leverages machine learning to revolutionize how users manage their wardrobes. Upload photos of your clothing items, and our AI automatically tags, categorizes, and helps you create stunning outfit combinations. Get personalized recommendations based on weather, occasion, and your style preferences.
- π€ AI-Powered Auto-Tagging: Automatically categorize and tag clothing items using state-of-the-art computer vision
- π Smart Outfit Builder: Drag-and-drop interface to visualize and create complete outfits
- β¨ Intelligent Recommendations: Get personalized outfit suggestions based on weather and occasion
- π¨ Color Harmony: AI-powered color matching to ensure outfit coordination
- πΎ Outfit Management: Save, organize, and manage your favorite outfit combinations
- π Style Insights: Data-driven insights about your wardrobe and style preferences
- π Calendar Integration: Plan and schedule outfits for upcoming events
- Framework: Next.js 15.5.5 with Turbopack
- Language: TypeScript
- UI Library: Radix UI components
- Styling: Tailwind CSS 4
- Form Management: React Hook Form + Zod validation
- State Management: Zustand
- HTTP Client: Axios
- Notifications: Sonner toast library
- Drag & Drop: @dnd-kit
- Date Handling: date-fns
- Icons: Lucide React
- Image Compression: browser-image-compression
- Framework: Django 5.2.9
- API: Django REST Framework
- Language: Python 3.12+
- Database: SQLite (development), PostgreSQL (production)
- Cloud Storage: Cloudinary
- Authentication: JWT with djangorestframework-simplejwt
- CORS: django-cors-headers
- Computer Vision: Florence-2 for image understanding
- Transformers: Hugging Face Transformers
- Deep Learning: PyTorch 2.9.1
- Vision Models: timm
- Utilities: einops
- Image Processing: Pillow
- Frontend Hosting: Vercel
- Backend Hosting: Railway
- Production Server: Gunicorn
- Static Files: WhiteNoise
{
"@dnd-kit/core": "^6.3.1",
"@hookform/resolvers": "^5.2.2",
"@radix-ui/*": "latest",
"axios": "^1.13.0",
"browser-image-compression": "^2.0.2",
"date-fns": "^4.1.0",
"html2canvas": "^1.4.1",
"lucide-react": "^0.546.0",
"next": "15.5.5",
"react": "19.1.0",
"react-hook-form": "^7.65.0",
"sonner": "^2.0.7",
"tailwindcss": "^4",
"zod": "^4.1.12",
"zustand": "^5.0.8"
}Django>=5.0,<6.0
djangorestframework>=3.15.0
djangorestframework-simplejwt>=5.3.0
django-cors-headers>=4.3.0
torch>=2.3.0
transformers==4.49.0
huggingface-hub>=0.25.0
Pillow>=10.0.0
gunicorn>=21.0.0
psycopg2-binary>=2.9.9
whitenoise>=6.6.0
- Node.js 18+ (for frontend)
- Python 3.12+ (for backend)
- Git
cd frontend
# Install dependencies
npm install
# Create .env.local
cat > .env.local << 'EOF'
NEXT_PUBLIC_API_URL=http://localhost:8001/api
NEXT_PUBLIC_APP_URL=http://localhost:3000
EOF
# Start development server
npm run devThe frontend will be available at http://localhost:3000
cd backend
# Create and activate virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Create .env file
cat > .env << 'EOF'
DEBUG=True
SECRET_KEY=your-secret-key-here
ALLOWED_HOSTS=localhost,127.0.0.1,0.0.0.0
DATABASE_URL=sqlite:///db.sqlite3
CORS_ALLOWED_ORIGINS=http://localhost:3000,http://localhost:8001
EOF
# Run migrations
python manage.py migrate
# Create superuser (optional)
python manage.py createsuperuser
# Start development server
python manage.py runserver 8001The backend API will be available at http://localhost:8001/api
fitfinder/
βββ frontend/ # Next.js frontend application
β βββ src/
β β βββ app/ # Next.js pages and layouts
β β β βββ (auth)/ # Authentication pages (login, register)
β β β βββ wardrobe/ # Wardrobe management
β β β βββ outfit-builder/ # Outfit creation interface
β β β βββ outfits/ # Saved outfits view
β β β βββ recommendations/ # Outfit recommendations
β β β βββ calendar/ # Calendar view
β β βββ components/ # React components
β β β βββ auth/ # Authentication components
β β β βββ outfit-builder/ # Outfit builder components
β β β βββ wardrobe/ # Wardrobe components
β β β βββ ui/ # Reusable UI components
β β β βββ navbar.tsx # Navigation component
β β βββ lib/ # Utility functions
β β β βββ api/ # API client and authentication
β β β βββ utils/ # Helper utilities
β β βββ schemas/ # Zod validation schemas
β β βββ store/ # Zustand state management
β β βββ types/ # TypeScript type definitions
β βββ package.json # Frontend dependencies
β βββ tsconfig.json # TypeScript configuration
β
βββ backend/ # Django REST API
β βββ api/ # Main API app
β β βββ models.py # Database models
β β βββ views.py # API views
β β βββ serializers.py # DRF serializers
β β βββ urls.py # API routes
β β βββ autotagger.py # AI auto-tagging logic
β β βββ recommendation_engine.py # Recommendation logic
β β βββ migrations/ # Database migrations
β βββ backend/ # Django settings
β β βββ settings.py # Django configuration
β β βββ urls.py # URL routing
β β βββ wsgi.py # WSGI configuration
β βββ wardrobe/items/ # Wardrobe item images
β βββ manage.py # Django management script
β βββ requirements.txt # Backend dependencies
β βββ db.sqlite3 # SQLite database (development)
β
βββ qa/ # QA and testing
β βββ tests/ # Test scripts
β βββ test_reports/ # Test reports
β βββ run_all_tests.sh # Test runner
β
βββ DEPLOYMENT_GUIDE.md # Deployment instructions
βββ DEPLOYMENT_CHECKLIST.md # Pre-deployment checklist
βββ README.md # This file
FitFinder uses JWT (JSON Web Tokens) for secure authentication:
- Login: POST
/api/auth/login/with email and password - Register: POST
/api/auth/register/with user details - Token Refresh: POST
/api/auth/token/refresh/ - User Profile: GET
/api/auth/me/
Tokens are stored in browser localStorage and automatically sent with API requests.
The application uses a modern, fashionable color scheme:
- Primary Pink:
#FFAEDA - Primary Purple:
#C8B4FF - Primary Mint:
#99F1B9 - Primary Blue:
#86B4FA
POST /api/auth/register/- Register new userPOST /api/auth/login/- Login userPOST /api/auth/token/refresh/- Refresh JWT tokenGET /api/auth/me/- Get current user profile
GET /api/wardrobe-items/- List user's wardrobe itemsPOST /api/wardrobe-items/- Add new clothing itemGET /api/wardrobe-items/{id}/- Get item detailsPUT /api/wardrobe-items/{id}/- Update itemDELETE /api/wardrobe-items/{id}/- Delete item
GET /api/outfits/- List user's saved outfitsPOST /api/outfits/- Create new outfitGET /api/outfits/{id}/- Get outfit detailsPUT /api/outfits/{id}/- Update outfitDELETE /api/outfits/{id}/- Delete outfit
POST /api/recommendations/- Get outfit recommendationsGET /api/recommendations/suggested/- Get suggested outfits
- Uses Florence-2 computer vision model to automatically detect and tag clothing items
- Categories: tops, bottoms, dresses, outerwear, accessories, footwear, etc.
- Detects colors, patterns, and materials
- Analyzes user's wardrobe and preferences
- Suggests outfits based on:
- Weather conditions
- Occasion/event type
- User style preferences
- Color harmony principles
Run the test suite:
cd qa
bash run_all_tests.shIndividual test categories:
bash tests/test_auth.sh # Authentication tests
bash tests/test_api_endpoints.sh # API endpoint tests
bash tests/test_database.sh # Database tests
bash tests/test_recommendations.sh # Recommendation engine testscd frontend
npm run build
npm startcd backend
gunicorn backend.wsgi --bind 0.0.0.0:8000See DEPLOYMENT_GUIDE.md for detailed deployment instructions.
- Frontend: Deployed on Vercel for optimal Next.js performance
- Backend: Deployed on Railway with PostgreSQL database
- Production URL: Updated in deployment configuration
See DEPLOYMENT_GUIDE.md and DEPLOYMENT_CHECKLIST.md for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is private and proprietary.
- Charlie Stoner - Project Owner
For issues, questions, or suggestions, please open an issue on GitHub or contact the development team.
- Mobile application (React Native)
- Advanced style analytics dashboard
- Social features (share outfits, follow friends)
- Integration with weather APIs
- Size and fit recommendations
- Virtual try-on feature
- Sustainability scoring
Happy styling! πβ¨
Made with β€οΈ by the FitFinder team